{"version":3,"sources":["models/CustomerType.ts","models/SessionStorageConsts.ts","models/PageMode.ts","models/OpportunityDealStatusCodes.ts","models/OpportunityDealStatusNames.ts","models/ApplicationConstants.ts","models/ActionType.ts","content/UIControlsText.ts","services/ApiConstants.ts","infrastructure/axios-wrapper/AxiosWrapperBase.ts","services/BaseService.ts","models/DealType.ts","models/UserSubRole.ts","models/MessageType.ts","models/PartnerType.ts","services/NextGenService.ts","models/UserRole.ts","infrastructure/JavaScriptExtensions.ts","models/AsyncProcessStatus.ts","models/LocalStorageConsts.ts","models/FieldMapMode.ts","models/DealStatusLabels.ts","pages/shared/ComponentTypes/SpecialLocationtype.ts","pages/shared/ComponentTypes/RequestorRoleType.ts","pages/shared/ComponentTypes/ChannelDisplayFunctionalities.ts","models/OpportunityDealClosureDecisionType.ts","models/OpportunityDealClosureDecisionName.ts","models/OpportunityDealPortalEditStatusNames.ts","models/AffiliationType.ts","models/ChannelStructure.ts","models/DealGeoCountryType.ts","models/AccountAllType.ts","content/ErrorMessages.ts","models/DashboardViewTypes.ts","models/GridType.ts","models/CaseDecisionLetterType.ts","services/StaticData.ts","models/MessageTypeText.ts","pages/pageconstants/Constants.ts","components/shared/common/util.ts","models/ErrorCode.ts","components/shared/pageheader.tsx","content/images/Background_Surface_Portfolio_Lineup_Login.jpg","content/styles/Page.styles.ts","components/shared/leftMenu.tsx","components/shared/error.tsx","pages/home/auth-route.tsx","pages/home/login.tsx","infrastructure/Guid.ts","pages/home/authentication.tsx","content/images/Microsoft_Full_Color_reverse_logo.png","pages/home/footer.tsx","content/images/HomePage.png","pages/home/home.tsx","ErrorBoundary.tsx","pages/pricingprogram/common/reducer/CaseActionTypes.ts","models/ChannelSubType.ts","pages/pricingprogram/CPStrategic/reducer/InternalPricingReducer.ts","infrastructure/ArrayExtensions.ts","models/PartnerTypeLabel.ts","pages/pricingprogram/PricingProgramForm/PricingProgramFormUtils.ts","pages/pricingprogram/CPStrategic/context/internalpricing-context.tsx","components/shared/grid/SelectionType.ts","components/shared/grid/gridrenderers.tsx","components/shared/grid/dropDownFilterCell.tsx","models/StateCode.ts","models/MenuOption.ts","content/CssClassConstants.ts","pages/pricingprogram/common/content/Page.Styles.ts","components/shared/verticalmenu/menuItems.tsx","hooks/accessiblity-hooks.tsx","components/shared/grid/gridfilter.tsx","components/shared/grid/nextgenkendochildgrid.tsx","components/shared/grid/nextgenkendogrid.tsx","pages/dashboard/viewResellers.tsx","models/ContactRoles.ts","models/UIControlType.ts","pages/shared/ComponentTypes/DetailListEditableGridTypes.tsx","pages/pricingprogram/common/components/pricing-program-selector.tsx","models/AttachmentDisplayMode.ts","pages/shared/ComponentTypes/DetailListEditableGridComponent.tsx","components/shared/tooltip.tsx","components/shared/attachment.tsx","pages/pricingprogram/common/state/StatePropertiesText.ts","pages/pricingprogram/PricingProgramForm/CommittedDealVolume.tsx","pages/pricingprogram/common/components/channel-contacts.tsx","pages/shared/ComponentTypes/CustomViewModeComponent.tsx","pages/shared/ComponentTypes/GuidanceTextInformation.tsx","models/ChannelType.ts","pages/pricingprogram/common/components/CaseDetails.tsx","components/shared/ratings.tsx","pages/pricingprogram/common/reducer/CommonPPReducer.ts","pages/pricingprogram/common/context/common-pp-context.tsx","pages/pricingprogram/PricingProgramForm/CreateForm/SuccessPage.tsx","pages/shared/ComponentTypes/ViewForm.tsx","pages/shared/ComponentTypes/GridDetails.tsx","pages/shared/ComponentTypes/PivotContainer.tsx","pages/shared/ComponentTypes/InnerHTMLContainer.tsx","pages/shared/ComponentTypes/PanelTableContainer.tsx","pages/shared/ComponentTypes/FinalTierFields.tsx","pages/shared/ComponentTypes/PanelFieldContainer.tsx","pages/shared/ComponentTypes/DialogComponent.tsx","models/PageSubMode.ts","components/shared/search/searchbar.tsx","components/shared/searchablecombobox/searchablecombobox.tsx","components/shared/action-menu/case-actions.ts","components/shared/action-menu/action-menu.tsx","pages/shared/ComponentTypes/CustomTileCardComponent.tsx","components/shared/list/unorderlist.tsx","pages/shared/ComponentTypes/CustomTileCardContainer.tsx","pages/shared/Components/DynamicFormRendering.tsx","components/shared/deal-contact.tsx","models/GuidanceText.ts","pages/pricingprogram/CPStrategic/components/internalpricing-deal-overview.tsx","pages/pricingprogram/common/components/EntityLookup.tsx","components/shared/reseller.tsx","pages/pricingprogram/CPStrategic/components/cp-strategic-channel-accounts.tsx","pages/pricingprogram/CPStrategic/content/Page.InternalPricingProgram.Styles.ts","components/shared/grid/dropDownGridCell.tsx","pages/pricingprogram/CPStrategic/components/cp-strategic-channel.tsx","pages/pricingprogram/CPStrategic/components/internalpricing-commands.tsx","components/shared/productDatabyProductview.ts","models/UploadLegalEntity.ts","pages/pricingprogram/CPStrategic/components/internalpricing-product-search.tsx","models/CustomerStatusCodes.ts","components/shared/grid/radioGridCell.tsx","pages/pricingprogram/Customer/createUnmanagedCustomer.tsx","pages/pricingprogram/CPStrategic/components/internalpricing-legal-entities-merge.tsx","pages/pricingprogram/CPStrategic/components/otle-channel.tsx","components/shared/action-menu/actionMenuUtil.ts","models/ProductStructure.ts","pages/pricingprogram/CPStrategic/components/otle-channel-view.tsx","pages/pricingprogram/CPStrategic/components/otle-customer-view.tsx","pages/pricingprogram/CPStrategic/components/internalpricing-product-details.tsx","pages/pricingprogram/common/components/RouteLeavingGuard.tsx","models/RfpType.ts","pages/pricingprogram/CPStrategic/components/internalpricing-case.tsx","components/shared/searchablecombobox/casedropdowncontrol.tsx","components/shared/breadcrumb/breadcrumb.tsx","pages/dashboard/caseManagement.tsx","pages/public/HelpAndSupport.tsx","pages/shared/Components/GenericFormComponent.tsx","pages/pricingprogram/PricingProgramForm/customerDetail.ts","pages/pricingprogram/PricingProgramForm/ViewForm/CustomerDetails.tsx","pages/pricingprogram/PricingProgramForm/ViewForm/ProductDetails.tsx","pages/pricingprogram/PricingProgramForm/ViewForm/DealDetails.tsx","pages/pricingprogram/PricingProgramForm/ViewForm/PricingDiscount.tsx","pages/pricingprogram/PricingProgramForm/ViewForm/Channel.tsx","pages/pricingprogram/PricingProgramForm/ViewForm/ViewFormObject.tsx","pages/shared/ComponentTypes/DefaultLabelRendererText.tsx","pages/pricingprogram/PricingProgramForm/CreateForm/DealDetails.tsx","pages/pricingprogram/PricingProgramForm/CreateForm/Channel.tsx","pages/pricingprogram/PricingProgramForm/CreateForm/ProductSearch.tsx","pages/pricingprogram/PricingProgramForm/CreateForm/CustomerSearch.tsx","pages/pricingprogram/PricingProgramForm/CreateForm/CreateFormObject.tsx","pages/pricingprogram/PricingProgramForm/PricingProgramFormMain.tsx","pages/pricingprogram/PricingProgramForm/CreateForm/CasePartnerDetailForm.tsx","pages/pricingprogram/PricingProgramForm/CasePartnerDetail.tsx","components/shared/customkendogridcellcontants.ts","components/shared/linkcustomkendogridcell.tsx","components/shared/multiSelectDropDown/multiSelectDropDown.tsx","components/shared/skucustomkendogriddetail.tsx","components/shared/grid/gridLocaleMessages.tsx","components/shared/grid/dashboardgrid.tsx","pages/dashboard/bid-grid-non-profit-edu-discount-case.tsx","pages/dashboard/add-to-case.tsx","pages/dashboard/dashboard-search.tsx","pages/dashboard/all-case-view.tsx","pages/dashboard/cp-strategic-deal-report.tsx","pages/dashboard/cp-strategic-case-view.tsx","pages/dashboard/deal-registration-case.tsx","pages/dashboard/productInformation-view.tsx","pages/dashboard/special-pricing-view.tsx","pages/dashboard/localEmpowerment-view.tsx","pages/dashboard/otle-view.tsx","pages/shared/maincomponent.tsx","reportWebVitals.js","index.js"],"names":["CustomerType","PageMode","OpportunityDealStatusCodes","OpportunityDealStatusNames","SessionStorageConsts","ApplicationConstants","microsoftEmail","CustomerSearchSuggesterName","CustomerSearchSelectColumn","TopSearchSuggesstions","IsFuzzy","CustomerSearchCountryGlobalIndex","CustomerSearchCascadeCountryGlobalIndex","CustomerSearchIndex","CRMChildAccountFacetName","AddressFacetName","CityFacetName","PostalCodeFacetName","StateFacetName","CRMIDFacetName","ChildCRMIDFacetName","TPIDFacetName","GPIDFacetName","DunsNumberFacetName","CustomerSearchFacetNames","DealCustomerDomain","ProductSearchSuggesterName","DistinctProductSearchSuggesterName","ProductSearchSelectColumn","ProductSearchCountryGlobalIndex","ProductSearchIndex","ProductSearchProductType","DistinctProductSearchIndex","ProductSearchApplicableDeals","ProductSearchProductTypeId","ProductSearchGlobalFilter","SpecialPricingApplicableDeal","DealRegistrationApplicableDeal","CPStrategicApplicableDeal","OTLEApplicableDeal","ProductFamilyCodeFacetName","ProductFamilyNameFacetName","BusinessUnitFacetName","SkuNameFacetName","SkuPartNumberFacetName","CountryFacetName","InternalPricingProgramProductSearchFacetNames","InternalPricingProgramDistinctProductSearchFacetNames","ProductSearchFacetNames","DistinctProductSearchFacetNames","BusinessUnitProductSearchSuggesterName","BusinessUnitProductSearchIndex","BusinessUnitSearchSelectColumn","ProductSearchChannelType","DirectChannelType","IndirectChannelType","InternalDealVisibility","ExternalDealVisibility","UnitsCommitted","Quantity","OTLESelectedProductsGridName","CognitiveSearchType","CognitiveSearchMode","CognitiveSearchModeAny","CognitiveSearchMaxResults","LegalEntitySelectionUnitstransact","LegalEntitySelectionIsPrimary","LegalEntityUploadDealVolumn","NumericEditorType","QueryKey","CustomerSearchServiceEnv","FacetCount","DefaultUserRole","LoggedinUserRole","DefaultDashBoardCaseView","CPstrategicPageName","OpportunityNumberParamName","OpportunityDealNumberParamName","IsEUEFTA","DebugParam","DecisionTypeName","BusinessUnitName","PfamName","PfamCode","ProductFamilyName","DiscountValueApiField","DiscountTitle","CoreDiscountTitle","BoosterDiscountTitle","TotalDiscountTitle","DiscountAmountTitle","Country","MinLengthForResellerName","CaseCopyCutOffInMonths","AllVertical","EditPendingReview","DeniedStatus","DealPeriodDate","ApprovedStatus","ExpiredStatus","LegalEntityType","ADRDMPResellerType","PartnerType","CustomerSearchTopThreshold","MiddleEastRegion","SaudiArabia","MiddleEastCountry","Egypt","UAE","SouthAfrica","AndOperator","OrOperator","Eu","Eq","Ne","PricingProgramCustomerSearchIndex","PricingProgramCustomerCustomerSuggesterName","CustomerSearchFilterFacetNames","LegalEntityName","SpecialPricing","DealRegistration","OTLE","CPStrategic","CPStrategicCases","AllCases","productInformationGrid","SPLocalEmpowermentCases","OTLECases","DRThresholdQuantity","SPThresholdPercentage","skuName","skuNumber","EnLocaleForGrid","EnLocaleForGridForMoreRecord","Cases","ProductInformationforSpecialPricing","SPLocalEmpowermentTitle","Chatbot","ProductViewSPRoute","SpecialPricingRoute","DealRegistrationRoute","CPStrategicRoute","AllCasesRoute","SPLocalEmpowerment","OTLERoute","PricingProgramAllDistinctCustomerSearchIndex","PricingProgramAllDistinctCustomerSearchIndexApiUrl","PricingProgramCustomerSearchIndexApiUrl","ProductSearchIndexApi_Url","DistinctProductSearchIndexApiUrl","CustomerSearchIndexApiUrl","BuProductSearchApiUrl","StatusCodeColumnName","ClosureDecisionColumnName","recordsToFetch","otlePageName","AccessTokenRefreshTimeInMinutes","ActionType","UIControlsText","CancelText","OkText","None","ConfirmTitle","ConfirmCancelMessage","SaveDraftText","ContinueText","DealNameText","DealNamePlaceHolderText","DealOverviewText","DealOverviewPlaceHolderText","DealVolumePlaceHolderText","DealProductGroupText","DealProductGroupPlaceHolderText","DealGeoCoverageText","DealGeoCoveragePlaceHolderText","DealCountryText","DealCountryColumn","DealCountryPlaceHolderText","DealAffiliationTypeText","DealAffiliationTypePlaceHolderText","DealAffiliationTypeOtherText","DealAffiliationTypeOtherPlaceHolderText","DealVerticalText","DealVerticalPlaceHolderText","DealExpirationDateText","DealExpirationDatePlaceHolderText","DealExpirationDateJustificationText","DealExpirationDateJustificationPlaceHolderText","DealTransactedVolumeText","DealCasesStartDateText","DealCasesEndDateText","LegalEntitiesText","ChannelText","DealDetailsText","CaseDetailsText","SubmitText","NextText","CloseText","CaseIdText","StatusText","RevertCheckBoxLabel","ExpireCheckBoxLabel","DeleteCheckBoxLabel","ViewCaseText","EditCaseText","RevertCaseText","DeleteCaseText","ExpireCaseText","ExpireSubmit","ExpireCancel","CPCaseDecisionLetter","CPStrategicLetters","ChannelOverviewText","ChannelOverviewPlaceHolderText","ChannelJustificationText","ChannelJustificationPlaceHolderText","AddAddtext","AdrAddtext","AddResellerText","AddPrimaryResellerText","Reseller","Distributor","AddDistributorText","AddCountryText","AddLookupText","AddCountryPlaceholderText","ResellerCountryText","ResellerCountryPlaceholderText","ResellerNameText","ResellerNamePlaceholderText","ResellerLookupText","AddNameText","AddNamePlaceHolderText","ChannelStructureText","ChannelStructurePlaceholderText","SkipChannelReasonText","SkipChannelReasonPlaceHolderText","PartnerTypeText","PartnerTypePlaceHolderText","DealVTeamText","MicrosoftContactText","DealVTeamMemberAddtext","DealContactAliasText","DealContactAliasPlaceholderText","DealContactName","DealContactCoOwner","CoOwnerText","DealContactRoleText","DealOtherRoleText","DealContactRolePlaceholderText","DistributorCountryPlaceholderText","ExceptionRequest","ExceptionRequestPlaceHolderText","AdditionalInformationPlaceHolderText","Attachments","ProofOfPreference","AttachmentBadgeTitle","NoLegalEntitySelected","NoProductSelected","NoPrimaryEntitySelected","SearchFilter","LegalEntitiesSearchResult","AddSelectedLegalEntites","TPID","CRMAccountID","CustomerSegment","SelectedLegalEntities","DealVolume","DeleteColumn","Attachment","AdditionalInformation","SearchTabText","UploadTabText","IsPrimary","CustomerVertical","UploadRequiredErrorMessage","UploadCountryGEOErrorMessage","Search","DistributorText","ResellerText","LegalEntityCountry","MsStoreText","AllAddsText","AllAddsEuText","AllResellersText","AllResellersEuText","DefaultLegalOption","UploadSegmentErrorMessage","LegalEntityAndProductsSelectionErrorMessage","SubmitSync","RequiredFieldMissing","SuccessText","SaveDraftSuccessMessage","SubmitSuccessMessage","NavigateDashboardTitle","CancelAndNavigateDashboardTitle","CopyCASText","CopyCASTitle","SaveOppDraftButtonTitle","SubmitOppButtonTitle","SubmitSyncOppButtonTitle","UploadFileSizeErrorMessage","CRMChildAccountFacetText","AddressFacetText","CityFacetText","PostalCodeFacetText","StateProvinceFacetText","CRMIDFacetText","TPIDFacetText","GPIDFacetText","DunsNumberFacetText","ProductFamilyCodeFacetText","ProductFamilyNameFacetText","BusinessUnitFacetText","SkuNameFacetText","SkuPartNumberFacetText","CountryFacetText","MpnIdText","SavedSuccessfully","ErrorOccured","ErrorValidationMessage","SubmitCaseButtonTitle","CancelCaseButtonTitle","RevertOption","ExpireOption","DeleteOption","SearchButton","ResellerRegistration","ProductSearch","ProductSelection","ChannelContacts","PartnerContacts","ChannelContactsPlaceHolderText","PartnerNameText","PartnerEmailContactsText","CustomerSearch","CustomerSearchResults","ErrorText","InvalidCaseMessage","AddFilterPlaceHolderText","ResellerFilterPlaceHolderText","LegalEntitiesSearchElements","PrimaryLegalEntity","PrimaryLegalEntityTPID","PrimaryLegalEntityCRMAccountID","AdditionalLegalEntities","ProductSearchElements","sortAscendingAriaLabel","sortDescendingAriaLabel","AddCaseAriaLabel","DownloadAriaLabel","FilterAriaLabel","NoMatchFoundText","FileSizeError","FileSizeEmptyError","AllowedFileExtensionsForCPStrategic","AllowedFileExtensionsForOTLE","AllowedFileExtensionsForEndCustomerProof","LoadingReseller","ProcessingText","CustomerSearchPlaceHolderText","ProductSearchPlaceHolderText","DealDetailsDealVolumeElements","ADDRegistration","MoreActionsText","Welcome","MDPP","SigninMessage","WorkAccountDescription","Signin","SigninExample","SigninGuidance","ClickHere","ContactUs","PrivacyAndCookies","DataPrivacyLink","TermsOfUse","TradeMark","CopyRightMicrosoft","DealCommitted","PartnerAddDisclaimerText","NoCountrySelectedPlaceHolderText","SomeThingWrong","BackToLogin","OrganizationInfoMissing","NotFoundApiError","AddNew","Clear","ClearAll","ViewReseller","DownloadExcel","ExportToExcel","Downloading","HomePageImage","ProductSearchID","CustomerSearchID","NoResellerInfo","NoDistributorInfo","NoChannelInfo","ClosureDecisionCommentsText","LegalEntityOptions","UploadLegalOption","QuickView","SelectedPFAM","PageHeaderLabel","PageHeaderLabelTestEnv","TestEnvType","ExpandedView","CompactView","Owner","NotCaseOwnerDialogTitle","NotCaseOwnerDialogMessage","LoadingCases","SubmittingAddCaseToDashboardRequest","ExtensionProgress","RenewProgress","CopyProgress","SearchDuplicateDeals","SelectADDAccountText","SelectADDAccountAndCountryText","DropdownText","SelectADDAccountName","ADD","SelectReseller","LoadingFilterData","SelectADDAccountPlaceholderTextOnDashboard","SelectResellerCountry","SelectADDAccountPlaceholderText","SelectADDAccountAndCountryPlaceholderText","UploadLegalEntityIncorrectTemplate","UploadLegalEntityNoData","DealVTeamInfo","ChannelContactEmailText","ChannelContactEmailPlaceholderText","ResellerNameHeading","UnauthorizedMessage","DataLoading","HrefAttribute","DownloadAttribute","RadioButton","DeleteAttachmentWarning","AttachmentDeleteMessage","PrimaryLegalCountry","ExpandAll","CollapseAll","MicrosoftContacts","DealInfo","PaginationEllipsisLabel","IDColumnName","DealStackability","ShowSearchFilter","HideSearchFilter","BuildNumberText","HelpAndSupport","ToolSupportContent","RatingLabelText","RatingCommentLabelText","RatingCommentPlaceHolderText","EmailCCNotificationRecipients","EmailCCNotificationRecipientsPlaceHolderText","DashboardView","PagerDropdownAriaLabel","WebpageNotAvailable","MDPPHelpAndSupport","HelpAndSupportResourceGuidance","CaseSpecificContacts","SpecialPricingContactNorthAmerica","SpecialPricingContactEUMiddleEastAfrica","SpecialPricingContactAsia","CustomPricingStrategic","CPContactGuidance","CPContact","ClaimsSupportGuidance","ClaimsContact","ContactByRegion","ProductQuantityWarningText","OTLEContactGuidance","OpportunityDetailsText","EndCustomerText","CustomerCountryText","CustomerNameText","CustomerDomainText","CustomerDomainPlaceholderText","NewCustomerText","ResellerTypeText","ContactEmailText","DistributorCountryText","DistributorNameText","DistributorContactEmailText","EpcText","ExceptionProgramCodeText","SelectDealType","LoyaltyPricingText","DealRegistrationText","SpecialPricingText","SameAsLegalCustomerRecord","DealsHeadingText","DeviceShipToAddressText","DeviceShipToAddressCardText","PreSalesActivitiesText","PreSalesActivitiesPlaceholderText","AdditionalInformationsPlaceholderText","CityText","StateProvinceText","DeviceShipToStateProvinceText","PostalCodeText","ProductsText","PricingAndDiscountsText","CommittedDealVolumeText","PartcularsText","TotalCommittedVolumeText","YesText","NoText","AttachmentsText","JustificationText","MonthsText","CustomPricingVolumewithinText","QuantityText","DRText","DealRegistrationVolumewithinText","ProductSelectText","RfpRfqPublicTenderText","DealContactsText","EmailDomain","EmailDomainPlaceHolder","EmailDomainPlaceHoldertText","WebPageUrl","WebPageUrlPlaceHolder","WebPageUrlPlaceHolderText","CustomerCountry","Industry","IndustryPlaceholder","CustomerNameEnglish","CustomerNameEnglishPlaceHolder","CustomerNameEnglishPlaceHolderText","CustomerNameLocalLanguage","CustomerNameLocalLanguagePlaceHolder","CustomerNameLocalLanguagePlaceHolderText","SameAsCustomerNameEnglish","AddressLine1","AddressLine1PlaceHolder","AddressLine1PlaceHolderText","City","CityPlaceHolder","CityPlaceHolderText","PostalCode","DeviceShipToPostalCodeText","PostalCodePlaceHolder","PostalCodeMask","State","StatePlaceHolder","StatePlaceHolderText","Vertical","VerticalPlaceholder","VerticalPlaceholderText","VerticalCategory","VerticalCategoryPlaceholder","VerticalCategoryPlaceholderText","DealNamePlaceHolderTextExample","CustomerDomainPlaceholderTextExample","DeviceShipToAddressPlaceholderTextExample","DeviceShipToCityPlaceholderTextExample","DeviceShipToStatePlaceholderTextExample","DeviceShipTopostalPlaceholderTextExample","EmailCCRecipientsPlaceholderTextExample","DealOverviewPlaceholderTextExample","RfpRfqPublicTenderJustificationText","RfpRfqPublicTenderJustificationPlaceholderText","RfpRfqPublicTenderAttachmentText","DealVolumeBasedOnDealTypes","AllowedFileExtensionsForDRAndSP","AttachmentFileNameText","AttachmentFileSizeText","CasesDropdownPlaceHolderText","BreadcrumbAriaLabelText","BreadcrumbOverflowAriaLabelText","GuidanceTextForMSStore","MSStoreChannel","DSSText","DigitalStore","Hub","DigitalStoreName","MSStoreSellerName","MSStoreSellerEmail","MSStoreSellerNamePlaceholderText","MSStoreSellerEmailPlaceholderText","MsStoreLabeltext","AdditionalResellersInformation","ResellerInformation","GuidanceTextForReseller","GuidanceTextForMultipleReseller","AdditionalResellerChoiceQuestion","AddAdditionalResellers","FinalTierResellerQuestion","FinalTierResellerInformation","AddFinalTierResellers","DistributorInformation","GuidanceTextForDistributor","AddDistributors","DistributorNames","DistributorOwner","AssociatedReseller","ContactEmailIds","ResellerNames","ContactName","ZipPostalCode","CaseDecisionJustification","DealInfoCaseStartDateText","DealInfoCaseExpireDateText","DealInfoUnitsTransactedText","ResellerNameErrorMessage","DistributorNameErrorMessage","NoDistributorFoundInEufta","EditText","ExtendText","ExpireText","RenewText","CopyText","DeleteText","DRSPCaseDecisionLetterFileName","CaseDecisionLetterFileName","Back","CaseName","MPNOrgID","MPNLocationID","ProductGroup","PartnerRole","NewCaseSubmissionText","HomeText","NewCaseKeyText","ViewCaseKeyText","DashboardText","SelectPricingProgramText","CustomerText","DealInformationText","BackButtonText","ChooseColumnsLabel","Resetbtn","ColumnDivider","ColumnsHeader","DealInfoEndDateText","SuccessCaseSubmissionText","SuccessDraftCaseSubmissionText","ThankyouSubmissionText","CreateNewCaseText","ResellerNamePlaceHolder","ContactNamePlaceHolder","ContactEmailPlaceHolder","AddressPlaceHolder","CityTextFieldPlaceHolder","StateOrProvincePlaceHolder","ZipOrPostalCodePlaceHolder","CancelDialogText","SaveAndAddNextButton","AddAdditionResellersText","AddFinalTier","FinalTierReseller","AdditionalReseller","CustomerSearchGuidance","CustomerSearchGuidanceOTLE","CustomerSearchResultsGuidance","PartnerInformation","SubmitNewCustomer","MPNLocationIdCountry","MPNLocationIdCountryPlaceHolder","VerifyDetailsHeader","TextSizeXLarge","POIIconName","ProductVariantIConName","ContactIconName","ContactInfoIconName","AccountManagementIcon","DateCalendarIcon","NoteReplyIcon","AttachIcon","CaseSubmissionText","NoADDAsscociatedWithADRText","RevertInProgress","RevertError","RevertCaseMessage","ConfirmSelectedDuplicateCustomer","Segments","DeleteVTeamText","DeleteChannelAccount","CaseActionsDialog","CancelButton","ConfirmButton","Extend","ActionName","ExpirationDate","ReasonForExtension","TotalUnitsTransacted","ExpectedUnitTransactions","BackButton","ExtensionSuccessMessage","ExtensionFailureMessage","ExtensionReviewMessage","DealRegDescription","SpecialPricingDescription","WarningMessage","MaxExtensionLimitMessage","MaxExtensionMessage","Renew","RenewalMessage","Expire","ExpireMessage","Delete","DeleteMessage","Revert","RevertMessage","Copy","CopyMessage","DownloadCaseLetters","ConfirmFormOutTitle","ConfirmFormOutMessage","CreateCustomerSubmitBtnText","PricingProgramBtnText","CreatNewRecordText","AddNewCustomerText","EditCustomerText","PanelCustomerWidth55Percent","HasWebPageURLLabel","Max500CharErrorMessage","Max200CharErrorMessage","Max100CharErrorMessage","Text500","Text200","Text100","BoosterDiscountColumnName","TotalDiscountColumnName","InactiveCustomer","SelectedCustomer","CustomerDetails","NewCustomerDetails","SubmitNewCustomerRecord","SmallPanel","Filter","LoadingMCL","InactiveProducts","Save","Requester","Default","CaseCadeProductTitle","InactiveProductsSubTitle","CustomerSearchText","InvalidPfamError","MultipleInvalidPfamError","BGShowDiscountsText","BGProductGroup","BGProductGroupPlaceholder","BGCountryLabel","BGCountryLabelPlaceholder","BGDatePickerLabel","BGSearchPlaceholder","DatePlaceHolder","BGComboBoxID","ExportSkuTOExcel","NoRecordsFound","ProductinformationFooterText","ProductFamilyNameExcelColumnTitle","BusinessUnitExcelColumnTitle","SkuNameExcelColumnTitle","skuNumberExcelColumnTitle","DealDetailsIcon","CaseDetailsIcon","AddressIcon","PublicTenderPolicyIcon","PreSalesIcon","CustomerDetailsIcon","DistributorIcon","ResellersIcon","MSStoreIcon","PricingAndDiscountsIcon","ProductSearchIcon","CommittedDealVolumeIcon","GeoCoverageIcon","PartnerDetailsForCaseText","NoRecordsAvailableText","DuplicateLEMessage","MDPPTransitionBannerNotificationText","OTLENewCaseSubmission","CPNewCaseSubmission","UIConfigIdentifierConstants","ApiConstants","AxiosWrapperBase","axios","_classCallCheck","this","axiosStatic","_createClass","key","value","config","_this","headerConfig","refreshTokenIfNeeded","then","Object","assign","headers","_objectSpread","CorrelationId","sessionStorage","getItem","UserEmail","process","concat","onRequest","response","onResponse","catch","error","console","url","callWithMergedConfig","data","callWithMergedConfigWithData","result","pcApiTimeout","Number","Promise","resolve","reject","expiresOn","Date","getTime","fetchJsonp","timeout","json","tokenResponse","isNullOrEmpty","Error","setItem","ex","clear","window","open","method","mergedConfig","sendRequest","BaseService","apiBaseUrl","axiosWrapper","DealType","UserSubRole","MessageType","UserRole","NextGenService","_getAllCountries","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","abrupt","get","stop","apply","arguments","_getIndustries","_callee2","_context2","_getProductTypes","_callee3","_context3","_getDealQuantityThresholds","_callee4","_context4","_getDealDurationConfig","_callee5","_context5","_extendOpportunityDeal","_callee6","extensionRequest","_context6","post","_x","_getDealExtensionConfig","_callee7","opportunityDealId","params","_context7","URLSearchParams","append","_x2","_setOpportunityDealStatus","_callee8","stateCode","statusCode","fullName","email","_context8","_x3","_x4","_x5","_x6","_x7","_revertOpportunityDealStatus","_callee9","revertRequest","_context9","_x8","_getAllVerticals","_callee10","_context10","_getAllDistributors","_callee11","_context11","toString","_getAllResellers","_callee12","_context12","_getAllDealTypes","_callee13","_context13","_getAllResourceStrings","_callee14","_context14","OpportunityValidationError","FieldGuidanceText","FieldPlaceHolderText","FieldLabelText","PopupMessageText","_getAllActiveResellersByProductCountriesAndType","_callee15","productType","countryIds","_context15","forEach","countryId","_x9","_x10","_getAllActiveResellersByProductAndCountry","_callee16","_context16","_x11","_x12","_getAddsAccountsByDmpAccountIds","_callee17","accounIds","_context17","accountId","_x13","_x14","_getMicrosoftContactByAlias","_callee18","_context18","_x15","_getContactRoleOptions","_callee19","_context19","_getOpportunity","_callee20","opportunityNumber","userRoleDetails","pageMode","countries","accounts","userRole","_context20","_","uniq","map","userRoleDetail","join","getDistinctUserRole","_x16","_x17","_x18","_getOpportunityCommon","_callee21","selectedDealCaseNumber","_context21","isEmpty","_x19","_x20","_x21","_saveDraftOpportunity","_callee22","opportunity","_context22","_x22","_submitOpportunity","_callee23","_context23","_x23","_submitOpportunityAsync","_callee24","_context24","_x24","_getCustomerSearchResults","_callee25","filterString","selectedSearchValue","skipValue","allFacetNames","top","_context25","_x25","_x26","_x27","_x28","_x29","_getPricingProgramAllDistinctCustomerSearchResults","_callee26","searchMode","_context26","_x30","_x31","_x32","_x33","_getUserDetails","_callee27","userDetail","_context27","_x34","_getUserAccountDetails","_callee28","userEmail","_context28","_x35","_getChatbotUserRole","_callee29","_context29","_x36","_getCPStrategicLettersByOpportunityDealId","_callee30","partnerRole","_context30","_x37","_x38","_getDashboardData","_callee31","dashboardDataRequest","_context31","_x39","_validateCaseAndReseller","_callee32","validateCaseAndResellerRequest","_context32","_x40","_AddOpportunityAccountToCase","_callee33","opportunityId","addOpportunityAccountToCaseRequest","_context33","_x41","_x42","_validateDealCustomers","_callee34","_context34","_x43","_getOpportunityDealDiscountPeriodAndSkuMSRP","_callee35","dealType","_context35","toLowerCase","View","IsInternalPricingProgram","Array","from","Set","filter","x","isLoggedInUserOrg","_x44","_x45","_x46","_x47","_getBusinessVertical","_callee36","customerVertical","_context36","_x48","_getCaseLetters","_callee37","pricingProgram","isSKUsRequired","userSubRole","_args37","_context37","length","undefined","getUserRole","split","includes","MSStoreUser","_x49","_x50","_x51","_x52","_createUnmanagedCustomer2","_callee38","createUnmanagedCustomer","_context38","_x53","_updateUnmanagedCustomer2","_callee39","updateUnmanagedCustomer","_context39","_x54","_searchDuplicateDeal","_callee40","pricingProgramDuplicateDeal","_context40","_x55","_getPricingProgramCustomerSearchResults","_callee41","_context41","_x56","_x57","_x58","_x59","_x60","_x61","_getPricingProgramDashboardData","_callee42","_context42","_x62","_copyOpportunity","_callee43","copyRequest","_context43","_x63","_renewOpportunity","_callee44","renewRequest","_context44","dealTypeName","getLoggedinUserRoleDetails","_x64","_getBidGridDashboardData","_callee45","_context45","_x65","_getProductinformationDashboardData","_callee46","_context46","_x66","_getDocumentFromBlob","_callee47","blobName","_context47","_x67","_getProductSearchResults","_callee48","_context48","_x68","_x69","_x70","_x71","_x72","_x73","_saveUserVoice","_callee49","userVoice","_context49","_x74","nextGenService","AsyncProcessStatus","JavaScriptExtensions","object","str","format","ndx","replace","RegExp","oldStr","newStr","isEmptyOrNullOrUndefined","LocalStorageConsts","FieldMapMode","SpecialLocationtype","RequestorsRoleType","ChannelDisplayFunctionalities","OpportunityDealClosureDecisionType","OpportunityDealClosureDecisionName","OpportunityDealPortalEditStatusNames","AffiliationType","ChannelStructure","DealGeoCountryType","AccountAllType","DealStatusLabel","Map","Draft","Approved","Denied","Unassigned","DecisionPending","Expired","DealPricingApprovedPendingChannelStatus","DealPricingApprovedPendingChannel","ForcedExpire","InProgress","NeedMoreInfo","Incomplete","DraftRenew","PendingSecondaryReview","ErrorMessages","WorldWide","China","Japan","ADR","DMP","MSStore","GridType","CaseDecisionLetterType","DashboardViewTypes","MessageTypeText","CaseDecisionLetterTypeOptions","WithoutSKU","text","WithSKU","SingleDealCoverageOption","SingleCountryDeal","DealGeoCoverageOptions","MultiNationalDeal","AffiliationTypeOptions","AffiliateCompanies","ConsortiumBuying","FrameworkAgreement","Others","ChannelStructureOptions","Customer","Skip","AccountTypeOptions","MsStore","partnerTypeValues","All","AllEuefta","_partnerTypeValues","_defineProperty","dropDownYesOrNoData","DashboardViewTypesValues","title","DashboardViewTypesValuesForMSSeller","DiscountViewTypesValues","_DashboardGidNames","isSelected","DRAndSPStatusCodeFilterValues","StatusCodeFilterValues","gridName","statusValues","AllCaseView","OneTimeLocalEmpowerment","PageConstants","AddCountry","AddName","AddDistributor","AddReseller","ResellerType","ResellerCountry","ResellerName","SaveAsDraft","Cancel","Label_Overview","Label_ChannelStructure","Label_MsStoreRequired","ListOfDistributors","ListOfReseller","DealName","DealOverview","DealGeoCoverage","DealCountry","AffiliationTypeOthers","Continue","Address","WebUrl","BusinessUnit","PFAMCode","PFAMName","Segment","DealVertical","RequestedExpirationDate","RequestedExpirationDateJustification","AddSelectedProducts","AddVTeamMember","Name","Alias","Role","Submit","PFAM","CustomerSegmentContainsSMB","CPStrategicDealtype","OTLEDealtype","CaseId","Status","PricingProgram","EndCustomerName","DefaultProductType","ResellerNameInputPlaceholderText","CaseIdInputPlaceholderText","AddCasToDashboard","Expanded","Refresh","PropCPStrategictype","sessionResourceData","getEntityDataFromSession","getTextFieldErrorMessage","getRuleValidationMessage","getEmailFieldErrorMessage","some","isValidEmail","getPostalCodeTextFieldErrorMessage","isValidPostalCode","readGridConfig","colVisible","colName","GridConfig","item","_item$actionTypes","_item$actionTypes2","_item$actionTypes3","_item$actionTypes4","_item$actionTypes5","_item$actionTypes6","_item$actionTypes7","_item$actionTypes8","_item$actionTypes9","_item$actionTypes10","_item$actionTypes11","_item$actionTypes12","_item$actionTypes13","_item$actionTypes14","_item$additionalColum","kendoGridProps","gridDisplayName","selectable","resizable","pageable","dragable","sortable","filterable","groupable","noOfColumns","noOfRecords","initialSortField","dataItemKey","selectedField","selectionType","editField","className","expandField","editMode","selectAllRows","customDetailComponent","pageSizes","actionTypes","showAddNewRowGridAction","showRowEditGridAction","showRowDeleteGridAction","showRowDownloadGridAction","showSelectAllCheckboxGridAction","showGridContextMenuAction","showClearAllGridAction","showDownloadExcelGridAction","showExpandCollapseGridAction","showActionMenuBar","showRadioSelectionAction","showMultiSelectDropDownGridAction","showAddNewPanelGridAction","showManufactureConfirmationLetter","additionalColumns","column","apiField","columnTitle","showHeaderCell","allowFilter","width","isVisible","cssClass","excelColumnTitle","displayOrder","allowCaseView","allowCaseCreate","allowCaseDownload","allowCaseEdit","allowCaseRevert","allowCaseDelete","allowCaseExpire","allowCaseLetters","allowCaseDecisionLetter","defaultMainGridSelectionstate","defaultDetailGridSelectionstate","allowCaseCopy","allowCaseExtend","allowCaseRenew","excelData","excelColumns","customGridMessage","dealName","caseNumber","customerCountry","customerName","filterValue","isRefresh","isFilterAppliedOrRemoved","columns","allowColumnView","isEditable","editorType","editorFormat","allowSorting","allowGroupable","showFooter","footerTitle","filterType","categoryFilterCell","mandatoryField","isCustomCell","type","isDefaultSelected","isDisabled","locked","isDynamic","isDefaultFilterTobeApplied","headerClassName","groupByColumn","masterData","detailGrid","isServerSideGrid","noRecordsCustomMessage","addNewButtonText","getSelectedCountry","dealCountries","countriesDropdownValues","JSON","parse","pt","push","countryName","getsavedContext","savedState","savedOpportunityInSession","localStorage","readPageConfig","pageName","internalpricingfieldrolemap","pmode","_pmode$roles","fieldsToReadOnly","modeType","roles","role","fieldsToHide","fieldsToEdit","roleName","getFieldConfig","dealStatus","fieldName","mode","closureDecision","disabled","pageConfig","_config$find","commonfieldmap","pageModes","modes","_mode$dealType","dt","disabledFields","hiddenFields","find","readCommonConfig","fieldConfig","s","isNullOrUndfinedOrEmpty","_fieldConfig","_fieldConfig2","_fieldConfig3","_fieldConfig4","t","name","r","getUserMainRole","c","Disable","f","_f$disabledFields","d","Hidden","_fieldConfig5","_f$hiddenFields","getFieldConfigByState","state","selectedDeal","getSelectedDeal","_state$opportunityDea","Create","opportunityDeals","selectedOptyDealCaseNumber","isFieldDisabled","caseStatus","isMultiNational","asyncProcessStatus","_dealType$trim$replac","dealTypePageName","trim","_internalPricingConfi","currentUserRoles","internalPricingConfig","getRouteConfig","_x$menuHref","_x$routeName","menuHref","indexOf","routeName","allowMenuItemUserRoles","Edit","_getsavedContext$oppo","_readPageConfig","loginRole","getOwnerInfo","m","i","_item$roles$i$fieldsT","getURLParamValue","paramName","search","location","isEditmode","isSavedItem","userSession","getUserSession","isFieldVisible","_savedOpportunity$opp2","_savedOpportunity$opp","savedOpportunity","_dealTypePageName$tri","_dealTypePageName$tri2","_readPageConfig2","isDefined","_role$fieldsToHide","_role$fieldsToHide2","getDealClosureDecisionNameByCode","ApprovedPendingChannel","InsufficientInformation","RequireAdditionalInformation","getStatusNameByCode","Cancelled","getUserDetails","userDetails","RouteConfig","allowRoutingUserRoles","isMenuItem","menuName","menuKey","menuIcon","isMenuHidden","menuTarget","isLoadNewTab","loggedInUserInfo","prototype","call","roleArray","_toConsumableArray","inputString","CryptoJS","decrypt","REACT_APP_ENCRYPT_SECRET_KEY","Utf8","e","decryptString","stringify","sortArrayData","items","dataType","propertyName","sort","a","b","isEditableAccountById","id","_getsavedContext$oppo2","_getsavedContext$oppo3","opportunityAccounts","acc","isEditableAccount","accountItem","partnerType","_getsavedContext$oppo4","_items2","_items","_items$0$accounts","o","findIndex","isSavedAccount","savedContext","submitterInfo","submitterDetails","dealContactInfo","dealContacts","loggedUserInfo","_c$email","isCoOwner","getAction","account","savedAction","_getsavedContext$oppo5","action","_items$0$accounts2","idx","savedAccountAction","Add","getPartnerAction","dmpAccountID","_getsavedContext$oppo7","dmpAccount","_r$accounts2","partnerAccounts","_dmpAccount$partnerAc2","savedPartnerAccount","isMSStoreDisable","isDisable","isMsStore","_savedContext$opportu","getParentAccountAction","_getsavedContext$oppo8","_items$","_items$2","_items$2$accounts","_items$2$accounts$","userSubRoles","userRoles","ADDReseller","setSessionData","_setSessionData","_yield$Promise$allSet","_yield$Promise$allSet2","productTypes","distributors","verticals","dealTypes","dealDurationConfig","dealVolumeConfig","resourceStrings","filteredVerticals","allSettled","getProductTypes","getAllCountries","getAllDistributors","getAllVerticals","getAllDealTypes","getDealDurationConfig","getDealQuantityThresholds","getAllResourceStrings","sent","_slicedToArray","status","code","intializeSessionConstants","_intializeSessionConstants","getRegionFromCountry","countriesInSession","_selectedCountry$regi","countryList","region","country","dealDurationConfigs","regionName","commonConfigs","_config$dealTypeName","countryConfig","_config$countryName","regionConfig","_config$regionName","_regionName","defaultConfig","getDealVolumes","businessVertical","dealVolumesConfigs","verticalVolumeConfigs","_config$businessVerti","_config$opportunityDe","_config$productGroupT","businessVerticalName","opportunityDealType","productGroupType","_config$businessVerti2","_config$opportunityDe2","_config$productGroupT2","_config$countryName2","_config$regionName2","_regionName2","_config$countryName3","_config$regionName3","_regionName3","getCustomerIndustries","_getCustomerIndustries","industries","industryInSession","getIndustries","isRoleBasedFilterRequired","test","getChannelContactAction","_getsavedContext$oppo9","opportunityChannelContacts","getChannelContactIsComplete","_getsavedContext$oppo11","hideResellerSectionsInViewModeForReseller","readExcelHeader","fileObj","callback","reader","FileReader","rABS","readAsBinaryString","onload","bstr","target","wb","XLSX","read","bookVBA","wsname","SheetNames","excelHaders","ws","header","columnCount","utils","decode_range","encode_col","v","extractHeader","Sheets","file","readAsArrayBuffer","isAnyEUCountrySelected","selectedGeoCountries","isEUEFTA","addExportExcelHeader","exportExcel","props","savedCPContext","options","current","workbookOptions","sheets","_savedCPContext$oppor","_props$kendoGridProps","_props$kendoGridProps2","_savedCPContext$oppor2","_savedCPContext$oppor3","_savedCPContext$oppor4","_props$kendoGridProps3","_props$kendoGridProps4","_savedCPContext$oppor5","_savedCPContext$oppor6","_savedCPContext$oppor7","_props$kendoGridProps5","rows","frozenRows","headerRow1","height","cells","fontSize","bold","colSpan","headerRow2","headerRow3","dealCustomers","customerType","Primary","headerRow4","legalEntityName","unshift","save","downloadDatabyInputFormat","_downloadDatabyInputFormat","fileName","responseData","pdfFile","download","document","createElement","setAttribute","click","getDatePart","fullDate","Moment","day","date","month","year","downloadFile","filename","content","element","style","display","body","appendChild","removeChild","isLoggedInUserHasSubRole","subRole","toUpperCase","isValidEmailWithSeperator","seperator","itemKey","backToDashboard","href","countriesFilter","selectedCountryId","_selectedCountry$regi2","selectedCountry","_country$region","applicablePriceListGeo","excludeCountries","_excludeCountries$spl","getCountryObjByName","selectedCountryName","_x$countryName","getDealType","_x$name","toLocaleLowerCase","pattern","populateGridColumns","gridConfig","LoadDefaultGridData","loadSessionData","selectedColumns","sessionGridConfigData","pricingGridColumns","col","defaultSelectedColumns","dropDownSessionProps","convertToReadableBytes","bytes","decimals","kiloByte","allowedDecimals","sizes","Math","floor","log","parseFloat","pow","toFixed","getRequestorsChannelFunctionalities","internalUser","userChannelRole","isSpecialLocationOrWorldwide","locationType","getMPNLocationValue","requestorType","Invalid","PrimaryResellersOnly","PrimaryAndFinalTierResellers","PrimaryandAdditionalResellers","AdditionalAndDistributors","FinalTierAndDistributors","MultipleDistributorsOnly","isMsStoreUser","updateDefaultPageSizesInSession","pageNumber","selectedPageSizes","sessionPageSize","pricingPageSize","pageSize","getPageNumberFromSession","isEditableRow","_getsavedContext$oppo12","_items3","itemIds","isRowSaved","sessionData","fieldType","message","ruleValidationMessage","gridAccessibilityFix","querySelectorAll","_document$querySelect","_gridpager$","_gridpageroptions$","pagerBtns","getElementsByClassName","querySelector","gridRows","removeAttribute","emptyRow","innerHTML","gridHeaders","_gridHeaders$i$firstE","_headerDiv","firstElementChild","listItems","getElementsByTagName","_anchor","_anchor2","anchor","label","classList","contains","footerRow","_element$querySelecto","headerVal","getAttribute","filterButton","filterName","isRequestorViewing","submitterEmail","loggedInuser","isDateNotWithinThreshold","dateValue","formatedValue","minExpirationDateInDays","defaultDurationInDays","inputExpirationDate","currentDate","currentDateFormatted","expirationDateThresholdDate","setDate","getDate","IsExternalPricingProgram","ErrorCode","initialNotifications","Header","_React$Component","_inherits","_super","_createSuper","_onDismiss","setState","showDismissAllBool","_updateItem","dStatus","rStatus","list","notificationItems","displayStatus","_updateItemDisplayStatus","newNotifications","_onUndoDismissAll","_getHeaderMessage","_jsx","headerStyles","root","children","settingsStyles","mergeStyleSets","marginLeft","marginRight","color","helpLinkStyles","helpLink","margin","FontSizes","size14","fontWeight","FontWeights","semibold","helpList","listStyle","paddingLeft","settingsIcon","iconName","ringerIcon","favoriteStarIcon","touchIcon","settings","_jsxs","ActionButton","iconProps","ocvButtonIsFocused","dismissOpenedPanel","searchResults","recentSearchTexts","selectedPivot","userName","emailAddress","firstName","lastName","pageHeading","_this2","CoherenceHeader","headerLabel","appNameSettings","linkUrl","farRightSettings","profileSettings","imageUrl","logOutLink","onLogOut","_onLogout","onDismissOpenedPanel","styles","dividerStyle","marginBottom","marginTop","removeItem","React","Component","scrollablePaneStyles","position","bottom","right","stackStyles","stackGridStyles","stackGridStyleswithPadding","padding","stackGridStyleswithBelowPadding","stackGridStyleswithBorder","border","borderRadius","stackGridStylesButton","stackGridStylesLabel","stackButtonStyles","paddingRight","buttonStyles","minWidth","alignSelf","chooseColumnStyles","checkboxStyles","scrollBarWidth","currentZoomLevel","calculcateScrollBarWidth","_getScrollBarWidth","getScrollBarWidth","devicePixelRatio","_getScrollBarWidth2","_Styles","scrollablePaneCollapsed","left","navCollapsedWidth","scrollablePaneExpand","rootDiv","paddingTop","dividerLine","backgroundColor","rowGap","contentStyle","textAlign","backgroundImage","Background","backgroundPosition","backgroundSize","backgroundRepeat","backgroundClip","homePageStyle","bannerNotificationStyle","overflow","fontFamily","bannerNotificationCenter","bannerNotificationMargin","bannerNotificationHdrLabel","bannerNotificationLabel","bannerHeaderFont","DRStyleExpand","DRStyleCollapse","DeleteRow","fileAttachment","legalEntityStyles","legalTextStyles","legalSearchTextStyles","legalLinkStyles","dropdown","borderstyle","AddButtonStyle","DeleteButtonStyle","AddDealIconStyles","LegalEntityLabel","DealTextStyles","DealLinkStyles","DealLabels","DealGrid","ChannelGrid","ChannelLabels","ChanneltopRow","paddingBottom","ChannelMSCheckbox","GridStyle","maxHeight","DealDetailsGrid","legalEntityStyles_Upload","DealDetailsGridDiv","Dealvolumntext","PrimarySelection","SearchBarContainer","justifyContent","DialogueCheckBox","DashboardButtons","DashboardBtnText","lineHeight","DashboardIcons","CommandBarButton","alignItems","SpanStyle","SplitterStyle","PrimaryLegalEntityStyle","LegalEntitySearchGrid","DealDetailsSearchGrid","LegalEntityForm","FooterStyle","verticalAlign","AnchorSection","textDecorationLine","LoginInnerPanel","float","LoginOuterPanel","LoginInnerSign","boxShadow","LoginInnerSignh2","font","LoginInnerSignh4","LoginInnerPanelh1","letterSpacing","LoginInnerPanelh2","LoginTextStyle","SkipTextBoxStyle","ViewResellerTextStyle","emailErrorStyle","customLabel","customLabelHeading","PaddingCustomer","FontIconDisabled","opacity","cursor","DefaultPageStyles","defaultDropdownStyles","customDropdownStyles","threeColumnWidthStyles","oneColumnWidthStyles","customWidthForStackLabels","customWidthStyles","customWidthStyleAuto","iconStyleColor","redColor","blackColor","grayColor","oneColumnMinWidthStyles","noColumnMinWidthStyles","customWidthForDealTeamLabels","customWidth190Styles","customWidth175Styles","customWidth125Styles","customWidth70Styles","customWidth40Styles","paddingTop3px","paddingTopLeft","paddingLeftOnly","iconBlueColor","attachmentGridHeight","paddingRight10","attachementFileNameWidth","moreWidth","attachementFileSizeWidth","paddingTop8","paddingBottom16","padding8","ProductSearchWidthStyles","BGcustomWidthStyles","UserPromptBackground","DisplayNone","DeleteButtonIconStyles","DatePickerStyles","icon","BGDatePickerStyles","defaultColumnProps","tokens","childrenGap","DealContactStyles","DeleteButton","CoOwnerCheckBox","CommonStyles","blackBorder","entityLookupWidth","DeleteIconMargin","AddCasToDashboardStyles","mergeStyles","selectStyles","control","base","menuPortal","provided","zIndex","menu","AddCaseOverlayStyles","clearButton","searchButton","textSpacingStyle","texfieldfontStyle","radioButtonStyle","proofOfResellerFont","labelStyle","screen2SearchButton","ChoiceGroupStyles","ChoiceGroupHorizontal","flexContainer","gap","BreadCrumbStyles","itemLink","fontStyle","listItem","chevron","overflowButton","HelpAndSupportStyles","paddingStyle","contentStyleBottomLine","contentStyleBottomLineBlueText","contentStyleBlueText","flexDirection","HelpAndSupportHeaderStyles","dropdownStyles","dropdownOptionText","caretDown","callout","ActionButtonStyles","rootDisabled","labelDisabled","PartnerSearchStyles","hoverText","locationIconClass","partnerRoleIconClass","productGroupIconClass","MarginStyles","marginTop_10","marginTop_15","marginTop_16","expireDialog","extendDialog","textFieldStylesOneColumn","textFieldStylesTwoColumn","extendDialogButtonStyles","pageTitleStyles","dashboardTitle","separatorStyles","DashboardHeaderStyle","showDiscountButtonStyles","RefreshButtonStyles","transform","LeftMenu","history","useHistory","_useState","useState","routeConfig","_useState3","script","src","REACT_APP_CHATBOT_URI","head","isChatbotEnabled","redirectRoute","ev","routeLink","routeTarget","preventDefault","loadFDAChat","OpenFDA","REACT_APP_CHATBOT_KEY","Fragment","CoherenceNav","appName","groups","links","menuItems","routeConfigOptions","configItem","eachItem","isHidden","onClick","processLeftMenu","onNavCollapsed","ErrorPage","historyProps","useLocation","showSomethingWrongMessage","customMessage","showBackToLogin","PrimaryButton","AuthRoute","_ref","component","rest","_objectWithoutProperties","_excluded","isLoggedIn","locationObj","Route","render","_thisRouteConfig$","_thisRouteConfig$0$al","thisRouteConfig","path","pathname","Redirect","to","LoginPage","redirectURL","useEffect","Stack","ariaLabel","Guid","random","AAdAuth","loggedInUser","Fetch_UserToken","authResult","FetchUserRoles","newGuid","_ref3","userRequestedUrL","reload","encrypt","UserDetailsAPI","enableAuth","puid","endsWith","getUserAccountDetails","_ref2","_locationList$","_locationList$2","locationList","organizationId","organizationName","_loggedInUser$userRol","AccountAPI","parsedJson","Organization","keys","_loggedInUser$userRol2","eachOrg","locationId","FetchAccountsDetailsFromRslr","FetchUserDetails","Footer","_React$useState","_React$useState2","buildNumberText","setBuildNumberText","_React$useState3","buildNumber","alt","Logo","HomePage","BackGround","ErrorBoundary","errorInfo","whiteSpace","componentStack","ChannelSubType","CaseActionTypes","updateDealTextFieldState","_action$dealInputValu2","newState","index","_action$dealInputValu","dealInputValue","updateDealCustomerState","dealInputControlValue","dealCustomer","_action$dealInputCont","_action$dealInputCont2","deal","_deal$dealCustomers","updateDealDropDownFieldState","_action$dealDropDownV2","_action$dealDropDownV","dealDropDownValue","InternalPricingReducer","_action$opportunityCh","_action$opportunityCh2","dataLoading","debugMode","boolValue","productGroup","productGroupValue","_action$countries2","_action$countries","geoCountries","_action$dealBoolValue2","_action$dealBoolValue","dealBoolValue","isChannelJustificationRequired","_action$dealTypeValue2","_action$dealTypeValue","dealTypeValue","_action$inputDate2","_action$inputDate","inputDate","expirationDate","attachments","_action$dealContacts2","_action$dealContacts","_action$dealCustomers2","_action$dealCustomers","_action$products2","_action$products","products","case","saveDraft","submitCase","submitCaseAsync","_action$dealVolume2","_action$dealVolume","dealVolume","missingTabs","inputArray","errors","errorCode","inputNumber","isNotCaseOwner","channelContacts","opportunityChannel","_action$closureDecisi2","_action$closureDecisi","ArrayExtensions","inputArray1","inputArray2","jointArray","array","n","PartnerTypeLabel","PartnerTypeName","stackContainerStyles","background","DefaultPalette","whiteTranslucent40","white","stackContainerStylesShift","stackItemStyles","stackItemCustomerStyles","smallAlignmentTokens","itemAlignmentsStackTokens","itemAlignmentsStackTokens10","channelConfig","PrimaryResellerCount","getDealQuantityThreshold","productGroupName","_opportunityDeals$","_opportunityDeals$2","_opportunityDeals$2$d","quantityThreshold","draftDeal","_optyDeal$dealCustome","_optyDeal$dealType","optyDeal","dealVertical","minimumUnitsCommitted","_optyDeal$dealCustome2","_optyDeal$dealType2","selectedDealTypeThreshold","getDealQuantityThresholdValue","productGroupId","_opportunityDeals$3","_opportunityDeals$4","_opportunityDeals$4$g","_opportunityDeals$5","_productTypeSelected$","productTypesInSession","p","productId","productName","selectedConfig","validateMSStoreEmailErrorMessage","setPartnerDetails","pageContext","_pageContext$opportun","_productTypes$find","partnerdetails","requester","channelSubType","geoCountry","_countries$find","RoleValue","mpnLocation","isCaseContainsDealType","_pageContext$opportun3","_t$dealType2","showActionMenuHelper","oppDeal","oppDealDetails","isLocalEmpowerment","statusName","statusCodeName","closureDecisionName","closureDecisionString","userType","userTypes","loggedInUserEmail","loggedInUserRoleDetails","_oppDealDetails$submi","MSSeller","_oppDealDetails$submi2","_oppDealDetails$submi3","loggedInUserAccountIds","loggedInUserOppAccounts","oppAcc","coOwnerDetails","_oppAcc$accounts","CoOwner","oppAccount","isRequesterIsOwner","getUserType","opportunityName","caseStartDate","dealExtensionCount","unitsTransactedOnDeal","unitsTransactedHardware","unitsCommitted","relatedDeal","_pageContext$opportun4","_pageContext$opportun5","currentDeal","isEmptyGuid","isRenewalEligible","isRevertEligible","deal1","deal2","getSelectedDealDetails","oppDealdetails","selectedData","initialChannelDisplayOnEdit","initialChannelDisplay","selectCountryBasedOnRegion","endCustomerCountryId","accountCountryId","_countries$find2","AdditionalTierReseller","replaceMEToUAEForDistributors","uaeCountry","middleEastCountry","InternalPricingContext","createContext","internalPricingProgramDealId","caseInitialState","InternalPricingProvider","_useReducer","useReducer","InternalPricingProgramReducer","_useReducer2","internalPricingContextState","internalPricingContextDispatch","contextValue","_useState2","isSessionDataLoadComplete","setIsSessionDataLoadComplete","propDealType","dealtype","_opportunity$data$opp","dealQuantityThresholdForDealType","oppNumber","getOpportunity","setLocalStoreOpportunity","res1","internalPricingDealType","cpStrategicProductType","productTypeName","_x$productName","getProductType","InvalidCase","Opportunity","_Opportunity$attachme","_Opportunity$opportun","_Opportunity$opportun2","_Opportunity$opportun3","_caseOpportunity$oppo","caseOpportunity","attachment","contact","channelContactEmails","_account$accounts","oppProducts","productFamilyId","productFamilyCode","businessUnitId","quantity","primaryCustomer","primary","_Fragment","Spinner","Provider","useInternalPricingContext","useContext","GridSelectionType","CellRender","dataItem","originalProps","cellField","field","inEditField","additionalProps","ref","td","input","activeElement","focus","select","enterEdit","clonedProps","RowRender","_props$originalProps","_props$originalProps$","hasInEdit","inEdit","trProps","tr","onBlur","exitEdit","DropdownFilterCell","hasValue","Boolean","defaultItem","DropDownList","onChange","event","operator","syntheticEvent","StateCode","MenuOption","CssClassConstants","PageStyles","disabledTabs","missingFieldTabs","borderBottom","commandButtonStyles","commandButtonPadding","labelStyles","errorMessage","bgdropdownStyles","bgSKUStyles","header1","paddingLeft250","header2","productNames","dropdownStylesTwoColumn","PaneldropdownStyles","addItemButtonStyles","addResellerAlignement","innerHtmlMinWidth","maxWidth","textFieldStylesWidth550","textFieldStylesFourColumn","textFieldStylesWidth146","textFieldStylesReadOnlyWidth146","fieldGroup","textFieldStylesReadOnlyWidth250","textFieldStylesWidth92","textFieldPanelWidth","multiLineTextWidth","dealContactAddButton","ErrorMessageStyles","missingFieldHighlight","sectionHeading","sectionDivider","borderTop","epcLabelWidth","warningMessageWidth","openPanelButtonStyles","distributorDropdownStyles","panelButton","panelButtonNoCursor","panelButtonStyle","buttonStylesLong","paddingTop10px","paddingTop8px","paddingTop20px","completedSolidIconStyle","greenColor","successCaseColor","successBlackColor","ThankyouFontSize","warningBackGroundColor","searchStyles","successDraftPadding","spinnerLoadingIcon","pivotTabError","pivotTabNormal","pivotTabDisabled","paddingBottom15","OpportunityDetailsStyles","HorizontalChoiceGroup","DealDetailsStyles","dealRegistrationColWidth","dealRegistrationVolumeWidth","dealRegistratioLabelWidth","quantityTextBoxWidth","monthsTextWidth","stackStylesWidth","textboxLabelPadding","marginTopStyle","marginLeftStyle","marginLeft10","marginLeftFontSize","fontSize12","checkBoxLabelFontStyle","backGroundColor","backgroundColorWhite","horizontalChoiceGroupSingleColumn","horizontalChoiceGroupSmallColumn","horizontalChoiceGroup","backGroundColorGreyWithPadding","backGroundColorGrey","borderWidth","labelFontStyle","dealVolumeWidth","dealVolumeWidthPaddingTop","textBoxWidth","customerWarningMessageWidth","expandedCard","stackTokens","stackButtonTokens","MenuItems","configData","_dashBoardConfig$allo","_dashBoardConfig$allo2","_dashBoardConfig$allo3","_dashBoardConfig$allo4","_dashBoardData$dataIt","_dashBoardConfig$allo5","_dashBoardData$dataIt2","_dashBoardData$dataIt3","_dashBoardConfig$allo6","_dashBoardConfig$allo7","_dashBoardConfig$allo8","_dashBoardConfig$allo9","_dashBoardConfig$allo10","_dashBoardConfig$allo11","_dashBoardConfig$allo12","_dashBoardConfig$allo13","_dashBoardConfig$allo14","_dashBoardConfig$allo15","cpStrategicLettersConfig","setcpStrategicLettersConfig","dashBoardConfig","dashBoardData","_React$useState4","hideDialog","setHideDialog","_React$useState5","_React$useState6","showMessageDialog","setShowMessageDialog","_React$useState7","_React$useState8","checkedOption","setCheckedOption","_React$useState9","_React$useState10","setDisabled","_React$useState11","userCountries","_React$useState13","userAccounts","_React$useState15","_React$useState16","isSubmitWorking","setIsSubmitWorking","_React$useState17","_React$useState18","setMessage","_React$useState19","_React$useState21","_React$useState22","decisionLetterDownloading","setDecisionLetterDownloading","lettersDialogue","cpStrategicConfig","Letters","getCPStrategicLettersByOpportunityDealId","totalRecords","decisionLetterDownload","_selectedData$dealTyp","_userRoleDetails","_loggedInUserInfo","filters","dashboardRequest","logic","accountsIds","tpiDs","getCaseLetters","t0","closeMainDialogAndShowMessage","submitRevert","_selectedData$dealTyp2","revertOpportunityDealStatus","submitExpire","_ref4","setOpportunityDealStatus","Active","submitDelete","_ref5","ariarole","permissions","accessType","isvisible","decisionLetterVisible","rowMenuProps","useConst","shouldFocusOnMount","renderLabel","dialogueSubmitButtonText","dialogueCancelButtonText","CheckBox","Checkbox","selectedOption","checkBoxOnChange","IconButton","menuIconProps","menuProps","Dialog","onClose","DialogActionsBar","horizontal","horizontalAlign","DefaultButton","TextField","readOnly","NextGenKendoGrid","PageNames","MdppAccessibilityLink","_currentLocation$stat","currentLocation","currentLocationStateLinkId","mdppAccessibilityLinkId","_document$querySelect4","locationState","locationNav","mdppAccessibilityNavigation","useToSetFocusOnResellerNameLinkFocus","Link","setTitle","currentTitle","setDocumentTitle","currentDocumentTitle","useToSetPageTitle","page","currentPage","_currentPage$","currentPageTitle","_currentPage$2","useToAddRoleToGridColumnFilterButton","gridColumnFilterButton","_gridColumnFilterButt","parentElement","useToFixGridAriaRequiredChildren","gridContainerId","gridContainer","grid","gridPager","pager","removedPager","useToShowActionButtonTextOnHoverOrFocusInReflow","actionButtons","actionButtonText","actionButtonIcons","removeDisplayProperty","removeProperty","focusSlashMouseOutHandler","focusSlashMouseInHandler","matchMedia","matches","ele","currentButton","currentTarget","hideHandler","actionButton","addEventListener","MdppAccessibilityPanelGrid","removeAriaRowIndex","nanRowIndexes","observers","observer","MutationObserver","observe","attributes","disconnect","useToFixAriaRowIndexNan","gridColumnFilters","mutationsList","parentNode","hasAttribute","gridFilterButton","_gridFilterButton$par","cardHeaderIcon","FontIcon","useToHandleOpenColumnMenuOnKeyboardEnter","filterButtonEnterHandler","useCallback","removeEventListener","FilterMenu","filterMenuContainerSelector","escapeFilterMenuHandler","onCloseMenu","filterMenuContainer","primaryFilterButtonDisabledArray","primaryFilterButtonDisabled","filterMenuButtons","_document$querySelect2","_document$querySelect3","useFilterMenuEscCloseAndFocus","GridColumnMenuFilter","expanded","IsFilterActive","rootFilterOrDefault","isCompositeFilterDescriptor","nf","FilterGroupByField","NextGenKendoChildGrid","_props$parent$kendoGr","_props$parent$kendoGr2","_orderBy","_props$parent$kendoGr3","detailIdGetter","getter","parent","detailSelectedCheckState","setDetailSelectedCheckState","detailGridInitialSort","dir","_useState4","detailsort","setDetailSort","initialDataStateChildGrid","skip","take","_useState5","_useState6","childGridPage","setChildGridPage","_useState7","_useState8","childGriddata","setChildGridData","childGridData","defaultChildGridSelectionstate","onDetailGridHeaderSelectionChange","_detailSelectedCheckS","_props$parent$onDetai","_props$parent","checked","newSelectedState","_objectDestructuringEmpty","dataItems","onDetailRowSelectionCallBack","onDetailGridSelectionChange","_detailSelectedCheckS2","_props$parent$onDetai2","_props$parent2","Grid","orderBy","slice","enabled","drag","cell","Mulitple","total","onSelectionChange","onHeaderSelectionChange","onPageChange","onSortChange","GridColumn","headerSelectionValue","editable","editor","_props$kendoGridProps6","_props$kendoGridProps7","_props$kendoGridProps8","_props$kendoGridProps9","_props$kendoGridProps10","_props$kendoGridProps11","_props$kendoGridProps12","_props$kendoGridProps13","_props$kendoGridProps14","_props$kendoGridProps15","_props$kendoGridProps16","_props$kendoGridProps17","_props$kendoGridProps18","_props$kendoGridProps19","_props$kendoGridProps20","_props$kendoGridProps21","_props$kendoGridProps22","idGetter","selectedCheckState","setSelectedCheckState","initialSort","setSort","setEditField","_useState9","_useState10","griddata","setGridData","_useState11","_useState12","gridCount","setGridCount","initialDataState","_useState13","_useState14","setPage","initialFilter","_useState15","_useState16","setFilter","_useState17","_useState18","gridWidth","setGridWidth","_useState19","_useState21","_useState22","toggleText","setToggleExpandCollapse","moment","utcOffset","resetPaginationToDefault","SetGridWidth","showFilterTextBox","filterBy","_props$onRowSelection","disableSelectAllCheckbox","onRowSelectionCallBack","_props$onRowSelection2","getSelectedState","selectedState","_props$onPrimarySelec","Single","onPrimarySelectionCallBack","DetailComponent","childprops","childData","details","childGridProps","enterEditonSelectedData","match","newData","hasOwnProperty","isUploadedRecord","exitEditonSelectedData","_props$onEditCallBack","editedItem","onEditCallBack","DeleteCell","remove","removeSelectedRow","deletedRowData","newList","onDeleteCallBack","DownloadCell","gridContent","footerCellwithTotal","footerprops","findItem","reduce","mandatoryHeaderCell","HeaderCell","allowView","_config$allowColumnVi","_config$allowColumnVi2","gridErrorCell","ErrorCell","warnings","headerElement","clientWidth","_export","CategoryFilterCell","filterProps","dropDownFilterContent","getChildColumns","kendoGridChildColumns","isColumnActive","active","gridRenderCustomCell","selectedRowData","onCustomCellRenderCallBack","handleDealTypeAbbreviation","ExcelExport","dealtypeString","dash","DRSPExpandView","DRSPCompactView","BUView","handleExportFileName","childColumns","ExcelExportColumnGroup","parseInt","headerCellOptions","ExcelExportColumn","GridToolbar","newDataItem","Discontinued","onAddNewPanelCallBack","LegalEntityUpload","toggleData","eachRowItem","eachRecord","onFilterChange","onItemChange","intValue","colProps","_props$onPageChange","cellRender","rowRender","onExpandChange","row","detail","navigatable","menuprops","footerCell","columnMenu","filterCell","GridFilterCell","headerCell","getColumns","GridNoRecords","dangerouslySetInnerHTML","__html","customNoRecordsErrorMessage","ViewResellers","isResellerLoading","setIsResellerLoading","viewResellerConfig","setviewResellerConfig","resellerAccounts","useRef","resellerCountries","opportunityProducytype","allCountriesInSession","isEUEFTACountries","resellerConfig","con","getAllActiveResellersByProductCountriesAndType","uniqBy","heading","loadingMessageSpinner","tabIndex","prevNavigation","ContactRoles","UIControlType","GridOperations","PricingProgramSelector","selectedDealTypes","pricingPrograms","setPricingPrograms","showWarning","setShowWarning","isPanelOpen","setIsPanelOpen","setErrorMessage","isDuplicateCheckPerformed","setIsDuplicateCheckPerformed","isPricingProgramFormLoading","setIsPricingProgramFormLoading","onDismiss","dismissPanel","isOpenPanel","handlePricingProgramSelectionCancel","onContinueDismissPanel","resetPanelValues","onContinue","_props$partnerDetails","_props$partnerDetails2","_props$partnerDetails3","_props$partnerDetails4","_props$partnerDetails5","isManaged","partnerDetails","mpnLocationId","mpnOrganizationId","searchDuplicateDeal","isDuplicate","handlePricingProgramSelection","finish","onRenderFooterContent","allowDisabledFocus","Panel","headerText","isOpen","closeButtonAriaLabel","isFooterAtBottom","StackItem","visibility","MessageBar","messageBarType","MessageBarType","severeWarning","AttachmentDisplayMode","DistributorGridColumnConfig","isResizable","inputType","EditControlType","required","MultilineTextField","PrimaryResellerGridColumnConfig","AdditionalResellerGridColumnConfig","AdditionalResellerViewGridColumnConfig","FinalTierResellerGridColumnConfig","theme","getTheme","DetailListStyles","container","palette","neutralLighter","flex","DetailListEditableGrid","_props$gridConfigOpti","_props$gridConfigOpti2","_props$gridConfigOpti3","_props$gridConfigOpti4","_props$gridConfigOpti5","_props$gridConfigOpti6","_props$gridConfigOpti7","_props$gridConfigOpti8","_props$gridConfigOpti9","_props$gridConfigOpti10","listOfItems","setItems","InitializeInternalGrid","EditableGrid","layoutMode","DetailsListLayoutMode","justified","selectionMode","SelectionMode","none","constrainMode","ConstrainMode","horizontalConstrained","enableCellEdit","gridConfigOptions","enableGridRowsDelete","enableRowEdit","enableRowEditCancel","enableTextFieldEditMode","enableColumnEdit","enableSave","enableUnsavedEditIndicator","gridCopyOptions","enableGridCopy","enableRowCopy","onGridSave","y","_grid_row_operation_","onGridUpdate","onGridItemsChange","enableDefaultEditMode","Tooltip","classNames","deepSkyBlue","guidanceText","TooltipHost","closeDelay","calloutProps","gapSpace","Icon","_props$source","_props$source2","files","setFiles","_useBoolean","useBoolean","_useBoolean2","showAttachmentList","_useBoolean2$","openPanel","setTrue","setFalse","attachmentList","setAttachmentList","hideAttachmentDeleteDialog","setHideAttachmentDeleteDialog","attachmentId","setattachmentId","displayInPanelGrid","attachmentDisplayMode","PanelGrid","fileUploadId","source","allowedFileSize","node","onAddAttachment","newattachments","updatedList","deleteditems","newlist","includingDeleted","all","affectedFiles","_props$allowedFileExt","bufffer","att","allowedFileExtensions","_file$extension","extension","alert","stringFormat","getRawFile","size","arrayBuffer","encode","removeundefinedfromArray","_item$action","mergeArrays","handleAttachmentChanges","removeAttachment","_props$pageMode","_props$pageMode2","_props$savedAttachmen","opportunityDealStatusCode","savedAttachments","gridData","Column","cellProps","_cellProps$dataItem3","_cellProps$dataItem","_cellProps$dataItem2","_props$pageMode3","_props$savedAttachmen2","CoherenceDialog","hidden","isBlocking","dialogContentProps","DialogType","normal","subText","CoherenceDialogFooter","BadgeContainer","Label","htmlFor","labelText","Upload","batch","multiple","withCredentials","autoUpload","showActionButtons","onAdd","showFileList","Badge","themeColor","align","vertical","isLightDismiss","StatePropertiesText","CommittedDealVolume","_props$opportunityDea3","_props$opportunityDea4","_selectedOptyDeal$dea4","_props$pivotTabContex","_props$pivotTabContex2","_props$opportunityDea5","_props$opportunityDea6","_selectedOptyDeal$dea5","_selectedOptyDeal$uni","dealTypeNames","setdealTypeNames","dealDurationInMonths","setDealDurationInMonths","dealQuantityThreshold","setDealQuantityThreshold","setIsFieldDisabled","selectedOptyDeal","setSelectedOptyDeal","dealData","getDealTypeNames","getDealDurationInMonths","isDealVolumeDisabled","_props$opportunityDea","_selectedOptyDeal$dea","dealDuration","_props$opportunityDea2","_optyDeal$dealType3","defaultDurationInMonths","_selectedOptyDeal$dea2","_selectedOptyDeal$dea3","validateOnFocusOut","validateOnLoad","min","maxLength","onGetErrorMessage","setErrorsDataIntoContext","handleDealQuantityChanges","pivotTabContext","unitsTransacted","pageDispatch","setChannelContacts","isRequired","_pageContext$pageMode","sortContacts","updatedContacts","sortBy","_x$companyName","companyName","oppAccounts","channelStructure","_props$countries$find","countryname","_loop","addAccounts","dis","dmpAccounts","selectedAdds","isAllSelected","allAdds","allEueftaAdds","isEueftaAccount","isComplete","newContacts","cc","accountIds","filteredChannelContacts","updatedChannelContacts","currentAccounts","val","_getsavedContext$oppo10","getChannelContactEmailFromSavedContext","updateChannelContact","newValue","modifiedContact","k","_pageContext$errors","placeholder","multiline","substring","onChannelContactBlur","CustomViewModeComponent","GuidanceTextInformation","showMessageBar","setShowMessageBar","messageBarIconProps","dismissButtonAriaLabel","overflowButtonAriaLabel","messageHeader","ChannelType","CaseDetails","hideDetail","setHideDetail","toggle","caseName","Callout","ariaLabelledBy","ariaDescribedBy","setInitialFocus","isRequestor","orgID","locationID","Ratings","currentRating","setCurrentRating","comment","setComment","minimalRatingToShowComments","getRatingAriaLabel","ratingLabelText","Rating","max","RatingSize","Large","allowZeroStars","rating","getAriaLabel","ariaLabelFormat","handleRatingChanges","ratingCommentLabelText","ratingCommentPlaceHolderText","updateDealFieldState","_action$dealInputCont3","_action$dealInputCont4","_action$dealInputCont5","_action$dealInputCont6","updateDealAddressState","dealAddress","_action$dealInputCont7","_action$dealInputCont8","commonPPReducer","pivotTabDetails","pivotTabs","isFinalOrAdditionalReseller","opportunityRfp","rfpJustification","inputValue","applicableDealTypes","selectedDealNumber","CommonPPContext","oppDealNumber","pageSubMode","opportunityChannelType","Direct","Indirect","CommonPPProvider","commonPPContextState","commonPPContextDispatch","_opportunity$data2","_oppAccounts$filter","_opportunity$data","isAdditionalOrFinalResellersExist","_opportunity$data3","_opportunity$data4","getOpportunityCommon","isRenewed","savedDealVolume","useCommonPPContext","SuccessPage","_commonPPContextState","iconClass","green","isMultiDeal","comments","browserName","saveUserVoice","onLinkClick","_props$dealType","_props$dealType2","navigateTo","isSavingDraft","ViewForm","GridDetails","columnNames","scrollable","PivotContainer","_props$tabNames","register","useForm","selectedTabName","setSelectedTabName","Pivot","selectedKey","_item$props","_item$props2","handleTabSelectionChanges","tabNames","PivotItem","tabName","headerButtonProps","pivotTab","isValid","FormRenderingService","baseState","InnerHTMLContainer","_data$items","_data$selectedCustome","_data$selectedCustome2","_data$selectedCustome3","_data$selectedCustome4","_data$selectedCustome5","_data$selectedCustome6","_data$selectedCustome7","_data$selectedCustome8","_data$selectedCustome9","_data$selectedCustome10","_data$selectedCustome11","_data$selectedCustome12","_data$selectedCustome13","_data$selectedCustome14","_data$selectedCustome15","isDialogOpen","setIsDialogOpen","contolType","handleDismiss","isMultiline","SubHeading","LabelValueView","PanelBarItemWithGrid","PanelBar","expandMode","visible","gridcongfig","PanelBarItem","Text","variant","textSize","nowrap","block","HoverCardPlain","HoverCard","cardDismissDelay","HoverCardType","plain","plainCardProps","componentRef","hoverCard","onCardHide","iconClassName","hoverTextStyles","customWidth","CustomerTable","selectedCustomer","showEdit","editEvent","dunsNumber","organizationNameInLocalLanguage","industry","verticalCategory","webPageURL","dealCustomerDomain","ActionMenu","actionMenuConfig","MessageWithDialog","listdata","PanelTableContainer","_props$PageMode","_props$invokePanelPro","primaryButtonProps","messageBar","sortingDataType","panelType","showPanel","tableListConfig","setTableListConfig","selectedItems","setSelectedItems","setChoice","showErrorMessage","setShowErrorMessage","searchText","setSearchText","resetChoice","updateColumnConfig","setSelectedItemsOnReOpen","tableContent","countrySelected","partnerTypeSelected","_filteredTableContent","selectedTableListConfig","filteredTableContent","fil","countryGeo","geoSelected","updatedTableData","keysSelected","selected","iseditMode","updatedConfig","defaultStateUpdate","sortedData","selectedValues","modifiedData","keyList","updatedResellerColumns","columnDefinitions","selectedIndex","obj","gridFilter","filterTextFieldColumns","filterTextbox","onSubmitClick","onCancel","onDefaultButtonClick","_props$primaryButtonP","_props$primaryButtonP2","_props$primaryButtonP3","additionalFooterButtons","footerTextField","invokePanelProps","onButtonClick","buttonText","PanelType","custom","onOpen","tableConfigurationFields","SearchBox","showIcon","onClear","_selectedTableListCon","filteredData","onSearchChange","onClearAll","uniqueTableContent","tableGridDataWithSelection","selectedRowState","isChecked","selectedRow","PanelAdd","isEditEnabled","ikk","updatedSelectedItems","listUpdated","onItemSelection","getCountryById","DistributorList","horizontalGapStackTokens","FinalTierFields","ResellerNameTextField","ContactEmail","StateOrProvince","showAttachment","modalPropsStyles","main","PanelFieldContainer","_props$primaryButtonF9","_props$secondaryButto5","secondaryButtonFields","_useBoolean3","_useBoolean4","toggleHideDialog","modalProps","useMemo","srcElement","nativeEvent","_props$primaryButtonF","_props$primaryButtonF2","primaryButtonFields","isError","onSecondaryButtonClick","_props$primaryButtonF5","_props$primaryButtonF6","_props$primaryButtonF7","_props$primaryButtonF8","_props$secondaryButto","_props$secondaryButto2","_props$secondaryButto3","_props$secondaryButto4","onBackButtonClick","isBackButtonDisabled","onNextButtonClick","isNextButtonDisabled","errorFields","onDismissed","panelContent","DialogFooter","_props$primaryButtonF3","_props$primaryButtonF4","DialogComponent","DialogContent","PageSubMode","SearchBar","store","getState","setValue","suggestions","setSuggestions","onSubmit","formatValue","hideSlashFormatter","eachSearchValue","setInput","overrideCss","AutoSuggest","onSuggestionsClearRequested","onSuggestionsFetchRequested","suggestionResults","suggestion","parameters","suggestionsParameters","showDistinctSuggestions","values","getSuggestions","onSuggestionSelected","suggestionValue","getSuggestionValue","bind","renderSuggestion","inputProps","placeHolderText","minLength","searchValue","onSuggest","filterCondition","updateSuggestionsParameters","suggest","assignSearchValue","onKeyUp","keyCode","setTimeout","highlightFirstSuggestion","searchID","hideSearchBtn","showFacetsText","_props$onShowFacets","onShowFacets","hideFacetsButton","SearchableComboBoxComponent","dataSource","setdataSource","selectedDataSource","setSelectedDataSource","facetProps","facetData","showFacetCount","count","_props$facetProps$sel","_props$facetProps$sel2","facetLabel","ReactSelect","isMulti","closeMenuOnSelect","hideSelectedOptions","maxMenuHeight","selectedOptions","facetName","CaseActions","_selectedDeal$dealTyp2","_selectedDeal$dealTyp3","_selectedDeal$unitsTr","actionConfig","enableEdit","enableExpire","enableExtend","enableRenew","enableCopy","enableDelete","enableCPStrategicLetters","showCPStrategicLetters","showCPCaseDecisionLetter","enableCPCaseDecisionLetter","enableRevert","actionsConfig","setActionsConfig","columnProps","extensionReason","setExtensionReason","expectedUnits","setExpectedUnits","dialogConfig","setDialogConfig","setSelectedDeal","selectedAction","setSelectedAction","selectedDate","setSelectedDate","readonly","setReadonly","maxExpirationDate","setMaxExpirationDate","_useState20","showExtensionWarning","setShowExtensionWarning","showMaxExtensionWarning","setShowMaxExtensionWarning","_useState23","_useState24","showExtensionFailure","setShowExtensionFailure","_useState25","_useState26","showExtensionLimit","setShowExtensionLimit","_useState27","_useState28","minUnitsForAutoApproval","setMinUnitsForAutoApproval","_useState29","_useState30","showExtensionSuccess","setShowExtensionSuccess","_useState31","_useState32","showExtensionReview","setShowExtensionReview","_useState33","_useState34","disableConfirmBtn","setDisableConfirmBtn","_useState35","_useState36","triggerExtend","setTriggerExtend","_useState37","_useState38","showBackButton","setShowBackButton","_useState39","_useState40","showMessageBanner","setShowMessageBanner","_useState41","_useState42","extensionInProgress","setExtensionInProgress","_useState43","_useState44","copyInProgress","setCopyInProgress","_useState45","_useState46","renewInProgress","setRenewInProgress","_useState47","_useState48","isDecisionLetterOpen","setIsDecisionLetterOpen","_useState49","_useState50","isDecisionLetterSelectedWithSKU","setIsDecisionLetterSelectedWithSKU","_useState51","_useState52","isLetterBeingDownloaded","setIsLetterBeingDownloaded","_useState53","_useState54","manufacturersLetterButtonText","SetManufacturersLetterButtonText","_useState55","_useState56","decisionLetterButtonText","SetDecisionLetterButtonText","_useState57","submitExtend","onCPStrategicLetters","newActionConfig","onCaseDecisionLetter","openDialog","getCaseDecisionLetter","_selectedData$dealTyp3","_selectedData$dealTyp4","FileName","_opportunityDetails$d","_opportunityDetails$d2","_opportunityDetails$d3","opportunityDetails","resellerName","accountCompanyName","t1","ExtendMessage","warning","close","SuccessMessage","success","ReviewMessage","ExtendLimitMessage","MaxExtendMessage","ExtendFailureMessage","onExtend","onRenderFooterContentBack","_openExtendDialog","_selectedDeal$dealTyp4","_selectedDeal$dealTyp5","_selectedDeal$dealTyp6","_selectedDeal$dealTyp7","dealVolumes","committedUnits","autoApprovalUnits","extensionConfig","dealDurations","maxCaseDuration","newExpirationDate","round","extensionMinimumUnitsTransacted","getDealExtensionConfig","isExtensionAllowed","maximumDurationInMonths","setMonth","getMonth","_deal$dealType","_deal$dealType2","_deal$dealType3","_extensionRequest","transactedUnits","autoExtend","priorExpirationDate","extensionDate","submitterContact","extendOpportunityDeal","validateExpirationDate","onCopy","opportunityDealNumber","copyOpportunity","onRenew","_ref6","_selectedDeal$dealTyp","renewOpportunity","closeDialog","_submitDialog","_selectedDeal$dealTyp8","_selectedDeal$dealTyp9","_selectedDeal$dealTyp10","ViewCaseLetters","autoFocus","Dropdown","defaultSelectedKey","DatePicker","strings","defaultDatePickerStrings","minDate","now","highlightSelectedMonth","onSelectDate","textField","highlightCurrentMonth","DocumentCardComponent","jsonDataComponents","_jsonDataComponents$c","registerProp","baseStateProp","Paper","elevation","black","borderLeftWidth","grow","components","UnorderList","dataList","DocumentCardContainerComponent","formJsonTemplate","renderer","disableFlag","_config$data","parentDisableFlag","_baseState$opportunit","isEditDisabled","properties","createType","localDisabledFlag","Components","isArray","createComponent","GuidanceText","DealContact","_props$dealContact","_props$dealContact2","_props$dealContact3","_props$dealContact4","_props$dealContact5","_props$dealContact6","_props$dealContact7","_props$dealContact8","_props$dealContact9","_props$pageMode4","_props$pageMode5","_props$pageMode6","_props$contactRoles","_props$contactRoles$f","dealContact","contactEmail","setContactEmail","contactName","setContactName","contactFirstName","setContactFirstName","contactLastName","setContactLastName","contactType","contactRole","setContactRole","otherRole","setOtherRole","isCoOwnerChecked","setIsCoOwnerChecked","dealNameErrorMessage","setDealNameErrorMessage","contactComplete","updateDealContact","onCoOwnerChange","getMicrosoftContactByAlias","contactRoles","otherRoleStyle","removeDealContact","isMicrosoftContact","InternalPricingDealOverview","_getsavedContext","_internalPricingConte","_internalPricingConte2","_internalPricingConte3","_internalPricingConte7","_internalPricingConte11","_internalPricingConte12","_internalPricingConte20","_internalPricingConte21","_internalPricingConte44","_internalPricingConte45","_internalPricingConte46","_props$productTypes","_props$productTypes$f","_internalPricingConte47","_internalPricingConte48","_internalPricingConte49","_internalPricingConte50","_internalPricingConte51","_internalPricingConte52","_internalPricingConte53","_props$verticals","_props$verticals$find","_internalPricingConte55","_internalPricingConte56","_internalPricingConte57","_internalPricingConte58","_internalPricingConte59","_internalPricingConte60","_DealGeoCoverageOptio","_internalPricingConte62","_getsavedContext2","_selectedCountries$ma","_PageConstants$CPStra","_AffiliationTypeOptio","_internalPricingConte64","_AffiliationTypeOptio2","_PageConstants$OTLEDe","_internalPricingConte66","_internalPricingConte67","_internalPricingConte68","_internalPricingConte69","_internalPricingConte70","_internalPricingConte71","_internalPricingConte72","_internalPricingConte73","_internalPricingConte74","_internalPricingConte75","_internalPricingConte76","_internalPricingConte77","_internalPricingConte78","_internalPricingConte79","_internalPricingConte80","_internalPricingConte81","_Moment","_internalPricingConte82","_internalPricingConte83","_Moment2","_internalPricingConte84","_PageConstants$CPStra2","_internalPricingConte85","_internalPricingConte86","_internalPricingConte87","_internalPricingConte88","_internalPricingConte89","_internalPricingConte90","_internalPricingConte91","_internalPricingConte92","_internalPricingConte93","_internalPricingConte94","_internalPricingConte95","_internalPricingConte96","_PageConstants$CPStra3","_internalPricingConte97","_internalPricingConte98","_props$productTypes2","_props$productTypes2$","_internalPricingConte99","_props$verticals2","_props$verticals2$fil","_internalPricingConte101","_PageConstants$CPStra4","_segmentValue","_PageConstants$CPStra5","_segmentValue2","_PageConstants$CPStra6","_internalPricingConte102","_DealGeoCoverageOptio2","_selectedCountries$ma2","_internalPricingConte103","_PageConstants$CPStra7","_AffiliationTypeOptio3","_AffiliationTypeOptio4","_internalPricingConte105","_internalPricingConte106","_internalPricingConte107","_internalPricingConte108","_internalPricingConte109","_internalPricingConte110","_Moment3","_internalPricingConte111","_internalPricingConte112","_Moment4","_internalPricingConte113","_internalPricingConte114","_internalPricingConte115","_PageConstants$CPStra8","_PageConstants$CPStra9","_internalPricingConte116","_internalPricingConte117","_internalPricingConte118","_internalPricingConte119","_internalPricingConte120","_internalPricingConte121","_internalPricingConte122","isCountryMultiSelect","setIsCountryMultiSelect","selectedCountries","setSelectedCountries","isAffiliationTypeOthersVisible","setIsAffiliationTypeOthersVisible","_useInternalPricingCo","oppdealId","setOppdealId","setDealContact","setContactRoles","endCustomerAttachment","setEndCustomerAttachmentList","setGridName","setDealVTeamText","warningMessageForDealVolume","setWarningMessageForDealVolume","emailRecipientsValue","setEmailRecipientsValue","today","maxDateForExpirationField","setMaxDateForExpirationField","otleDeal","addDays","_internalPricingConte4","_internalPricingConte6","_internalPricingConte5","_internalPricingConte8","_internalPricingConte9","_internalPricingConte10","affiliationType","_internalPricingConte13","_internalPricingConte14","getContactRoleOptions","_internalPricingConte15","_internalPricingConte16","_internalPricingConte17","_internalPricingConte18","_internalPricingConte19","validateCountry","_internalPricingConte24","isExist","selectedItem","isNonEditableCountry","_internalPricingConte25","_internalPricingConte26","_savedSate$opportunit","_internalPricingConte27","_internalPricingConte30","_internalPricingConte31","PrimaryCountry","_internalPricingConte28","_internalPricingConte29","savedSate","getDeletedContactItems","exceptDelete","dealContancts","_internalPricingConte32","deletedContacts","updatedContact","_internalPricingConte33","_savedContext$opportu2","savedindex","saveditem","Update","getExpirationDateErrorMessage","_internalPricingConte36","onEmailCCNotificationTextBoxBlur","updatedDealContacts","emailValue","regexp","isValidEmailMicrosoftDomain","onAttachmentChange","allAttachments","otherAttachments","_internalPricingConte37","_internalPricingConte39","otherContactIndex","otherLabelStyle","segmentValue","segment","DealDetailsJsonForCreateEdit","_internalPricingConte54","dealOverview","_internalPricingConte61","multiSelect","selectedKeys","_internalPricingConte22","newSelection","saved","prevState","_internalPricingConte23","_internalPricingConte63","affiliationTypeOthers","_internalPricingConte65","_internalPricingConte38","_internalPricingConte34","_internalPricingConte35","dealVolumeValue","maxDate","expirationDateJustification","exceptionRequest","endCustomerAttachmentList","proofOfCustomerPreference","additionalInformation","DealDetailsJsonForView","_internalPricingConte100","dealStackability","_internalPricingConte104","closureDecisionComments","caseEndDate","_internalPricingConte40","_internalPricingConte41","isDealteamSectionVisible","Col","info","NoDealVTeamMessage","_internalPricingConte42","isMicrosoftContactSectionVisible","EntityLookup","AccountsList","accountsListConfig","setAccountsListConfig","reOrderSelectedItems","gridSelectedItems","selectedAccountListConfig","nonSelectedValues","itemSelectionUpdate","gridCheckbox","lookUpTextFieldProps","updatedItems","subHeaderText","isCountrySelected","accountGridDatawithSelection","disableSelectAllSelection","_props$opportunityAcc","_props$opportunityAcc2","_productType$","_props$customerCountr","_props$customerCountr2","setCustomerCountry","resellerType","setResellerType","opp","selectedResellers","setSelectedResellers","resellers","resellerAccount","msStoreAccount","updateAccounts","resellerSelectionComplete","resellerSelection","_props$opportunityAcc3","_props$opportunityAcc4","existingDMPs","entries","availableRelatedAccounts","_props$opportunityAcc5","_props$opportunityAcc6","_props$opportunityAcc7","_props$opportunityAcc8","_resellerSelection","newRelatedAccounts","GetNewRelatedAccountsCopy","reseller","_Object$entries$_i","_Object$entries","_i","_resellerSelection2","_props$opportunityAcc9","_props$opportunityAcc10","_props$opportunityAcc11","_props$opportunityAcc12","_props$opportunityAcc13","_props$opportunityAcc14","_props$opportunityAcc15","_props$opportunityAcc16","removedAvailableAccounts","res","removedPartnerAccounts","updatedAvailableAccounts","updatedPartnerAccounts","resellerIDs","disableResellerAndMSStoreField","modifiedResellers","updatedResellers","_modifiedResellers$cu","omit","hideDeleteIcon","ChannelAccounts","_props$productType","allResellerSelected","setallResellerSelected","allResellerEUSelected","setallResellerEUSelected","selectedDistributors","setSelectedDistributors","distributorOption","setDistributorOption","resellerOption","setResellerOption","isMsStoreChecked","setIsMsStoreChecked","onMsStoreCheckBoxChange","setProductType","distiAccounts","distiAccount","productTypeId","_props$productType2","distributorSelectionComplete","distiSelection","updateLookupList","itemsSelected","itemsList","updatedItemsList","onAddSelectionUpdate","_distributors","onResellerSelectionUpdate","_resellers$current","rs","optionRootClass","distiOptions","onRenderField","viewResellers","resellerOptions","onRenderLabel","underline","ChoiceGroup","option","gridCellDropDownStyles","DropDownGridCell","setValues","dropdownChange","isMultiSelect","cellId","CPStrategicChannel","msStoreClass","getInitialAccountsState","structureChange","accountAllType","msStores","newOppAccounts","setProductTypeId","setDistributors","setResellers","setMsStores","resellerChannelAccounts","setResellerChannelAccounts","availableCountries","setAvailableCountries","isChannelInfoVisible","setIsChannelInfoVisible","isCasToReseller","setCasToReseller","isChannelJustificationVisible","setChannelJustificationVisible","isAttachmentVisible","setAttachmentVisible","isAttachmentRequired","setAttachmentRequired","isSkipReasoningVisible","setIsSkipReasoningVisible","allDistributors","getDistributorAccounts","distributorAccounts","addtionalADRIdList","setAddtionalADRIdList","oppAccountAvailableCountries","setOppAccountAvailableCountries","setPartnerAccounts","invalidResellers","setInvalidResellers","_getResellers","newCountries","userRelatedCountries","userCountriesIds","resellerAccountContries","initializeAccounts","eueftaCountries","resellerContries","getResellers","ms","_oppAccount$accounts","_value$accounts","msStore","relatedAccounts","_acc$accounts","ac","dmpsWithParters","newDMPs","getAddsAccountsByDmpAccountIds","dmp","_acc$accounts2","relatedAccount","gridCell","accessibilityHook","actiontype","newResellerList","newDistiList","newMsStoreList","_accounts$","_accounts$2","opportunityAvailablecountries","availableRelatedAdds","selectedRelatedAdds","_value$accounts2","_selectedRelatedAccou","selectedRelatedAccounts","_countries$find3","_countries$find4","onRelatedADDChange","countryID","newRellers","_r$accounts","disableAccount","partnerAccount","isSaved","_getsavedContext$oppo6","_dmpAccount$partnerAc","isPartnerAccount","addDropdownCell","excludeDMPList","selectedAccounts","_acc$action","_acc$action2","Created","add","selectedAcc","uniqueEntries","unique","duplicateEntries","firstResellers","groupBy","_$first","first","resellerChannels","newResellers","newMSStores","_a$accounts","isActive","invalidDistributors","_a$accounts2","updatedAccounts","invalidPartners","_updatedAccounts","inv","_r$accounts3","sortedListItems","isPartnerAccountPresent","accountID","_r$accounts4","listItemsForADD","_countries2$find","_countries2$find2","distributorName","selectedRelatedResellers","_value$accounts3","_value$accounts4","_value$accounts5","_value$accounts5$","partnerAccountIndex","_selectedRelatedAccou2","addAccount","_countries2$find3","_countries2$find4","sortedListItemsForADD","_getDistributorAccoun","_getDistributorAccoun2","loggedInDistributor","_userRoleDetails$prod","getDistributorAccountsByCountry","_loggedInDistributor$","_resellersList$find","resellersList","availableResellers","resellersOption","allResellers","groupedResellers","_ref7","selectedADDList","mdppAccessibilityLocation","mdppaccessibilitySetNavForFocus","resellerCountry","mdppaccessibilityLinkId","channelOverview","resellersToAdd","addsToAdd","channelStructureDisable","channelJustification","skipChannelReason","newGuidId","newReseller","ADRList","onAddADR","_acc$action3","resellerColumn","mdppaccessibilityResellerNameLinkId","dataIndex","_distiSelection$accou","distiColumn","InternalPricingCommands","_history$location","_internalPricingConte43","hideCancelDialog","setHideCancelDialog","isDraftSaving","setIsDraftSaving","isCaseSaving","setIsCaseSaving","hideErrorDialog","setHideErrorDialog","errorDialogMessage","setErrorDialogMessage","saveDraftHidden","setSaveDraftHidden","hideOwnerDialog","setHideOwnerDialog","isCaseComplete","validationErrors","isDealOverviewTabIncomplete","isLegalEntitiesTabIncomplete","isChannelTabIncomplete","isProductSearchTabIncomplete","isChannelContactTabIncomplete","isIncomplete","_c$action","isCpStrategicDeal","emptyGuid","dealDetailContacts","_p$action","_c$action2","volume","Length","lastIndexOf","validatePartnerTypeSelection","adrDmpAccounts","_p$action2","_step","_iterator","_createForOfIteratorHelper","done","err","_p$action3","dispatchBDReviewNeeded","savedData","newCustomers","_c$action3","_c$action4","newProducts","_p$action4","approvedProductsQuantityChanged","updatedProducts","_p$action5","savedProducts","savedProductsQuantity","updatedProductsQuantity","newAccounts","_item$accounts","addedItems","_a$action","addedDMPs","newAdds","dmps","addedLength","pa","newMSStore","attachements","dealOverviewChanged","expirationDateChanged","channelJustificationChanged","exceptionRequestChanged","channelStructureChanged","channelOverviewChanged","expirationDateJustificationChanged","dealVolumeChanged","submitOpportunityAsync","setOpportunityNumber","successPageHandler","resetLegalEntities","submitOpportunity","saveDraftOpportunity","unManaged","_c$errors","saveDraftClickHandler","areCommandButtonsDisabled","GetCompactProductData","productData","dealStatusCode","_gridConfig$kendoGrid","apiData","discountTitle","startDate","endDate","defaultDateRanges","dealPeriodStartDate","dealPeriodEndDate","dateColumnApi","validityGridColumn","productFamily","discountValue","getGridColumn","newArray","decisionType","_objectSpread4","_objectSpread5","discountField","columnNamesDynamic","AddMissingColumnWithValueForProducts","product","GetExpandedProductData","_gridConfig$kendoGrid2","showAdditionalDiscounts","isDrDealType","discountAmount","boosterDiscountField","totalDiscountField","skuPartNumber","netMSRP","currencyName","discountAmountFieldext","discountFieldext","boosterDiscountFieldext","totalDiscountFieldext","parentColumn","_objectSpread7","discountNo","boosterDiscountValue","EPSILON","totalDiscountValue","discountAmountField","discountFieldVal","boosterDiscountFieldVal","totalDiscountFieldVal","parentColumn1","_objectSpread8","_element$childColumns","formatProductSearchAPIData","resultArray","PFAMProductSearch","allCountries","productsForEachEUCountry","productsForEachNonEUCountry","distinctEUProducts","euCountries","filteredCountry","euProducts","CountryId","tempProduct","nonEUCountries","nonEUProducts","setProductSearchStore","indexName","searchSuggesterName","searchSelectColumn","globalSearchFilterExpression","searchStore","AzSearchStore","setConfig","queryKey","service","suggesterName","fuzzy","setSuggestionsProcessor","results","UploadLegalEntity","InternalPricingProductSearch","panes","setPanes","_props$facetProps","splitterConfig","defaultProductSearchStore","productSearchStore","setProductFamilyGridData","setSelectedSearchValue","setGlobalSearchFilterExpression","productSearchGridConfig","setProductSearchGridConfig","PFAMSelection","productFamilyGridConfig","setProductFamilyGridConfig","selectionState","setSelectionState","searchFilterButtonText","setSearchFilterButtonText","hideSearchFilterButton","setHideSearchFilterButton","isCPStrategicDeal","setIsCPStrategicDeal","setProductFamilyCode","selectedProductFamilyCodeValues","setSelectedProductFamilyCodeValues","pfamName","setPfamName","selectedPfamNameValues","setSelectedPfamNameValues","businessUnit","setBusinessUnit","selectedBusinessUnitValues","setSelectedBusinessUnitValues","setSkuName","selectedSkuNameValues","setSelectedSkuNameValues","setSkuPartNumber","selectedSkuPartNumberValues","setSelectedSkuPartNumberValues","setCountry","selectedCountryValues","setSelectedCountryValues","_useState58","isDefaultSearch","setDefaultSearch","_useState59","_useState60","isSearchCleared","setSearchCleared","allFacets","_useState61","PFAMExpandView","_useState62","pfamExpandConfig","setPfamExpandConfig","_useState63","PFAMCompactView","_useState64","pfamCompactConfig","setPfamCompactConfig","_useState65","_useState66","isProductLoading","setIsProductLoading","_useState67","_useState68","expandGridVisible","setExpandGridVisible","_useState69","_useState70","showProductData","setShowProductData","_useState71","_useState72","showWarningMessage","setShowWarningMessage","resetWarningMessage","_useState73","_useState74","setSavedProductFamilyGridData","_useState75","_useState76","showProductDialog","setShowProductDialog","_useState77","_useState78","inactivePFAMs","setInactivePFAMs","_useState79","_useState80","issearchBarVisible","setIsSearchBarVisible","expandedGridData","expandGridConfig","compactGridData","selectedDataRole","decisionTypeName","productFamilyName","businessUnitName","compactGridConfig","fetchProductsData","getOpportunityDealDiscountPeriodAndSkuMSRP","_unused","inActiveproductFamily","inActiveProducts","updatedproductFamily","isSavedProduct","updateProductFamilyAndDispatch","_savedOpportunityData","savedOpportunityData","getOppdealId","dealId","savedId","_selectedProductFamil","selectedProductFamilyConfig","totalProductQuantity","setDefaultSearchStore","setSearchStore","setCountriesForSearch","countryItem","filteredItem","resetSelectedData","panelBars","panelBarElements","liEle","nonEUCounties","selectedGeoCountry","allCountry","_props$facetProps4","filterStringExpression","createGlobalFilterExpression","getProductSearchData","_getProductSearchData","selectedValue","_props$facetProps7","indexURL","facetString","apiReturnedData","productsCount","productsSearchResultsData","productSearchConfig","searchData","groupedData","selectedProductsGridConfig","facetList","setGlobalFilter","updateSearchParameters","getProductSearchResults","ceil","PfamId","setComboBoxDatasource","setSelectedValuesDatasource","addSelectedProductFamily","selectedproductFamily","getProductFamilyModel","finalSelection","searchId","resetSearchgrid","deletedItem","DeletedDataFromDeleteAll","isAddition","ProductFamilyCode","skuId","SKUId","BusinessUnitId","_props$facetProps5","_props$facetProps6","createFilterExpression","facetType","Row","_props$facetProps2","_props$facetProps3","_panes$","isCollapsed","collapsed","collapsible","Splitter","selectedProducts","refreshedGridData","deletedlegalConfig","selectedProductFamily","tempData","editedRowIndex","savedProductIndex","CustomerStatusCodes","RadioGridCell","setSelectedKey","useTableKeyboardNavigation","CreateUnmanagedCustomer","_commonPPContextState4","customerLocalName","setCustomerLocalName","setCustomerName","addressLine1","setAddressLine1","city","setCity","postalCode","setPostalCode","setSelectedCountry","setIndustry","setVertical","setVerticalCategory","setWebPageURL","emailDomain","setEmailDomain","isCustomerNameChecked","setIsCustomerNameChecked","toggleCustomerLoading","setToggleCustomerLoading","toggleCustomerHardDuplicate","setToggleCustomerHardDuplicate","toggleCustomerSoftDuplicate","setToggleCustomerSoftDuplicate","toggleCustomerNewRecord","CustomerNameRequired","setCustomerNameRequired","CustomerLocalNameRequired","setCustomerLocalNameRequired","countryRequired","setCountryRequired","addressLine1Required","setAddressLine1Required","cityRequired","setCityRequired","postalCodeRequired","setPostalCodeRequired","industryRequired","setIndustryRequired","verticalRequired","setVerticalRequired","verticalCategoryRequired","setVerticalCategoryRequired","webPageUrlRequired","setWebPageUrlRequired","webPageUrlPattern","setWebPageUrlPattern","emailDomainPattern","setEmailDomainPattern","stateRequired","setStateRequired","industryDropdown","setIndustryDropdown","verticalDropdown","setVerticalDropdown","verticalCategoriesDropdown","setVerticalCategoriesDropdown","enableCloneEnglishName","setEnableCloneEnglishName","setToggleSubmissionActions","DuplicateCustomerResults","customerSearchGridConfig","setCustomerSearchGridConfig","setIsCustomerSelected","_useState81","_useState82","showNoteMessageBar","setShowNoteMessageBar","_useState83","_useState84","selectedCustomerId","setSelectedCustomerId","_useState85","_useState86","setSelectedCustomer","_useCommonPPContext","_useState87","_useState88","countriesDropDown","setCountriesDropdownData","_useState89","_useState90","saveButtonText","setsaveButtonText","_useState91","_useState92","_useState93","_useState94","isCountryDisabled","setIsCountryDisabled","_useState95","_useState96","createUnmanagedCustomerGuidanceText","setCreateUnmanagedCustomerGuidanceText","_commonPPContextState2","setGuidanceText","_commonPPContextState3","opportunitydeal","dealCustomerCountry","responses","_props$savedCustomer","_responses$","_responses$2","industryName","savedCustomer","_props$savedCustomer2","_props$savedCustomer3","_props$savedCustomer4","_props$savedCustomer5","_props$savedCustomer6","_props$savedCustomer7","_props$savedCustomer8","_props$savedCustomer9","industryOption","populateVerticalfromIndustry","selectedvertical","verticalName","verticalCategories","allAddress","address","checkInput","validate","errorMessages","isValidURL","isValidEmailDomain","_useState97","_useState98","toggleCustomerAdd","setToggleCustomerAdd","_props$savedCustomer10","_props$savedCustomer11","request","_props$savedCustomer12","_props$savedCustomer13","customer","customerId","stateProvince","replaceAll","localNameSameAsEnglish","saveAsNewRecord","tpid","crmAccountId","updateCustomer","callCreateCustomer","_useState99","_useState100","duplicateCustomers","setDuplicateCustomers","legalEntity","_error","_key","isSuccess","onSubmitToPricingProgramCallBack","isHardCopy","ruleValidationResults","_request$addressLine","resetMessageBarChoice","resetMessageBarNote","submitToPricingProgram","DuplicateGridCustomerSelectErrorMessage","onHandleIsManagedCallBack","CreateUnmanagedCustomerGuidanceTextOTLE","CreateUnmanagedCustomerGuidanceText","CreateUnmanagedDuplicateCustomerGuidanceText","defaultValue","webPageUrlInputField","webPageUrlLabel","webPageUrlLabelSiblingDiv","CreateUnmanagedCustomerSavingText","CreateUnmanagedCustomerSoftDuplicateText","CreateUnmanagedCustomerHardDuplicateText","CreateUnmanagedCustomerSuccessText","onCloseCallBack","selectedLegalData","InternalPricingLegalEntitiesSearchAndUpload","setuserSelectedAffiliationType","LegalEntitySearch","searchGridconfig","setSearchGridconfig","LegalEntitySelection","selectionGridconfig","setSelectionGridconfig","LegalEntitySearchOTLE","otleSearchGridconfig","setOTLESearchGridconfig","selectedLegalGridData","setSelectedLegalGridData","PrimaryName","PrimaryID","CountryName","selectedIsPrimary","setselectedIsPrimary","legalOption","setlegalOption","setlegalOptionDisable","setlegalSearchChecked","showSearchFacet","setshowSearchFacet","crmChildAccountName","setCrmChildAccountName","selectedCrmChildAccountNameValues","setSelectedCrmChildAccountNameValues","setAddress","selectedAddressValues","setSelectedAddressValues","selectedCityValues","setSelectedCityValues","selectedPostalCodeValues","setSelectedPostalCodeValues","setStateProvince","selectedStateProvinceValues","setSelectedStateProvinceValues","childCrmId","setChildCrmid","selectedCrmidValues","setSelectedCrmidValues","setTpid","selectedTpidValues","setSelectedTpidValues","gpid","setGpid","selectedGpidValues","setSelectedGpidValues","dunsid","setDunsid","selectedDunsidValues","setSelectedDunsidValues","allSelectedFacets","setFilterString","savedselectionState","setsavedselectionState","currentUserSelection","setCurrentUserSelection","isDialogHidden","setIsDialogHidden","IsOTLE","setIsOTLE","IsCPS","setIsCPS","showAddCustomer","setShowAddCustomer","internalPricingDealTypeValue","hideUnManagedCustomerEdit","SetHideUnManagedCustomerEdit","customerSearchGuidanceText","setCustomerSearchGuidanceText","hideCustomerDialog","setHideCustomerDialog","customerMessage","setCustomerMessage","isCustomerActive","_customers$","_customers$2","customers","_legalentity","legalentity","primaryLegalEntityId","primaryLegal","le","setPrimaryLegalentity","getLegalEnityModel","updateSelectedLegalAndDispatch","onSplitterChange","isUnitstransactVisible","legalEntityConfig","primaryLegalEntity","updatedLegalData","primaryFilter","dispatchSelectedData","setExcelHeaderColumns","CustomerAccountId","IsManaged","legalEntityRecords","selectedLegals","primaryLegalID","legalData","totalunits","legalEntities","_item$country","_item$crmAccountId","_item$legalEntityName","_item$segment","_item$vertical","_item$errors","isNaN","ChildCRMID","OrganizationName","Affiliates","managedCustomerId","legalEntityType","setCountries","setCountriesDropdown","countryValues","onCountrySelectionChange","_setselectedIsPrimary","setCustomerInfoForOpportunityDeal","searchlegalConfig","getCustomerSearchData","searchConfig","getCustomerSearchResults","onCustomerSelectionHandler","customerData","opportunityDeal","getPrimaryLegalID","_oppDealCustomer$","oppDealCustomer","customerCountryName","primaryCust","clearFacets","primaryIndex","hideClearAll","legalEnities","_selectedlegalConfig$2","legalEntityWithoutDelete","selectedlegalConfig","_selectedlegalConfig$","primarySelectionState","_setselectedIsPrimary2","updatedLegal","category","getBusinessVertical","_setselectedIsPrimary3","uploadFileObj","setAttachment","_useState101","_useState102","seterrorMessage","_useState103","_useState104","sethideDialog","_useState105","_useState106","excelHeaderColumns","processFileToBuffer","getFileArrayBuffer","attachmentObj","processExcelData","excelHeaderResponse","validateExcelTemplate","sheet_to_json","jsonData","processExcelDataToJson","processedJson","_newSelectedLegals$fi","isDealVolumeApplicable","newSelectedLegals","isDuplicateRowDetected","_eachItem$UploadLegal","_eachItem$UploadLegal2","_eachItem$UploadLegal3","_eachItem$UploadLegal4","_eachItem$UploadLegal5","_eachItem$UploadLegal6","eachEntity","validateDealCustomers","_dealCustomers$filter","_customers$find","headerColumns","isValidTemplate","isManagedView","selectedDropDownVal","_tempData$filter$2","validateExcelRecord","validateRequiredField","validateSegmentField","validateCountryExists","closePanel","customerDetails","disableshrink","createUnmanagedCust","customerEntity","reviewDecision","customerGuidanceText","CoherencePivot","onTabSelected","useGrayPivot","tabs","defaultSelectedKeys","_searchGridconfig$ken","selectedlegals","searchGridDatawithSelection","addSelectedLegalEntites","excelJsonData","excelName","sheetName","aoa_to_sheet","book_new","wch","book_append_sheet","writeFile","exportToExcel","derline","_tempData$filter$","Id","_deletedlegalConfig$k","_setselectedIsPrimary4","OtleChannel","_pivotTab$errors4","_pivotTab$errors5","currentDealStatusCode","endCustomerCountry","setEndCustomerCountry","primaryResellerGridItems","setPrimaryResellerGridItems","getChannelPersona","showChannelContentBasedOnRoleType","resellerRegionalCountries","setResellerRegionalCountries","selectedResellerCountry","setSelectedResellerCountry","selectedResellerType","setSelectedResellerType","initialResellerType","setPanelType","hideInvalidResellerDialog","setHideInvalidResellerDialog","msStoreSelection","setMsStoreSelection","setSelectedResellersOrDistributors","initialSelectedResellers","resellerColumnDefinitions","resellerTypes","resellerTableConfigurations","filteredValues","setSelectedList","filteredResllers","setOpportunityAccounts","setOpportunityChannelContacts","getAllActiveResellersByProductAndCountry","regionalCountries","_props$countries","resellerItems","_acc$accounts$","opportunityAccountId","resellerNames","resellerEmailContacts","deleteAction","getMsStoreItem","contacts","validateContactErrorMessage","onRenderResellerEmail","fieldContent","gridInitialItems","_pivotTab$errors","isActionButtonDisabled","getFieldStatusBasedOnExistingItemsActionFlag","getEmailContactErrorMessage","onEmailContactsChange","renderTextFieldElement_HelperFunction","isMSStore","_email","_email2","onRenderResellerDelete","rowId","buttonId","onRenderClickFunction","renderActionButton","_find","partnerTypes","optyAccounts","targetPropertyId","_pivotTabChannel$erro2","_pivotTabChannel$erro","pivotTabsData","pivotTabChannel","optyAccount","set","delete","clearErrorFromContext","onResellerDelete","rowAccountId","_acc$accounts$2","_opp$accounts$","_pivotTabChannel$erro3","onPrimaryResellerAdd","_pivotTab$errors2","_pivotTab$errors3","channelData","isMSStoreDisabled","isOtleMSStoreDisabled","ResellersList","modifiedList","_modifiedList$current","columnConfig","onRender","splice","attachPrimaryResellerCallbacks","CustomTileCardComponent","enableActionMenu","ActionMenuConfig","allowAddCaseToDashboard","enableAction","_config$allowCaseLett","_config$allowCaseLett2","_config$allowCaseLett3","_config$allowCaseLett4","enableCPStrategicLettersAction","_config$allowCaseDeci","_config$allowCaseDeci2","_config$allowCaseDeci3","_config$allowCaseDeci4","caseAction","_config$userRoles","_config$statusValues","_config$userType","u","_opportunityDeal$user","_opportunityDeal$deal","_opportunityDeal$deal2","_opportunityDeal$deal3","dealUnitsTransacted","dealUnitsCommitted","renewalEligibleWindow","renewalEligibleWindowInDays","diffInMs","abs","valueOf","unitsTransactedThreshold","renewalMinimumUnitsTransacted","validateRenew","validateEdit","cutoffDate","setHours","ProductStructure","manufactureConfirmatonLetterVisible","_config$actionTypes","_config$actionTypes2","OtleChannelView","distributorListGridItems","setDistributorGridItemsState","optyAcc","_optyAcc$accounts$","_optyAcc$accounts$2","distributorCountry","distributorNames","distributorEmailContacts","associatedPartner","ChannelJson","UserEvent","emailColumn","attachDistributorCallbacks","OtleCustomerView","_customerDetail3","_customerDetail4","_customerDetail5","_customerDetail6","_customerDetail7","_customerDetail8","_customerDetail9","_customerDetail10","_customerDetail11","_customerDetail12","_customerDetail13","_customerDetail14","_customerDetail15","_customerDetail16","customerDetail","isManagedCustomer","isManagedCustomerField","_customerDetail","isCustomerExists","_customerDetail2","isExists","CustomerDetailsJson","disableShrink","InternalPricingProductDetails","InternalPricingProducts","internalPricingProductGridConfig","setinternalPricingProductGridConfig","setProductGroup","setDealType","_dealTypes$find","_oppDeal$dealType","groupedbyPFAM","Config","productStructure","ProductFamily","productTypeSelected","ProductDetailsJson","RfpType","RouteLeavingGuard","when","beforeUnloadCallback","returnValue","Prompt","InternalPricingCase","setVerticals","setProductTypes","showSuccessPage","setShowSuccessPage","isSaveDraftButtonClicked","setIsSaveDraftButtonClicked","setOppNumber","dirty","setDirty","getCountries","isFieldMissing","setIsFieldMissing","isCommandButtonDisabled","getTabStyle","tab","facetNames","facetCount","filterNames","filterValues","euFilter","isChannelContactTabVisible","_loggedInUserInfo$use","isMSSeller","setHideDownLoadButton","hideChannel","setHideChannel","setActionMenuConfig","verticalsInSession","getVerticals","comboBox","formElements","dropDown","formElement","every","gridRow","filesTxt","gridCellInput","klinkSpan","mddppAccessibilityPivot","_location$state","pivot","mdppAccessibilityOpenChannelTab","mdppAccessibilityPivotHandler","Breadcrumb","Separator","PivotContent","PivotContentItem","CPProductSearch","CaseDropdown","Breadcrumbs","onBreadcrumbItemClicked","BreadCrumbData","routing","maxDisplayedItems","overflowAriaLabel","CaseManagement","breadcrumbItems","setBreadcrumbItems","userMainRole","onChangeHandler","route","isPartner","setIsPartner","toolSupportEmail","supportMailTo","_currentPage$3","GenericForm","_useForm","handleSubmit","renderFieldsInTabs","formData","GetCustomerViewJson","SetCustomerDetail","ProductDetails","DRProducts","DRproductGridConfig","setDRproductGridConfig","SPProducts","SPproductGridConfig","setSPproductGridConfig","buProducts","groupedbyBU","DealDetails","_selectedOptyDeal$dea6","_selectedOptyDeal$dea7","_commonPPContextState5","_commonPPContextState6","isRfpRfqPublicTender","Yes","address1","getCountryName","stateOrProvince","checkRequestorViewing","preSalesActivity","additionalComments","PricingDiscount","BUproductGridConfig","setBUproductGridConfig","setdealType","dealtypeName","expandGridData","FinalData","_oppDeal$dealCustomer","BUViewGridData","fetchProductsSKUAndPriceListData","_oppDeal$dealType2","Channel","_opportunityAccounts$","_commonPPContextState7","_opportunityChannelCo","additionalResellerGridItems","setAdditionalResellerGridItems","finalTierResellerGridItems","setFinalTierResellerGridItems","setShowChannelContentBasedOnRoleType","channelFunctionalityDisplayState","getPrimaryResellerGridItems","_commonPPContextState8","onRenderDistributorOwner","distributorOwner","onRenderViewDistributorOwner","onRenderDelete","ftrNo","opportunityAccountName","zipPostalCode","_commonPPContextState9","_commonPPContextState10","arNo","relatedEntityId","attachmentName","_commonPPContextState11","DSS","attachFinalAdditionalResellerGridCallbacks","dealNameAction","setdealNameAction","setcaseStatus","setMPNOrgID","setMPNLocationID","setPartnerRole","showPartnerDetail","setShowPartnerDetail","isPartnerDetailHidden","setisPartnerDetailHidden","loadingData","setLoadingData","setIsRequestor","_tabNames$filter","selectedDealValue","_oppDealdetails$oppor","dealNameAndAction","MPNLocAndCountry","RoleName","ispartnerHidden","DefaultLabelRendererText","defaultRender","_commonPPContextState15","_pivotTab$errors10","_commonPPContextState16","_commonPPContextState17","_pivotTab$errors11","_commonPPContextState19","_pivotTab$errors12","_commonPPContextState20","_commonPPContextState21","_commonPPContextState22","_commonPPContextState23","_pivotTab$errors13","_commonPPContextState24","_commonPPContextState25","_commonPPContextState26","_commonPPContextState27","_commonPPContextState28","_commonPPContextState29","_pivotTab$errors14","_commonPPContextState30","_commonPPContextState31","_commonPPContextState32","_commonPPContextState33","_commonPPContextState34","_commonPPContextState35","_pivotTab$errors15","_commonPPContextState36","_commonPPContextState37","_commonPPContextState38","_commonPPContextState39","_commonPPContextState40","_commonPPContextState41","_pivotTab$errors16","_commonPPContextState42","_commonPPContextState43","_commonPPContextState44","_selectedOptyDeal$dea8","_commonPPContextState45","_commonPPContextState46","_commonPPContextState47","_selectedOptyDeal$dea9","_pivotTab$errors17","_commonPPContextState48","_commonPPContextState49","_commonPPContextState50","_selectedOptyDeal$dea10","_pivotTab$errors18","_commonPPContextState51","_selectedOptyDeal$dea11","_commonPPContextState52","_pivotTab$errors19","_commonPPContextState53","_commonPPContextState54","_commonPPContextState55","_pivotTab$errors20","_commonPPContextState56","setIsRfpRfqPublicTender","isRfpJustificationRequired","setIsRfpJustificationRequired","rfpJustificationRequiredError","setrfpJustificationRequiredError","deviceShipToCountryName","isMultiDealType","_pageContext$opportun2","_$uniq","_t$dealType","setDealVerticalValue","setEmailValue","dealVerticalVal","_t$countryName","dealAttachments","targetPropertyName","properId","onDealTextBoxChange","onDealAddressTextBoxChange","_pivotTab$errors8","_pivotTab$errors9","DealDetailsJson","DealInfoNewCustomerWarning","_commonPPContextState13","_commonPPContextState18","DealInfoDealOverviewForMSStore","DealInfoDealOverview","DealInfoCustomerDomain","_pivotTab$errors6","onCusotmerTextBoxChange","_newValue","_newValue2","isValidInterger","_commonPPContextState14","_event$currentTarget","allChannelContacts","dealSource","_newValue3","_newValue5","matchingCCDealContacts","emailCCDealContact","_newValue4","compoennts","No","DealInfoPublicTenderJustification","_pivotTab$errors7","DealInfoPublicTenderAttachments","_commonPPContextState12","initialFinalTierResellerValue","initialAdditionalResellerValue","onResellerLoaded","_replaceMEToUAEForDis","_getGridDisplayItems","_getGridDisplayItems2","loggedInUserRole","defaultMSStoreSellerName","getRegionalCountries","setAddtionalResellerEditGridItems","requesterAccount","setRequesterAccount","distributorItems","initialDistributorCountry","setInitialDistributorCountry","selectedDistributorCountry","setSelectedDistributorCountry","setInitialResellerType","currentFinalTierIndex","setCurrentFinalTierIndex","addFinalResellerButtonStatus","setAddFinalResellerButtonStatus","addSaveNextButtonStatus","setAddSaveNextButtonStatus","addAdditionalResellerButtonStatus","setAdditionalFinalResellerButtonStatus","additonalReselleraddSaveNextButtonStatus","setAdditionalResllerAddSaveNextButtonStatus","currentAdditionalResellerIndex","setCurrentAdditionalResellerIndex","setErrorFields","additionalErrorFields","setAdditionalErrorFields","showFinalResellerPanel","openFinalResellerPanel","dismissFinalResellerPanel","showAddtionalResellerPanel","_useBoolean4$","openAddtionalResellerPanel","dismissAddtionalResellerPanel","setIsInitial","msStoreSalesChannel","setMsStoreSalesChannel","finalTierReseller","setFinalTierReseller","addtionalReseller","setAddtionalReseller","_regionalCountries$","updatedDistributors","onPanelClick","initialSelectedDistributors","onPanelFieldClick","onCountryChange","getTextFieldErrorMessageMsStore","onFinalTierFieldChange","fieldId","onAdditionalResellerChange","filteredAttachments","_filteredAttachments$","resellerFieldMapping","fieldKeys","finalTierErrorValues","fieldValue","fieldVal","additionalResellerErrorValues","fallbackValue","itm","contextData","currentIndex","distributorColumnDefinitions","distributorTableConfigurations","onResellerOrDistributorChange","onAddButtonClicked","isResellerAdd","requestor","getNewOpportunityAccount","getNewOpportunityChannelContact","_ref9","getDistributors","updateMSStoreCompleteFlag","finalResellerItems","ftNo","additionalResellerItems","getMSStoreEmailErrorMessage","getGridDisplayItems","gridItems","onFinalAddtionalResellerEdit","onRenderFinalAddtionalResellerEdit","onFinalAddtionalResellerDelete","onRenderFinalAddtionalResellerDelete","onDistributorOwnerChange","existingOpportunityAccounts","existingOwner","_x$accounts","act","_distributorAccount$a","distributorAccount","onRenderDistributorEmail","onRenderDistributorDelete","_find2","onDistributorsDelete","_pivotTabChannel$erro4","addRequestorAccount","msContact","user","accountName","requestorAccount","onMSStoreTextFieldChange","OnFlowDownLinkClick","getDocumentFromBlob","addSaveResellerButtonInEdit","addAdditionalResellerButtonInEdit","_ref8","addSaveFinalButtonInEdit","addFinalResellerButtonInEdit","errorValues","emptyDataIndex","updatedAdditionalResellerGridItems","additionalResellers","newFormField","currentAdditionalItems","updatedFinalResellerGridItems","currentFinalTierItems","BusinessUnitProductSearch","businessUnitGridConfig","setBusinessUnitGridConfig","SelectedBusinessUnit","businessUnitSelectionGridConfig","setBusinessUnitSelectionGridConfig","productSelectionGridConfig","setProductSelectionGridConfig","isSpecialPricingDeal","setIsSpecialPricingDeal","isDealRegistraionDeal","setIsDealRegistraionDeal","dealRegistraionDealId","setDealRegistraionDealId","specialPricingDealId","setSpecialPricingDealId","idBUGetter","idPFAMGetter","searchBarString","setSearchBarString","showDR","setShowDR","showSP","setShowSP","hideCasecadeMessageNotes","setHideCasecadeMessageNotes","hideCasecadeMessageDialog","setHideCasecadeMessageDialog","isRenewalCascadeDisabled","showProductSearchFilters","setShowProductSearchFilters","inactiveBUs","setInactiveBUs","customerCountryDealTypes","setCustomerCountryDealTypes","invalidPfams","setInvalidPfams","buSearchstore","defaultPFAMSearchstore","pfamSearchstore","isCascadePopUpViewed","temporaryCustomerCountryDealTypes","specialPricingDeal","dealRegistrationDeal","showDRCase","showSPCase","_products","savedproductFamily","_inactiveProducts","_savedproductFamily","inactiveProducts","_inactiveProducts2","_inactiveProducts3","_savedproductFamily2","_inactiveProducts4","resetSelectionGrid","defaultSearch","inavalidPfamList","searchBarValue","searchFilterExpression","_customerCountry","tempDeal","_searchData","_groupedData2","_country$countryName","groupProductSearchData","selectedProductSearchConfig","createFilterString","invalidPfamsForSpecialPricing","applicableForSpecialPricing","pagemode","allowUpdateProductFamily","applicableDealsArray","applicableDeals","businessunit","ApplicableDeals","isSelectedProductFamilyConfig","_d$dealType","_d$dealType2","checkProductsSelected","deletedDataFromDeleteAll","deletedData","selectedPFAMConfig","selectedBUConfig","selectedPFAM","selectedBU","deleteRowFromSelectionGrid","refreshedBUGridData","deletedSelectedProductConfig","_country$countryName2","createDealTypeFilterString","removeTrailingCharactersFromFilterString","dealRegistraionDeal","channelType","countriesDropDownData","isOpenCasePanel","setIsOpenCasePanel","customerJson","customerOption","setCustomerOption","setCustomerGridData","selectedPricingPrograms","setselectedPricingPrograms","setResetPaginationToDefault","showCustomerGrid","setShowCustomerGrid","hideCustomerSearchFilterBtn","setHideCustomerSearchFilterBtn","customerDecision","isUnManagedCustomerDecisionMade","selectedDeals","allDeals","_t$name","_t$name2","_t$name3","_oppDeal$dealType$nam","selectedFacetValues","_searchConfig$kendoGr","facetExpression","apiResults","customerSearchResultsData","customerCount","_apiReturnedData","_apiResults","_apiResults2","_customerCount","_customerSearchResultsData","managedRecords","unManagedRecords","getPricingProgramAllDistinctCustomerSearchResults","getPricingProgramCustomerSearchResults","IsManagedAccount","setFilterDatasource","ReviewDecision","DunsNumber","setDealCustomerData","customerEdit","selectedCustomerCountry","domain","showCustomerSearchFilters","setShowCustomerSearchFilters","_selectedPartnerCusto","_selectedPartnerCusto2","selectedPartnerCustomerCountry","CustomerSearchJson","_customerSearchGridCo2","cloneDeep","_customerSearchGridCo","_t$name4","_t$name5","_x$dealType","newoppDeal","_newoppDeal$dealCusto","existingCustomer","CreateForm","_props$pageContext4","_props$pageContext5","showSuccessMessage","setShowSuccessMessage","showContinueButton","setShowContinueButton","showSubmitButton","setShowSubmitButton","showCommandButtons","setShowCommandButtons","isFormLoading","setIsFormLoading","_t$dealVolume","_t$savedDealVolume","_t$products","setOpportunityDealProductsGuidToEmpty","isDealInformationTabIncomplete","isCutomerTabIncomplete","isProductTabIncomplete","_optyDeals","productTabErrors","optyDeals","_t$products2","validateData","_optyDeals2","customerTabErrors","_t$dealCustomers","_optyDeals5","_optyDeals3","_optyDeals4","dealInfoTabErrors","selectedDealMinimumThreshold","_t$dealAddress","_t$dealAddress2","_t$dealAddress3","_t$dealAddress4","_t$dealVolume2","_t$dealVolume3","_t$dealVolume4","dealInfoAttachments","emailCC","requestorsChannelFunctionality","channelTabErrors","validateChannelMsStore","validatePartner","optyChannelContact","validateChannelContactEmails","targetProperty","validAccount","channelContactEmail","hubErrorMessage","optyAccountId","_opportunityData$oppo","opportunityData","_optyDeal$geoCountrie","_optyDeal","_optyDeal2","_optyDeal2$products","_opportunityData$oppo2","_opportunityData$oppo3","_deal$geoCountries","_deal$products","g","_props$pageContext","_props$pageContext2","_props$pageContext3","blue","showButtonsBasedonTabChange","createFormJson","PricingProgramFormMain","partnerProps","_useForm$formState","formState","isDirty","_getSelectedDeal","CasePartnerDetailForm","mpnLocationProductTypes","setMPNLocationProductTypes","setOrganizationId","setLocationId","setAccountId","locationDropdown","setLocationDropdown","productDropdown","setProductDropdown","mpnCountryName","setMPNCountryName","mpnCountryId","setMPNCountryId","mpnLocationCountry","setMPNLocationCountry","setProductGroupValue","disableContinue","setDisableContinue","displayMessageText","displayMessageNote","productRoles","setProductRoles","dropdownRef","createRef","isInternalUser","setIsInternalUser","partnerPaddingStyle","mdppAccessibilitySetPageTitle","_dropdownRef$current","_dropdownRef$current$","_dropdownRef$current2","_dropdownRef$current3","_dropdownRef$current4","organizationLocationIds","locationProductTypes","mpnOrganizationLocation","locDropdown","locArray","setProductsAndRoles","prodDropdown","productRole","prod","excludeUserRole","eachProduct","getProductGroups","locId","InternalUserSearchCaseSubmissionText","PartnerSearchCaseSubmissionText","PartnerSearchCaseSubmissionNote","_option$key","_dropdownRef$current5","_dropdownRef$current6","_dropdownRef$current7","CasePartnerDetail","CustomKendoGridCellConstants","navigationAttributes","ariaColumnIndex","GRID_COL_INDEX_ATTRIBUTE","columnIndex","opportunityDealName","onRenderItem","subMenuProps","resetIcon","onRenderOverflowButton","overflowItems","MultiSelectDropDown","setMenuItems","setSelectedKeys","bindGridColumns","_props$dashBoardData","tempMenuItems","onCheckBoxChange","selecteditems","populateColumnsOnGrid","updatedGridColumns","updateDashboardGridConfig","updateSessionDataConfig","gridColumns","_props$updateDashboar","updateDashboardGridColumnsData","onReset","_props$updateDashboar2","defaultGridState","OverflowSet","CommandButton","itemType","ContextualMenuItemType","calloutMaxHeight","SkuComponent","productSku","skuData","partNumber","Highlighter","highlightClassName","searchWords","autoEscape","textToHighlight","messages","DashboardGrid","_filterBy","_filterBy2","_props$kendoGridProps23","_props$kendoGridProps24","_props$kendoGridProps25","initialPageState","initialPageStateChildGrid","setColumns","isDownloading","setIsDownloading","ExportIcon","setExcelData","localeMessageForMoreRecords","setlocaleMessageForMoreRecords","setFilterValue","MandatoryHeaderCell","listboxes","listbox","span","excelExport","_props$excelExport","userMainRoleIsMSS","pricingData","finalData","BidGrid","CPStrategicCaseView","ProductInformationView","_sort","isAllCasesDashboardRequest","getProductinformationDashboardData","getPricingProgramDashboardData","item1","resellerORDistributorNames","menuConfig","pagerSettings","buttonCount","previousNext","updateCaseActionOnPageChange","_gridData$slice","selectedRowId","defaultFilter","columnName","loadMessages","CheckBoxFilterMenu","gridPropsFilter","_StatusCodeFilterValu","getValuesForCheckboxList","GridColumnMenuCheckboxFilter","FilterMenuCheckboxFilter","LocalizationProvider","language","_props$onGetDataReque","filter1","getFullYear","dataState","onGetDataRequest","_props$onGetDataReque2","_props$onGetDataReque3","rowType","onRadioSelectionChange","BidGridCase","dealBidGrid","setDealBidGrid","isCaseLoading","setIsCaseLoading","setpageNumber","bgData","setBGData","setAllCountries","setProduct","initialData","setInitailData","setSearchValue","_yield$nextGenService","_yield$nextGenService2","_element$businessUnit","_element$productFamil","excelRow","SkuName","SkuNumber","customDiscount","customDiscounts","discount","discountTier","getBidGrid","pageNo","_allCountries$find","DRConfig","getBidGridDashboardData","getExcelColumns","filteredList","originalData","_element$productSku","_ele$partNumber","_element$productSku2","bidgridSKUdeal","filteredSKUList","sku","_sku$partNumber","boundDynamicColumns","dynamicGridColumns","dynamicCol","ComboBox","stackTokensForOverlayButtons","stackTokensForDialog","AddToCase","showGrid","setShowGrid","showLoadingResellersSpinner","setShowLoadingResellersSpinner","showSubmittingAddCaseToDashboardSpinner","setShowSubmittingAddCaseToDashboardSpinner","showAccountCountry","setShowAccountCountry","_React$useState12","disableSubmit","setDisableSubmit","_React$useState14","casIdValue","setCasIdValue","resellerNameValue","setResellerNameValue","disableSearch","setDisableSearch","_React$useState20","resellerGridData","setResellerGridData","setOpportunityData","_React$useState23","_React$useState24","selectedReseller","setSelectedReseller","_React$useState25","_React$useState26","selectedFile","setSelectedFile","_React$useState27","_React$useState28","isFilePicked","setIsFilePicked","_React$useState29","_React$useState30","isRadioSelected","setIsRadioSelected","_React$useState31","_React$useState32","selectedADDAccount","setSelectedADDAccount","_React$useState33","_React$useState34","showSelectADDAccount","setShowSelectADDAccount","_React$useState35","_React$useState36","setDisableSelectADDAccount","_React$useState37","_React$useState38","aDDAccounts","setADDAccounts","_React$useState39","_React$useState40","setChannelContactEmails","emailError","setEmailError","_React$useState41","_React$useState42","errorMsg","setErrorMsg","_React$useState43","_React$useState44","showAddMessageBar","setAddShowMessageBar","_React$useState45","_React$useState46","errorMessageType","setErrorMessageType","_React$useState47","_React$useState48","msgBarText","setMsgBarText","toggleMultiline","resetInputField","fileUploadControlLocaleMessages","onFileUpload","onResellerSelect","_onResellerSelect","resellerData","_resellerData$country","GetADDAccounts","opportunityProductTypeId","clearOverlayData","onSuccess","resellerCountryId","_userRoleDetails2","userCountryIds","allADDCountries","resellerGeoCountries","_user$productType","ua","_allADDCountries$find","onADDAccountSelectChange","_selectFilesButtonCon","messageBox","IsCasIdSame","newOpportunityNumber","dataSet","oldOpportunityNumber","isEqual","isCPSDeal","_JSON$parse","partnerAccountId","emails","requestInitiatedBy","AddOpportunityAccountToCase","successMsg","AddOpportunityAccount","caseId","validateCaseAndReseller","OpportunityData","searchReseller","IntlProvider","locale","restrictions","maxFileSize","allowedExtensions","defaultFiles","onRemove","separator","emailsList","validateEmails","DashboardSearch","setAllResellers","selectedResellersByGeo","setSelectedResellersByGeo","disablePartnerFilter","setDisablePartnerFilter","selectedADD","setSelectedADD","allADDAccounts","setAllADDAccounts","allResellersWithPartnerType","setAllResellersWithPartnerType","selectedADDWithPartnerType","setSelectedADDWithPartnerType","selectedResellerWithPartnerType","setSelectedResellerWithPartnerType","selectedPartners","setSelectedPartners","isSubmitted","setIsSubmitted","isCleared","setIsCleared","getADDAccounts","getAllActiveResellers","_props$onfilterByPart","onfilterByPartner","uniqueResellerData","getAllResellers","distinctUserAccounts","_ua$productType","isClearable","adrCountryId","_allCountries$find2","_allCountries$find3","selectedResellerGeo","finalfilteredResellers","filteredlist","getSelectedResellersBasedonCountry","adr","setGridConfig","isRefreshed","setIsRefreshed","setPageNumber","setData","cpStrategicCount","setCpStrategicCount","nonCpStrategicCount","setNonCPStrategicCount","otleCount","setOtleCount","filteredPartnerAccount","setfilteredPartnerAccount","gridDataState","setGridDataState","showMessageBarOnDashboard","setshowMessageBarOnDashboard","resetDashboardMessageBarChoice","getAllCases","onAddToCaseCallBack","onRefresh","isFilterApplied","pageChanged","allPricingPrograms","searchedCaseNumber","_dataState$filter","_dataState$filter$fil","_dataState$filter$fil2","resellerOrDistributorFilters","newGridConfig","toJSON","getResellerAndDistiNames","unionBy","item2","NonCPStrategicDeals","CPStrategicDeals","OtleDeals","isSortingOrFilterAppliedOrRemoved","initiateRefresh","addRefreshIcon","messageType","messageText","isReloadData","resetHideDialog","CPStrategicDealReportGrid","KendoGridProps","CPStrategicDealReport","activeDashboardConfig","opportunitDeals","setCPStrategicDealReportGridData","activeTabConfig","setactiveTabConfig","_props$opportunitDeal","_props$opportunitDeal2","CPStrategicCaseViewGrid","setSelectedPivot","dashboardData","cpStrategicCaseViewGridData","setCPStrategicCaseViewGridData","cpStrategicDealReportGridData","cpStrategicCompleteGridData","setCPStrategicCompleteGridData","renderDashboradTabs","sqlRecordCount","setSqlRecordCount","getCPStrategicCaseView","tpids","_loggedInUserInfo$use2","surfaceSpecialistUserDetails","cpStrategicCaseViewData","casesAssociatedWithTPID","SurfaceSpecialist","flatMap","tPIDs","isCaseAssociatedWithTPID","cpStrategicGridData","getCPStrategicGridData","kPagerNumber","eachConfig","_eachConfig$allowCase","thisPivot","DealRegistrationCase","dealRegistration","setDealRegistration","drData","setDRData","getDealRegistration","DrConfig","SpecialPricingProductInformation","productInformation","setproductInformation","productInformationData","setproductInformationData","getProductInformationData","spConfig","productConfig","specialPricing","setSpecialPricing","spData","setSpData","getSpecialPricingCases","LocalEmpowermentSpecialPricingDashboard","spLocalEmpowerment","setSPLocalEmpowerment","getSPLocalEmpowermentCases","oneTimeLocalEmpowerment","setOneTimeLocalEmpowerment","otleData","setOtleData","getOTLECases","otleConfig","Main","_onNavCollapsed","isNavCollapsed","_onShowMoreResultsCallback","searchResult","showSearchDetails","_goBackClicked","SetOnsearchDetailsView","_onClickSuggestionItem","clickPluginInstance","ClickAnalyticsPlugin","configObj","instrumentationKey","extensions","identifier","autoCapture","dataTags","customDataPrefix","useDefaultContentNameOrId","parentDataTag","captureAllMetaDataContent","autoTrackPageVisitTime","enableAutoRouteTracking","disableFetchTracking","enableRequestHeaderTracking","enableResponseHeaderTracking","appInsights","ApplicationInsights","loadAppInsights","trackPageView","loggedInUserDetails","_loggedInUserInfo$ema","_loggedInUserInfo$org","validatedId","validatedAccountId","setAuthenticatedUserContext","Customizer","CoherenceCustomizations","renderHeader","BrowserRouter","renderLeftMenu","exact","ScrollablePane","CoherenceSearchDetails","onNavItemClicked","onShowMoreResultsCallback","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.0f287583.chunk.js","sourcesContent":["/**\r\n * Enum for CustomerType.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum CustomerType {\r\n\r\n /**\r\n * Primary value.\r\n */\r\n Primary = 1,\r\n\r\n /**\r\n * Affiliates value.\r\n */\r\n Affiliates = 2,\r\n}","/**\r\n * Session Storage Constants.\r\n * @constant\r\n */\r\n export const SessionStorageConsts = {\r\n productTypes: \"productTypes\",\r\n countries: \"countries\",\r\n distributors: \"distributors\",\r\n verticals: \"verticals\",\r\n contactRoles: \"contactRoles\",\r\n dealTypes: \"dealTypes\",\r\n dealDurationConfig: \"dealDurationConfig\",\r\n dealVolumeConfig: \"dealVolumeConfig\",\r\n pageMode: \"pageMode\",\r\n pageSubMode: \"pageSubMode\",\r\n userDetail: \"userDetail\",\r\n loggedInUserInfo: \"loggedInUserInfo\",\r\n userRoleDetails: \"userRoleDetails\",\r\n userRole: \"userRole\",\r\n userSubRole: \"userSubRole\",\r\n userCountries: \"userCountries\",\r\n opportunityProductType: \"opportunityProductType\",\r\n correlationId: \"correlationId\",\r\n userEmail: \"userEmail\",\r\n industries:\"industries\",\r\n guidanceTexts:\"guidanceTexts\",\r\n selectedColumns:\"selectedColumns\",\r\n opportunityNumber:\"oppNumber\",\r\n selectedDeal: \"selectedDeal\",\r\n dealQuantityThresholdConfigs: \"dealQuantityThresholdConfigs\",\r\n selectedPageSizes: \"SelectedPageSizes\",\r\n userRequestedUrL: \"userRequestedUrl\",\r\n resourceStrings: \"resourceStrings\",\r\n isChatbotEnabled: \"isChatbotEnabled\",\r\n nextGenAPIBearerToken: \"bearerToken\",\r\n nextGenAPIPCUserToken: \"userToken\",\r\n}","/**\r\n * Enum for PageMode.\r\n * @readonly\r\n * @enum {number}\r\n */\r\n export enum PageMode {\r\n\r\n /**\r\n * Create value.\r\n */\r\n Create = \"create\",\r\n\r\n /**\r\n * Edit value.\r\n */\r\n Edit = \"edit\",\r\n\r\n /**\r\n * View value.\r\n */\r\n View = \"view\",\r\n}","/**\r\n * Enum for SaveOpportunityStatusCodes.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum OpportunityDealStatusCodes {\r\n\r\n /**\r\n * Draft value.\r\n */\r\n Draft = 441820000,\r\n\r\n /**\r\n * Cancelled value.\r\n */\r\n Cancelled = 100000012,\r\n\r\n /**\r\n * Forced Expire value.\r\n */\r\n ForcedExpire = 441820002,\r\n\r\n /**\r\n * Approved value.\r\n */\r\n Approved = 100000011,\r\n\r\n /**\r\n * DealPricingApprovedPendingChannelStatus value.\r\n */\r\n DealPricingApprovedPendingChannelStatus = 441820001,\r\n\r\n /**\r\n * Denied value.\r\n */\r\n Denied = 441820004,\r\n\r\n /**\r\n * In Progress value.\r\n */\r\n InProgress = 100000000,\r\n\r\n /**\r\n * Unassigned value.\r\n */\r\n Unassigned = 100000008,\r\n\r\n /**\r\n * Expired value.\r\n */\r\n Expired = 100000013,\r\n\r\n /**\r\n * Need More Info.\r\n */ \r\n NeedMoreInfo = 100000005,\r\n\r\n /**\r\n * InComplete.\r\n */ \r\n Incomplete = 552590000, \r\n \r\n /**\r\n * DraftRenew.\r\n */ \r\n DraftRenew = 100,\r\n\r\n /**\r\n * InsufficientInformation.\r\n */ \r\n InsufficientInformation = 100000009,\r\n\r\n /**\r\n * PendingSecondaryReview.\r\n */ \r\n PendingSecondaryReview = 552590003,\r\n}","/**\r\n * Enum for OpportunityDealStatusCodeNames.\r\n * @readonly\r\n * @enum\r\n */\r\nexport enum OpportunityDealStatusNames {\r\n /**\r\n * Draft Name.\r\n */\r\n Draft = \"Draft\",\r\n\r\n /**\r\n * Cancelled Name.\r\n */\r\n Cancelled = \"Cancelled\",\r\n\r\n /**\r\n * Forced Expire Name.\r\n */\r\n ForcedExpire = \"Early Expired\",\r\n\r\n /**\r\n * Approved Name.\r\n */\r\n Approved = \"Approved\",\r\n\r\n /**\r\n * DealPricingApprovedPendingChannel Name.\r\n */\r\n DealPricingApprovedPendingChannel = \"Deal Pricing Approved - Pending Channel\",\r\n\r\n /**\r\n * Denied Name.\r\n */\r\n Denied = \"Denied\",\r\n\r\n /**\r\n * Decision Pending Name.\r\n */\r\n DecisionPending = \"Decision Pending\",\r\n\r\n /**\r\n * Expired Name.\r\n */\r\n Expired = \"Expired\",\r\n\r\n /**\r\n * Need More Info.\r\n */ \r\n NeedMoreInfo = \"Need More Info\", \r\n\r\n /**\r\n * InComplete.\r\n */ \r\n Incomplete = \"Incomplete\", \r\n \r\n /**\r\n * DraftRenew.\r\n */ \r\n DraftRenew = \"Draft Renew\",\r\n\r\n /**\r\n * InsufficientInformation.\r\n */\r\n InsufficientInformation = \"Insufficient Information\",\r\n\r\n /**\r\n * PendingSecondaryReview.\r\n */\r\n PendingSecondaryReview = \"Pending Secondary Review\",\r\n}\r\n","/**\r\n * Application Constants.\r\n * @constant\r\n */\r\nexport const \r\nApplicationConstants = {\r\n microsoftEmail: \"@microsoft.com\",\r\n\r\n //Customer Search Constants\r\n CustomerSearchSuggesterName: \"mdppsuggester\",\r\n CustomerSearchSelectColumn: \"OrganizationName\",\r\n TopSearchSuggesstions: 50,\r\n IsFuzzy: false,\r\n CustomerSearchCountryGlobalIndex: \"Country\",\r\n CustomerSearchCascadeCountryGlobalIndex: \"CascadeCountry\",\r\n CustomerSearchIndex: \"customersearch-index\",\r\n CRMChildAccountFacetName: \"CRMChildAccountName\",\r\n AddressFacetName: \"AddressLine1\",\r\n CityFacetName: \"City\",\r\n PostalCodeFacetName: \"PostalCode\",\r\n StateFacetName: \"StateProvince\",\r\n CRMIDFacetName: \"CRMID\",\r\n ChildCRMIDFacetName: \"ChildCRMID\",\r\n TPIDFacetName: \"TPID\",\r\n GPIDFacetName: \"GPID\",\r\n DunsNumberFacetName: \"DunsNumber\",\r\n CustomerSearchFacetNames: ['CRMChildAccountName', 'AddressLine1', 'City', 'PostalCode', 'StateProvince', 'ChildCRMID', 'TPID', 'GPID', 'DunsNumber'],\r\n DealCustomerDomain: \"dealCustomerDomain\",\r\n \r\n //Product Search Constants\r\n ProductSearchSuggesterName: \"productsuggester\",\r\n DistinctProductSearchSuggesterName: \"distinctproductsuggester\",\r\n ProductSearchSelectColumn: \"PfamName\",\r\n ProductSearchCountryGlobalIndex: \"Country\",\r\n ProductSearchIndex: \"productsearch-index\",\r\n ProductSearchProductType: \"ProductType\",\r\n DistinctProductSearchIndex: \"distinctproductsearch-index\",\r\n ProductSearchApplicableDeals: \"ApplicableDealsCollection\",\r\n ProductSearchProductTypeId: \"ProductTypeId\",\r\n ProductSearchGlobalFilter: \"ProductSearchGlobalFilter\",\r\n SpecialPricingApplicableDeal: 2,\r\n DealRegistrationApplicableDeal: 1,\r\n CPStrategicApplicableDeal: 4,\r\n OTLEApplicableDeal: 5,\r\n ProductFamilyCodeFacetName: \"ProductFamilyCode\",\r\n ProductFamilyNameFacetName: \"PfamName\",\r\n BusinessUnitFacetName: \"BusinessUnit\",\r\n SkuNameFacetName: \"SkuName\",\r\n SkuPartNumberFacetName: \"SkuPartNumber\",\r\n CountryFacetName: \"Country\",\r\n InternalPricingProgramProductSearchFacetNames: ['ProductFamilyCode', 'PfamName', 'BusinessUnit', 'SkuName', 'SkuPartNumber', 'Country'],\r\n InternalPricingProgramDistinctProductSearchFacetNames: ['ProductFamilyCode', 'PfamName', 'BusinessUnit', 'Country'],\r\n ProductSearchFacetNames: ['PfamName', 'BusinessUnit', 'SkuName', 'SkuPartNumber'],\r\n DistinctProductSearchFacetNames: ['PfamName', 'BusinessUnit'],\r\n BusinessUnitProductSearchSuggesterName: \"businessunitsuggester\",\r\n BusinessUnitProductSearchIndex: \"businessunitproductsearch-index\",\r\n BusinessUnitSearchSelectColumn: \"BusinessUnit\",\r\n ProductSearchChannelType: \"ChannelType\",\r\n DirectChannelType: 1,\r\n IndirectChannelType: 2,\r\n InternalDealVisibility: \"InternalDealVisibility\",\r\n ExternalDealVisibility: \"ExternalDealVisibility\",\r\n UnitsCommitted: \"UnitsCommitted\",\r\n Quantity: \"quantity\",\r\n OTLESelectedProductsGridName: \"Selected Product(s) for One-time Local Empowerment\",\r\n\r\n //Search Constants\r\n CognitiveSearchType: \"simple\",\r\n CognitiveSearchMode: \"all\",\r\n CognitiveSearchModeAny: \"any\",\r\n CognitiveSearchMaxResults: 1000,\r\n LegalEntitySelectionUnitstransact: \"unitsCommitted\",\r\n LegalEntitySelectionIsPrimary: \"selected\",\r\n LegalEntityUploadDealVolumn: \"DealVolume\",\r\n NumericEditorType: \"numeric\",\r\n QueryKey: \"5A55E1313C812847ECC5B70BFD84A578\",\r\n CustomerSearchServiceEnv: \"customersearch-dev\",\r\n FacetCount: 100,\r\n DefaultUserRole: \"MSS\",\r\n LoggedinUserRole: \"Owner\",\r\n DefaultDashBoardCaseView: \"CP Strategic Case View\",\r\n CPstrategicPageName: \"cpstrategic\",\r\n OpportunityNumberParamName: \"oppNumber\",\r\n OpportunityDealNumberParamName: \"oppDealNumber\",\r\n IsEUEFTA: \"isEUEFTA\",\r\n DebugParam: \"debug\",\r\n\r\n DecisionTypeName: \"decisionTypeName\",\r\n BusinessUnitName: \"businessUnitName\",\r\n PfamName: \"name\",\r\n PfamCode: \"productFamilyCode\",\r\n ProductFamilyName: \"productFamilyName\",\r\n DiscountValueApiField: \"discountValue\",\r\n DiscountTitle: \"Discount %\",\r\n CoreDiscountTitle: \"Core Discount %\",\r\n BoosterDiscountTitle: \"New Customer Booster Discount %\",\r\n TotalDiscountTitle: \"Total Discount %\",\r\n DiscountAmountTitle: \"Discount Amount\",\r\n Country: \"COUNTRY\",\r\n MinLengthForResellerName: 3,\r\n CaseCopyCutOffInMonths: 3,\r\n AllVertical: \"ALL\",\r\n EditPendingReview: \"Edit Pending Review\",\r\n DeniedStatus: \"Denied\",\r\n DealPeriodDate: \"dealPeriodStartDate\",\r\n ApprovedStatus: \"Approved\",\r\n ExpiredStatus: \"Expired\",\r\n LegalEntityType: \"legalEntityType\",\r\n ADRDMPResellerType: \"ADR/DMP\",\r\n PartnerType: \"partnerType\",\r\n CustomerSearchTopThreshold: 1000,\r\n MiddleEastRegion: \"Middle East\",\r\n SaudiArabia: \"Saudi Arabia\",\r\n MiddleEastCountry: \"Middle East\",\r\n Egypt: \"Egypt\",\r\n UAE: \"United Arab Emirates\",\r\n SouthAfrica: \"South Africa\",\r\n AndOperator: \"and\",\r\n OrOperator: \"or\",\r\n Eu: \"EU\",\r\n Eq: \"eq\",\r\n Ne: \"ne\",\r\n PricingProgramCustomerSearchIndex: \"pricingprogramcustomersearch-index\",\r\n PricingProgramCustomerCustomerSuggesterName: \"mdppcustomersuggester\",\r\n CustomerSearchFilterFacetNames: ['DunsNumber'],\r\n LegalEntityName: \"legalEntityName\",\r\n\r\n // Pricing Program Dashboard Names\r\n SpecialPricing: \"Special Pricing\",\r\n DealRegistration: \"Deal Registration\",\r\n OTLE: \"OTLE\",\r\n CPStrategic: \"CP Strategic\",\r\n CPStrategicCases: \"Custom Pricing Strategic Cases\",\r\n AllCases: \"All Cases\",\r\n productInformationGrid: \"Product Information View\",\r\n SPLocalEmpowermentCases:\"Special Pricing (Local Empowerment)\",\r\n OTLECases:\"One Time Local Empowerment\",\r\n\r\n // Case action constants\r\n DRThresholdQuantity: 1,\r\n SPThresholdPercentage: 70,\r\n\r\n //bidGrid Excel Static Columns\r\n skuName:\"SkuName\",\r\n skuNumber:\"SkuNumber\",\r\n EnLocaleForGrid: \"en\",\r\n\r\n EnLocaleForGridForMoreRecord: \"en-EN\",\r\n // General constant\r\n Cases: \"Cases\",\r\n ProductInformationforSpecialPricing: \"Product Information for Special Pricing\",\r\n SPLocalEmpowermentTitle: \"Special Pricing (Local Empowerment)\",\r\n Chatbot: \"chatbot\",\r\n\r\n //Dashboard Routes\r\n ProductViewSPRoute: \"/dashboard/productviewsp\",\r\n SpecialPricingRoute: \"/dashboard/specialpricing\",\r\n DealRegistrationRoute: \"/dashboard/dealregistration\",\r\n CPStrategicRoute: \"/dashboard/cpstrategic\",\r\n AllCasesRoute: \"/dashboard/allcases\",\r\n SPLocalEmpowerment:\"/dashboard/splocalempowerment\",\r\n OTLERoute:\"/dashboard/otle\",\r\n PricingProgramAllDistinctCustomerSearchIndex: \"distinctcustomersearch-index\",\r\n PricingProgramAllDistinctCustomerSearchIndexApiUrl:'/indexes/distinctcustomersearch-index/docs/search?api-version=2020-06-30',\r\n PricingProgramCustomerSearchIndexApiUrl: '/indexes/pricingprogramcustomersearch-index/docs/search?api-version=2020-06-30',\r\n ProductSearchIndexApi_Url: '/indexes/productsearch-index/docs/search?api-version=2020-06-30',\r\n DistinctProductSearchIndexApiUrl: '/indexes/distinctproductsearch-index/docs/search?api-version=2020-06-30',\r\n CustomerSearchIndexApiUrl:'/indexes/customersearch-index/docs/search?api-version=2020-06-30',\r\n BuProductSearchApiUrl:'/indexes/businessunitproductsearch-index/docs/search?api-version=2020-06-30',\r\n StatusCodeColumnName: \"statusCodeName\",\r\n ClosureDecisionColumnName: \"closureDecisionString\",\r\n recordsToFetch: 1000,\r\n otlePageName: \"otle\",\r\n\r\n AccessTokenRefreshTimeInMinutes: 5,\r\n}","/**\r\n * Enum for ActionType.\r\n * @readonly\r\n * @enum \r\n */\r\nexport enum ActionType {\r\n\r\n /**\r\n * Add Action.\r\n */\r\n Add = \"Add\",\r\n\r\n /**\r\n * Update Action.\r\n */\r\n Update = \"Update\",\r\n\r\n /**\r\n * Delete Action.\r\n */\r\n Delete = \"Delete\",\r\n\r\n /**\r\n * Created Action.\r\n */\r\n Created = \"Created\",\r\n\r\n /**\r\n * PanelAdd Action.\r\n */\r\n PanelAdd = \"PanelAdd\", \r\n}","/**\r\n * Text, button, aria text for UI controls.\r\n * @constant\r\n */\r\nexport const UIControlsText = {\r\n CancelText: \"Cancel\",\r\n OkText: \"OK\",\r\n None: \"None\",\r\n ConfirmTitle: \"Confirm\",\r\n ConfirmCancelMessage: \"There are unsaved changes on the page. Are you sure you want to Cancel and navigate to Home?\",\r\n SaveDraftText: \"Save as Draft\",\r\n ContinueText: \"Continue\",\r\n DealNameText: \"Deal Name\",\r\n DealNamePlaceHolderText: \"Enter the Deal Name\",\r\n DealOverviewText: \"Deal Overview\",\r\n DealOverviewPlaceHolderText: \"Enter the Deal Overview\",\r\n DealVolumePlaceHolderText: \"Enter the Deal Volume\",\r\n DealProductGroupText: \"Product Group\",\r\n DealProductGroupPlaceHolderText: \"Select the Product Group\",\r\n DealGeoCoverageText: \"Deal Geo Coverage\",\r\n DealGeoCoveragePlaceHolderText: \"Select the Deal Geo Coverage\",\r\n DealCountryText: \"Deal Country(s)\",\r\n DealCountryColumn: \"Deal Country\",\r\n DealCountryPlaceHolderText: \"Select the Country(s)\",\r\n DealAffiliationTypeText: \"Affiliation Type\",\r\n DealAffiliationTypePlaceHolderText: \"Select the Affiliation Type\",\r\n DealAffiliationTypeOtherText: \"Affiliation Type Others\",\r\n DealAffiliationTypeOtherPlaceHolderText: \"Enter the Affiliation Type Others\",\r\n DealVerticalText: \"Deal Vertical\",\r\n DealVerticalPlaceHolderText: \"Select the Deal Vertical\",\r\n DealExpirationDateText: \"Requested Expiration Date\",\r\n DealExpirationDatePlaceHolderText: \"Enter the date in MM/DD/YYYY\",\r\n DealExpirationDateJustificationText:\r\n \"Requested Expiration Date Justification\",\r\n DealExpirationDateJustificationPlaceHolderText:\r\n \"Enter Justification for Expiration Date\",\r\n DealTransactedVolumeText: \"Transacted Volume(Total)\",\r\n DealCasesStartDateText: \"Case Start Date\",\r\n DealCasesEndDateText: \"Case End Date\",\r\n LegalEntitiesText: \"Legal Entities\",\r\n ChannelText: \"Channel\",\r\n DealDetailsText: \"Deal Details\",\r\n CaseDetailsText: \"Case Details\",\r\n SubmitText: \"Submit\",\r\n NextText: \"Next\",\r\n CloseText: \"Close\",\r\n CaseIdText: \"Case ID\",\r\n StatusText: \"Status\",\r\n RevertCheckBoxLabel: `Are you sure you want to revert this case \r\n back to “draft†status? If you revert the case, it will be\r\n removed from its current queue position, and upon your next \r\n submittal, the case will be placed at the lowest queue position.`,\r\n ExpireCheckBoxLabel: `Are you sure you want to expire this case ? \r\n An expired case will no longer be under “approved†status, \r\n and claims will only be accepted if the ADD invoice date is ON OR \r\n BEFORE the case’s expiration date.`,\r\n DeleteCheckBoxLabel: `Are you sure you want to delete this case? \r\n Once the case is deleted, all the case submission data will be lost, \r\n and the case will be removed from the dashboard.`,\r\n ViewCaseText: \"View Case\",\r\n EditCaseText: \"Edit Case\",\r\n RevertCaseText: \"Revert Case\",\r\n DeleteCaseText: \"Delete Case\",\r\n ExpireCaseText: \"Expire Case\",\r\n ExpireSubmit: \"Understood-Expire the Case\",\r\n ExpireCancel: \"Abort-return to dashboard\",\r\n CPCaseDecisionLetter: \"Case Decision Letter\",\r\n CPStrategicLetters: \"Manufacturer's Confirmation Letter\",\r\n ChannelOverviewText: \"Channel Overview\",\r\n ChannelOverviewPlaceHolderText: \"Enter the Channel Overview\",\r\n ChannelJustificationText: \"Channel Justification\",\r\n ChannelJustificationPlaceHolderText: \"Enter the Channel Justification\",\r\n AddAddtext: \"Add ADD\",\r\n AdrAddtext: \"Add Reseller(s)\",\r\n AddResellerText: \"Add Reseller\",\r\n AddPrimaryResellerText: \"Add Reseller\",\r\n Reseller: \"Reseller\",\r\n Distributor: \"Distributor\",\r\n AddDistributorText: \"Add Distributor(s)\",\r\n AddCountryText: \"ADD Country\",\r\n AddLookupText: \"ADD Lookup\",\r\n AddCountryPlaceholderText: \"Select the ADD Country\",\r\n ResellerCountryText: \"Reseller Country\",\r\n ResellerCountryPlaceholderText: \"Select the Reseller Country\",\r\n ResellerNameText: \"Reseller Name\",\r\n ResellerNamePlaceholderText: \"Select the Reseller Name\",\r\n ResellerLookupText: \"Reseller Lookup\",\r\n AddNameText: \"ADD Name\",\r\n AddNamePlaceHolderText: \"Select the ADD Name\",\r\n ChannelStructureText: \"Channel Structure\",\r\n ChannelStructurePlaceholderText: \"Select the Channel Structure\",\r\n SkipChannelReasonText: \"Skip Channel Reason\",\r\n SkipChannelReasonPlaceHolderText: \"Enter the Skip Channel Reason\",\r\n PartnerTypeText: \"Partner Type\",\r\n PartnerTypePlaceHolderText: \"Select the Partner Type\",\r\n DealVTeamText: \"Deal V-Team\",\r\n MicrosoftContactText: \"Microsoft Contact\",\r\n DealVTeamMemberAddtext: \"Add V-Team Member\",\r\n DealContactAliasText: \"Alias/Email\",\r\n DealContactAliasPlaceholderText: \"Enter the Alias/Email\",\r\n DealContactName: \"Name\",\r\n DealContactCoOwner: \"Co-Owner\",\r\n CoOwnerText: \"Co-Owner\",\r\n DealContactRoleText: \"Role\",\r\n DealOtherRoleText: \"Other Role\",\r\n DealContactRolePlaceholderText: \"Select the Role\",\r\n DistributorCountryPlaceholderText: \"Select the Distributor Country\",\r\n ExceptionRequest: \"Exception Request\",\r\n ExceptionRequestPlaceHolderText: \"Enter any required Exceptions\",\r\n AdditionalInformationPlaceHolderText: \"Enter any additional information about the deal\",\r\n Attachments: \"Attachments\",\r\n ProofOfPreference: \"Proof of End Customer's Preference\",\r\n AttachmentBadgeTitle: \"Click to see Attachment(s)\",\r\n NoLegalEntitySelected: \"Please select atleast one legal entity to add.\",\r\n NoProductSelected: \"Please select atleast one product to add.\",\r\n NoPrimaryEntitySelected: \"Atleast one primary legal entity to be selected.\",\r\n Country: \"Country\",\r\n SearchFilter: \"Search Filter\",\r\n LegalEntitiesSearchResult: \"Legal Entities Search Result\",\r\n AddSelectedLegalEntites: \"Add Selected Legal Entites\",\r\n LegalEntityName: \"Legal Entity Name\",\r\n TPID: \"TPID\",\r\n CRMAccountID: \"CRM AccountID\",\r\n CustomerSegment: \"Customer Segment\",\r\n SelectedLegalEntities: \"Selected Legal Entities\",\r\n DealVolume: \"Deal Volume Total\",\r\n DeleteColumn: \"Delete\",\r\n Attachment: \"Attachment\",\r\n AdditionalInformation: \"Additional Information\",\r\n SearchTabText: \"Search Legal Entity\",\r\n UploadTabText: \"Upload Legal Entity\",\r\n IsPrimary: \"Is Primary\",\r\n CustomerVertical: \"Customer Vertical\",\r\n UploadRequiredErrorMessage:\r\n \"Required fields are not provided for these fields : \",\r\n UploadCountryGEOErrorMessage:\r\n \"Country does not match with any of the selected Geo Countries.\",\r\n Search: \"Search\",\r\n DistributorText: \"Distributor(s)\",\r\n ResellerText: \"Reseller\",\r\n LegalEntityCountry: \"Legal Entity Country\",\r\n MsStoreText: \"MS Store\",\r\n AllAddsText: \"All ADDs in the Country\",\r\n AllAddsEuText: \"All ADDs in EU Region\",\r\n AllResellersText: \"All Resellers in the Country\",\r\n AllResellersEuText: \"All Resellers in EU Region\",\r\n DefaultLegalOption: \"search\",\r\n UploadSegmentErrorMessage:\r\n \"Customer Segment is invalid as it does not contains 'SMB'.\",\r\n LegalEntityAndProductsSelectionErrorMessage:\r\n \"The Legal Entities and Products added related to this country will be removed.\",\r\n SubmitSync: \"SubmitSync\",\r\n RequiredFieldMissing:\r\n \"Enter all the required fields before submiting the case.\",\r\n SuccessText: \"Success\",\r\n SaveDraftSuccessMessage: \"Opportunity {0} saved as Draft.\",\r\n SubmitSuccessMessage: \"Opportunity {0} Submitted.\",\r\n NavigateDashboardTitle: \"Click to Navigate to Dashboard.\",\r\n CancelAndNavigateDashboardTitle:\r\n \"Click to cancel the changes and Navigate to Dashboard.\",\r\n CopyCASText: \"Copy Opportunity Number\",\r\n CopyCASTitle: \"Click to Copy Opportunity Number to Clipboard.\",\r\n SaveOppDraftButtonTitle: \"Click to Save Deal as Draft.\",\r\n SubmitOppButtonTitle: \"Click to Submit the Deal.\",\r\n SubmitSyncOppButtonTitle: \"Click to Submit the Deal synchronously.\",\r\n UploadFileSizeErrorMessage: \"Please select a file less than 10mb\",\r\n CRMChildAccountFacetText: \"CRM Child Account Name\",\r\n AddressFacetText: \"Address\",\r\n CityFacetText: \"City\",\r\n PostalCodeFacetText: \"Postal Code\",\r\n StateProvinceFacetText: \"State Province\",\r\n CRMIDFacetText: \"Customer Account ID\",\r\n TPIDFacetText: \"Customer TPID\",\r\n GPIDFacetText: \"Customer GPID\",\r\n DunsNumberFacetText: \"Duns ID\",\r\n ProductFamilyCodeFacetText: \"Product Family Code\",\r\n ProductFamilyNameFacetText: \"Product Family Name\",\r\n BusinessUnitFacetText: \"Business Unit\",\r\n SkuNameFacetText: \"Sku Name\",\r\n SkuPartNumberFacetText: \"Sku Part Number\",\r\n CountryFacetText: \"Country\",\r\n MpnIdText: \"MPN ID\",\r\n SavedSuccessfully: \"Saved Successfully.\",\r\n ErrorOccured: \"Error Occured.\",\r\n ErrorValidationMessage: \"Please correct the errors.\",\r\n SubmitCaseButtonTitle: \"Click to Submit\",\r\n CancelCaseButtonTitle: \"Click to Cancel\",\r\n RevertOption: \"Revert Case\",\r\n ExpireOption: \"Expire Case\",\r\n DeleteOption: \"Delete Case\",\r\n SearchButton: \"Search\",\r\n ResellerRegistration: \"Reseller Registration\",\r\n ProductSearch: \"Product Search\",\r\n ProductSelection: \"Product Selection\",\r\n ChannelContacts: \"Channel Contacts\",\r\n PartnerContacts: \"Partner Contacts\",\r\n ChannelContactsPlaceHolderText: \"Enter the partner emails\",\r\n PartnerNameText: \"Partner Name\",\r\n PartnerEmailContactsText: \"Email Contact(s)\",\r\n CustomerSearch: \"Customer Search\",\r\n CustomerSearchResults: \"Customer Search Result(s)\",\r\n ErrorText: \"ErrorText\",\r\n InvalidCaseMessage: \"Opportunity Number not found.\",\r\n AddFilterPlaceHolderText: \"Filter By Add Name\",\r\n ResellerFilterPlaceHolderText: \"Filter By Reseller Name\",\r\n LegalEntitiesSearchElements: \"Legal Entities Search Elements\",\r\n PrimaryLegalEntity: \"Primary Legal Entity\",\r\n PrimaryLegalEntityTPID: \"Primary Legal Entity TPID\",\r\n PrimaryLegalEntityCRMAccountID: \"Primary Legal Entity CRM Account ID\",\r\n AdditionalLegalEntities: \"End Customer Information\",\r\n ProductSearchElements: \"Product Search Elements\",\r\n sortAscendingAriaLabel: \"Sorted A to Z\",\r\n sortDescendingAriaLabel: \"Sorted Z to A\",\r\n AddCaseAriaLabel: \"AddCase\",\r\n DownloadAriaLabel: \"DownloadDocument\",\r\n FilterAriaLabel: \"QueryList\",\r\n NoMatchFoundText: \"No matches found.\",\r\n FileSizeError: \"File size should be less than {0}\",\r\n FileSizeEmptyError: \"File is empty, please upload a valid file.\",\r\n AllowedFileExtensionsForCPStrategic: \".msg, .pdf, , .xls, .doc, .docx, .txt, .pptx\",\r\n AllowedFileExtensionsForOTLE: \".docx, .xlsx, .pdf, .pptx, .eml,.msg\",\r\n AllowedFileExtensionsForEndCustomerProof: \".pdf,.eml,.msg\",\r\n LoadingReseller: \"Loading Resellers\",\r\n ProcessingText: \"Processing Case Submission\",\r\n CustomerSearchPlaceHolderText:\r\n \"Search by Country, Customer Name, CRMChildAccountName, Address, Customer Account ID, Customer TPID, Customer GPID, Duns ID.\",\r\n ProductSearchPlaceHolderText:\r\n \"The search is against the fields:- Country, Business Unit, Product Family Code, Product Family Name, Sku Name, Sku Part Number.\",\r\n DealDetailsDealVolumeElements: \"Deal Volume Elements\",\r\n ADDRegistration: \"ADD Registration\",\r\n MoreActionsText: \"More Actions\",\r\n Welcome: \"Welcome!\",\r\n MDPP: \"Microsoft Devices Pricing Program\",\r\n SigninMessage: \"Sign in with your Work Account.\",\r\n WorkAccountDescription:\r\n \"Enter your Work Account or Azure Active Directory(AAD) Account using the 'Sign in' button below to access the portal.\",\r\n Signin: \"Sign in\",\r\n SigninExample: \"Example: you@yourcompany.com\",\r\n SigninGuidance: \"For any additional guidance, please click \",\r\n ClickHere: \"here.\",\r\n ContactUs: \"Contact Us\",\r\n PrivacyAndCookies: \"Privacy and Cookies\",\r\n DataPrivacyLink: \"Data Privacy\",\r\n TermsOfUse: \"Terms of use\",\r\n TradeMark: \"Trademarks\",\r\n CopyRightMicrosoft: \"© 2022 Microsoft\",\r\n DealCommitted: \"Deal Committed\",\r\n PartnerAddDisclaimerText:\r\n \"Because a DMP has been selected as an eligible reseller in one of the countries, the following Distributors will receive case notification & case dashboard access, to enable transaction with the selected DMP.\",\r\n NoCountrySelectedPlaceHolderText: \"Please Select Country to see Records....\",\r\n SomeThingWrong: \"Something went wrong...\",\r\n BackToLogin: \"Back To Login\",\r\n OrganizationInfoMissing: \"Organization Information Is Missing\",\r\n NotFoundApiError: \"404 - API Error Occured\",\r\n AddNew: \"Add New\",\r\n Clear: \"Clear Search\",\r\n ClearAll: \"Clear All Selection\",\r\n ViewReseller: \"View Resellers\",\r\n DownloadExcel: \"Download Excel\",\r\n ExportToExcel: \"Export to Excel\",\r\n Downloading: \"Downloading...\",\r\n HomePageImage: \"Home Page content image\",\r\n ProductSearchID: \"ProductSearch\",\r\n CustomerSearchID: \"CustomerSearch\",\r\n NoResellerInfo: \"No ADR's/DMP's are associated to your countries\",\r\n NoDistributorInfo:\r\n \"Please begin contacting preferred distributor(s) in your region to share this CP (Strategic) CAS ID. The Distributor must add this CAS-ID to their dashboard to begin transacting on the case.\",\r\n NoChannelInfo:\r\n \"This case has been cascaded to ADDs, and as such no channel information is viewable to resellers. You may be contacted by an ADD who has been selected to transact this case, at which point you may work with the distributor.\",\r\n ClosureDecisionCommentsText: \"Closure Decision Comments\",\r\n LegalEntityOptions: \"CustomerOption\",\r\n UploadLegalOption: \"upload\",\r\n QuickView: \"Quick View\",\r\n SelectedPFAM: \"Selected PFAM\",\r\n PageHeaderLabel: \"Microsoft Devices Pricing Programs\",\r\n PageHeaderLabelTestEnv: \"NON PROD - For Test Purposes only.\",\r\n TestEnvType: \"Test\",\r\n ExpandedView: \"Expanded View\",\r\n CompactView: \"Compact View\",\r\n Owner: \"Owner\",\r\n NotCaseOwnerDialogTitle: \"Not Case Owner\",\r\n NotCaseOwnerDialogMessage: \"Only Owners/Co-Owner(s) can edit case.\",\r\n LoadingCases: \"Loading Cases\",\r\n SubmittingAddCaseToDashboardRequest: \"Submitting Request\",\r\n ExtensionProgress: \"Extension in progress\",\r\n RenewProgress: \"Case renewal in progress\",\r\n CopyProgress: \"Copying the case\",\r\n SearchDuplicateDeals: \"Searching Duplicate Deals\",\r\n SelectADDAccountText: \"Account Country\",\r\n SelectADDAccountAndCountryText: \"Distributor Name / Country\",\r\n DropdownText: \"Dropdown\",\r\n SelectADDAccountName: \"Select Distributor\",\r\n ADD: \"ADD\",\r\n SelectReseller: \"Select Reseller\",\r\n LoadingFilterData: \"Loading Filter Data\",\r\n SelectADDAccountPlaceholderTextOnDashboard: \"Select distributor\",\r\n SelectResellerCountry: \"Select Reseller Country\",\r\n SelectADDAccountPlaceholderText:\r\n \"Please select an account country to be associated.\",\r\n SelectADDAccountAndCountryPlaceholderText:\r\n \"Please select the desired distributor.\",\r\n UploadLegalEntityIncorrectTemplate:\r\n \"Incorrect template or incorrect file format, Please download the template and try again.\",\r\n UploadLegalEntityNoData: \"Please upload with atleast one legal entity.\",\r\n DealVTeamInfo: \"No Deal V-Team Contacts were added to show\",\r\n ChannelContactEmailText: \"Distributor E-mail(s)\",\r\n ChannelContactEmailPlaceholderText: \"e.g. abc@xyz.com; pqr@xyz.com\",\r\n ResellerNameHeading: \"Select Reseller\",\r\n UnauthorizedMessage:\r\n \"Unauthorized: You do not have permission to view this page.\",\r\n DataLoading: \"Downloading...\",\r\n HrefAttribute: \"href\",\r\n DownloadAttribute: \"download\",\r\n RadioButton: \"Radio Button\",\r\n DeleteAttachmentWarning: \"Attachment Delete Warning\",\r\n AttachmentDeleteMessage:\r\n \"Deleting of attachment is permanent, Are you sure you want to Delete?.\",\r\n PrimaryLegalCountry: \"Primary Legal Country\",\r\n ExpandAll: \"Expand All\",\r\n CollapseAll: \"Collapse All\",\r\n MicrosoftContacts: \"Microsoft Contacts\",\r\n DealInfo: \"No Microsoft Contacts were added to show\",\r\n PaginationEllipsisLabel: \"Click for pages 11 and up\",\r\n IDColumnName: \"id\",\r\n DealStackability: \"Deal Stackability\",\r\n ShowSearchFilter: \"Show Search Filters\",\r\n HideSearchFilter: \"Hide Search Filters\",\r\n BuildNumberText: \"Build Number\",\r\n HelpAndSupport: \"Help + Support\",\r\n ToolSupportContent: \"Tool Support – please contact\",\r\n RatingLabelText: \"Please rate your experience\",\r\n RatingCommentLabelText: \"What could have been better?\",\r\n RatingCommentPlaceHolderText: \"Enter Comments\",\r\n EmailCCNotificationRecipients: \"Email Recipients\",\r\n EmailCCNotificationRecipientsPlaceHolderText:\r\n \"Please enter emails with (;) seperator.\",\r\n DashboardView: \"Dashboard View\",\r\n PagerDropdownAriaLabel: \"Select items per page dropdown\",\r\n WebpageNotAvailable: \"Webpage Not Available\",\r\n MDPPHelpAndSupport: \"MDPP Help & Support\",\r\n HelpAndSupportResourceGuidance: \"Depending on the nature of your question, please use the appropriate resources as follows:\",\r\n CaseSpecificContacts: \"Case-specific questions (such as pricing and discounts)\",\r\n SpecialPricingContactNorthAmerica: \"North America\",\r\n SpecialPricingContactEUMiddleEastAfrica: \"Europe, Middle East, and Africa\",\r\n SpecialPricingContactAsia: \"Asia (including India and Australia and New Zealand)\",\r\n CustomPricingStrategic: \"Custom Pricing (Strategic)\",\r\n CPContactGuidance: \"Please reach out to the Microsoft contact(s) listed in the CP(Strategic) case.\",\r\n CPContact: \"Alternatively, contact \",\r\n ClaimsSupportGuidance: \"Claims support & MDPP Portal (tool) issues\",\r\n ClaimsContact: \"Contact\",\r\n ContactByRegion: \"Contact By region:\",\r\n ProductQuantityWarningText: \"Units entered does not meet the unit threshold value for the selected product group\",\r\n\r\n OTLE: \"One-Time Local Empowerment (OTLE)\",\r\n OTLEContactGuidance: \"Reach out to the Microsoft contact(s) listed in the OTLE case.\",\r\n //Deal Registration texts\r\n OpportunityDetailsText: \"Opportunity Details\",\r\n EndCustomerText: \"End Customer\",\r\n CustomerCountryText: \"Customer Country\",\r\n CustomerNameText: \"Customer Name\",\r\n CustomerDomainText: \"Customer Domain\",\r\n CustomerDomainPlaceholderText: \"Enter the Customer Domain\",\r\n NewCustomerText: \"New Customer Information\",\r\n ResellerTypeText: \"Reseller Type\",\r\n ContactEmailText: \"Contact Email\",\r\n DistributorCountryText: \"Distributor Country\",\r\n DistributorNameText: \"Distributor Name\",\r\n DistributorContactEmailText: \"Distributor Contact Email\",\r\n EpcText: \"EPC\",\r\n ExceptionProgramCodeText: \"Exception Program Code (EPC)\",\r\n SelectDealType: \"Select Deal Type\",\r\n LoyaltyPricingText: \"Loyalty Pricing\",\r\n DealRegistrationText: \"Deal Registration\",\r\n SpecialPricingText: \"Special Pricing\",\r\n SameAsLegalCustomerRecord: \"Same As Legal Customer Record address\",\r\n DealsHeadingText: \"Deals\",\r\n DeviceShipToAddressText: \"Street Address\",\r\n DeviceShipToAddressCardText: \"Device Ship-To-Address\",\r\n PreSalesActivitiesText: \"Pre-Sales Activities\",\r\n PreSalesActivitiesPlaceholderText: \"Enter pre-sales activities\",\r\n AdditionalInformationsPlaceholderText: \"Enter additional information about the deal\",\r\n CityText: \"City\",\r\n StateProvinceText: \"State / Province\",\r\n DeviceShipToStateProvinceText: \"State or Province\",\r\n PostalCodeText: \"Postal Code\",\r\n ProductsText: \"Products\",\r\n PricingAndDiscountsText: \"Pricing & Discounts\",\r\n CommittedDealVolumeText: \"Committed Deal Volume\",\r\n PartcularsText: \"Particulars\",\r\n TotalCommittedVolumeText: \"Total Committed Volume\",\r\n YesText: \"Yes\",\r\n NoText: \"No\",\r\n AttachmentsText: \"Attachment(s)\",\r\n JustificationText: \"Justification\",\r\n MonthsText: \"months\",\r\n CustomPricingVolumewithinText: \"Custom Pricing Volume within\",\r\n QuantityText: \"Quantity\",\r\n DRText: \"DR\",\r\n DealRegistrationVolumewithinText: \"Deal Registration Volume within\",\r\n ProductSelectText: \"Select Products\",\r\n RfpRfqPublicTenderText: \"RFP/ RFQ/ Public Tender\",\r\n DealContactsText: \"Deal Contacts\",\r\n EmailDomain: \"Email Domain\",\r\n EmailDomainPlaceHolder: \"Enter the email domain\",\r\n EmailDomainPlaceHoldertText: \"e.g., “@example.comâ€\",\r\n WebPageUrl: \"Webpage URL\",\r\n WebPageUrlPlaceHolder: \"Enter the webpage URL\",\r\n WebPageUrlPlaceHolderText: \"e.g., â€https://www.example.comâ€\",\r\n CustomerCountry: \"Customer Country\",\r\n Industry: \"Industry\",\r\n IndustryPlaceholder: \"Select Industry\",\r\n CustomerNameEnglish: \"Customer Name (English)\",\r\n CustomerNameEnglishPlaceHolder: \"Enter the Customer Name (English)\",\r\n CustomerNameEnglishPlaceHolderText: \"e.g., 'Toyota'\",\r\n CustomerNameLocalLanguage: \"Customer Name (Local Language)\",\r\n CustomerNameLocalLanguagePlaceHolder: \"Enter the Customer Name (Local Language)\",\r\n CustomerNameLocalLanguagePlaceHolderText: \"e.g., 'トヨタ'\",\r\n SameAsCustomerNameEnglish: \"Same as Customer Name (English)\",\r\n AddressLine1: \"Address Line 1\",\r\n AddressLine1PlaceHolder: \"Enter the customer Address Line 1\",\r\n AddressLine1PlaceHolderText: \"e.g., “1, TOYOTA-CHOâ€\",\r\n City: \"City\",\r\n CityPlaceHolder: \"Enter the City\",\r\n CityPlaceHolderText: \"e.g., “Aichiâ€\",\r\n PostalCode: \"ZIP / Postal Code\",\r\n DeviceShipToPostalCodeText: \"Postal Code\",\r\n PostalCodePlaceHolder: \"Enter the ZIP / Postal Code\",\r\n PostalCodeMask: \"9999999\",\r\n State: \"State / Province\",\r\n StatePlaceHolder: \"Enter the State / Province\",\r\n StatePlaceHolderText: \"e.g., “Tokyoâ€\",\r\n Vertical: \"Vertical\",\r\n VerticalPlaceholder: \"Select Vertical\",\r\n VerticalPlaceholderText: \"e.g., 'High tech Electronics'\",\r\n VerticalCategory: \"Vertical Category\",\r\n VerticalCategoryPlaceholder: \"Select Vertical Category\",\r\n VerticalCategoryPlaceholderText: \"e.g., 'Communication Equipments'\",\r\n DealNamePlaceHolderTextExample: `e.g., \"Walgreens DR Deal\"`,\r\n CustomerDomainPlaceholderTextExample: `e.g., \"@example.com\"`,\r\n DeviceShipToAddressPlaceholderTextExample: `e.g., 200 WILMOT RD`,\r\n DeviceShipToCityPlaceholderTextExample: `e.g., Deerfield`,\r\n DeviceShipToStatePlaceholderTextExample: `e.g., Illinois`,\r\n DeviceShipTopostalPlaceholderTextExample: `e.g., 471-8734.`,\r\n EmailCCRecipientsPlaceholderTextExample: `e.g. \"sample@example.com;\"`,\r\n DealOverviewPlaceholderTextExample: 'Enter deal overview',\r\n RfpRfqPublicTenderJustificationText: \"RFP / RFQ / Public Tender Justification\",\r\n RfpRfqPublicTenderJustificationPlaceholderText: \"Enter RFP / RFQ / Public Tender justification\",\r\n RfpRfqPublicTenderAttachmentText: \"RFP / RFQ / Public Tender Attachment(s)\",\r\n DealVolumeBasedOnDealTypes: \"{0} Volume within {1} month(s)\",\r\n AllowedFileExtensionsForDRAndSP: \".msg, .pdf, .xlsx, .xls, .doc, .docx, .txt\",\r\n AttachmentFileNameText: \"File Name\",\r\n AttachmentFileSizeText: \"File Size(bytes)\",\r\n CasesDropdownPlaceHolderText: \"Select an option\",\r\n BreadcrumbAriaLabelText: \"Breadcrumb with items rendered as buttons\",\r\n BreadcrumbOverflowAriaLabelText: \"More links\",\r\n\r\n //DR + CP Channel texts\r\n GuidanceTextForMSStore: \"Please select the Microsoft Store Sales Channel and provide associated information.\",\r\n MSStoreChannel: \"Microsoft Store Sales Channel\",\r\n DSSText: \"Direct Sales and Support (DSS)\",\r\n DigitalStore: \"Digital Store\",\r\n Hub: \"Hub Name\",\r\n DigitalStoreName: \"Digital Store Name\",\r\n MSStoreSellerName: \"Microsoft Store Seller Name\",\r\n MSStoreSellerEmail: \"Microsoft Store Seller Email\",\r\n MSStoreSellerNamePlaceholderText: \"Enter MS Store seller name\",\r\n MSStoreSellerEmailPlaceholderText: `e.g. \"sample@example.com\"`,\r\n MsStoreLabeltext: \"Is MS-Store a Reseller?\",\r\n AdditionalResellersInformation: \"Additional Resellers Information\",\r\n ResellerInformation: \"Reseller Information\",\r\n GuidanceTextForReseller: \"Please add Reseller to this opportunity and provide associated information.\",\r\n GuidanceTextForMultipleReseller: \"Please add one or more Reseller(s) to this opportunity and provide associated information.\",\r\n AdditionalResellerChoiceQuestion: \"Is this opportunity part of a Public Sector (PS)/ SOE Deal?\",\r\n AddAdditionalResellers: 'Add Additional Reseller(s)',\r\n FinalTierResellerQuestion: \"Are you selling to a Final Tier Reseller(s)?\",\r\n FinalTierResellerInformation: \"Final Tier Reseller Information\",\r\n AddFinalTierResellers: \"Add Final Tier Reseller(s)\",\r\n DistributorInformation: \"Distributor Information\",\r\n GuidanceTextForDistributor: \"Click below to add additional Distributors to this case.\",\r\n AddDistributors: \"Add Distributor(s)\",\r\n DistributorNames: \"Distributor Name(s)\",\r\n DistributorOwner: \"Distributor Owner\",\r\n AssociatedReseller: \"Associated Reseller\",\r\n ContactEmailIds: \"Contact Email Id(s)\",\r\n ResellerNames: \"Reseller Name\",\r\n ContactName: \"Contact Name\",\r\n ZipPostalCode: \"ZIP / Postal Code\",\r\n CaseDecisionJustification: \"Case Decision Justification / Comments\",\r\n DealInfoCaseStartDateText: \"Start Date\",\r\n DealInfoCaseExpireDateText: \"Expiration Date\",\r\n DealInfoUnitsTransactedText: \"Transacted Volume\",\r\n ResellerNameErrorMessage: 'Reseller Name should not be blank, please select a Reseller.',\r\n DistributorNameErrorMessage: 'Select atleast one Distributor',\r\n NoDistributorFoundInEufta: \"No records found. Please select an alternate country to locate your desired distributor.\",\r\n EditText: \"Edit\",\r\n ExtendText: \"Extend\",\r\n ExpireText: \"Expire\",\r\n RenewText: \"Renew\",\r\n CopyText: \"Copy & Submit New\",\r\n DeleteText: \"Delete\",\r\n DRSPCaseDecisionLetterFileName:\"Partner Case Processed-{0}{1}{2}.pdf\",\r\n CaseDecisionLetterFileName: \"Case Decision - {0}.pdf\",\r\n Back: \"Back\",\r\n CaseName: \"CaseName\",\r\n MPNOrgID: \"MPN OrganizationID:\",\r\n MPNLocationID: \"MPN LocationID / Country:\",\r\n ProductGroup: \"Product Group:\",\r\n PartnerRole: \"Partner Role\",\r\n NewCaseSubmissionText: \"New Case Submission\",\r\n HomeText: \"Home\",\r\n NewCaseKeyText: \"NewCase\",\r\n ViewCaseKeyText: \"ViewCase\",\r\n DashboardText: \"Dashboard\",\r\n SelectPricingProgramText: \"Select Pricing Program(s)\",\r\n CustomerText: \"Customer\",\r\n DealInformationText: \"Deal Information\",\r\n BackButtonText: \"Back\",\r\n ChooseColumnsLabel: \"Choose Columns\",\r\n Resetbtn: \"Reset to default\",\r\n ColumnDivider: \"divider\",\r\n ColumnsHeader: \"Columns\",\r\n DealInfoEndDateText: \"End Date\",\r\n SuccessCaseSubmissionText: \"has been submitted successfully.\",\r\n SuccessDraftCaseSubmissionText: \"has been successfully saved in your dashboard as a draft, and will remain in draft status for a maximum of <b>14 calendar days.</b> Please note that if the case has not been submitted after 14 calendar days, <u>it will be deleted from your dashboard</u>. You will not be able to re-access the case once it has been deleted.\",\r\n ThankyouSubmissionText: \"Thank you for your submittal! Microsoft will begin review of the opportunity and you will be notified when a decision is made.\",\r\n CreateNewCaseText: \"Create New Case\",\r\n //Final Tier Fields\r\n ResellerNamePlaceHolder: 'e.g. \\\"Open System Trading Co., Ltd.\\\"',\r\n ContactNamePlaceHolder: 'e.g. \\\"Open System Trading\\\"',\r\n ContactEmailPlaceHolder: 'e.g. \\\"abc@example.com\\\"',\r\n AddressPlaceHolder: 'e.g. \\\"No.295 Zhongshan Rd\\\"',\r\n CityTextFieldPlaceHolder: 'e.g. \\\"Hangzhou\\\"',\r\n StateOrProvincePlaceHolder: 'e.g. \\\"Shanghai\\\"',\r\n ZipOrPostalCodePlaceHolder: 'e.g. \\\"201103\\\"',\r\n CancelDialogText: 'Do you want to save your changes before leaving this page?',\r\n SaveAndAddNextButton: 'Save and Add Next',\r\n //Additional\r\n AddAdditionResellersText: 'Add Additional Reseller(s)',\r\n AddFinalTier: 'Add Final Tier Reseller(s)',\r\n FinalTierReseller: 'Final Tier Reseller',\r\n AdditionalReseller: 'Additional Reseller',\r\n CustomerSearchGuidance: \"To create a Surface device opportunity, firstly you will need to search the customer. Once you’ve identified the customer , you can proceed with Case submission process.If you do not find the customer through search results, please create a new customer using the â€Submit a New Customer†button below.\",\r\n CustomerSearchGuidanceOTLE: \" To create a Surface device opportunity, firstly you need to search the customer, you can proceed with Case submission process. If you don't find the customer through search results, please create a new customer using the \\\"Submit a New Customer\\\" button below.\",\r\n CustomerSearchResultsGuidance: \"The MDPP Portal’s customer search results are displayed at a CUSTOMER LEGAL ENTITY level – this means that it is possible that the search results you see will not be identical to the search criteria you entered. If your specific search criteria is found, and that record is part of a larger Legal Entity, the system will display the Legal Entity HQ information, as the search result. You must identify and select the customer legal entity associated with your search criteria. During case submission, you will provide End Customer Shipping Information (i.e. specific end customer location associated with the deal) within the submission form.\",\r\n PartnerInformation: \"PartnerInformation\",\r\n SubmitNewCustomer: \"Submit a New Customer Record\",\r\n MPNLocationIdCountry: \"MPN Partner Organization / Country\",\r\n MPNLocationIdCountryPlaceHolder: \"Select Partner Organization / Country\", \r\n VerifyDetailsHeader: \"Verify Details for Case Submission\",\r\n TextSizeXLarge: \"xLarge\",\r\n POIIconName: \"POI\",\r\n ProductVariantIConName: \"ProductVariant\",\r\n ContactIconName: \"Contact\",\r\n ContactInfoIconName: \"ContactInfo\",\r\n AccountManagementIcon: \"AccountManagementIcon\",\r\n DateCalendarIcon: \"CalendarReply\",\r\n NoteReplyIcon: \"NoteReply\",\r\n AttachIcon: \"Attach\",\r\n CaseSubmissionText: \"Case Submission\",\r\n NoADDAsscociatedWithADRText: \"You are not seeing any ADD's as no ADDs are associated to this case for this country.\",\r\n RevertInProgress: \"Submitting Revert is in-progress...\",\r\n RevertError: \"Error occured while reverting the case. Please try again later.\",\r\n RevertCaseMessage: \"Revert case is successfully submitted. Please check case status after few minutes.\",\r\n ConfirmSelectedDuplicateCustomer: \"Do you want to continue with the new case submission with existing Customer record?\",\r\n Segments: \"Segment(s)\",\r\n DeleteVTeamText: \"DeleteVTeam\",\r\n DeleteChannelAccount: \"DeleteChannelAccount\",\r\n CaseActionsDialog: {\r\n CancelButton: 'Cancel',\r\n ConfirmButton: 'Confirm'\r\n },\r\n Extend: {\r\n ActionName: 'Extend',\r\n ExpirationDate: 'Expiration Date',\r\n ReasonForExtension: 'Reason for extension',\r\n TotalUnitsTransacted: 'Total unit transactions to date',\r\n ExpectedUnitTransactions: 'Expected unit transactions in the next extension period',\r\n ConfirmButton: 'Confirm',\r\n CancelButton: 'Cancel',\r\n BackButton: 'Back',\r\n ExtensionSuccessMessage: 'Case have been extended successfully.',\r\n ExtensionFailureMessage: 'Case extension failed! Expected units are not transacted for extension.',\r\n ExtensionReviewMessage: 'Case have been successfully submitted for review.',\r\n DealRegDescription: `Please choose a new expiration date for this Deal Registration case. Your case can be extended up to the date shown below. \r\n You may request a shorter extension period, if desired. Your request will be auto-approved if you have transacted 1 or more units on this case.`,\r\n SpecialPricingDescription: `Please choose a new expiration date for this Special Pricing case. \r\n Your case can be extended up to the date shown below. You may request a shorter extension period, if desired. \r\n Your request will be auto-approved if you have transacted atleast {0} units total.`,\r\n WarningMessage: `The expiration date exceeds the maximum possible expiration date for the case. Please choose a different one.`,\r\n MaxExtensionLimitMessage: `Selected case has already been auto extended maximum possible times.`,\r\n MaxExtensionMessage: `Selected case has already been set to expire at the maximum possible expiration date.`\r\n },\r\n Renew: {\r\n ActionName: 'Renew',\r\n RenewalMessage: `Case Renewal applies to each pricing program individually (Deal Registration or Special Pricing). \r\n Your renewal request, once submitted, will be forwarded to Microsoft for review. \r\n If approved, your renewed Deal Registration or Special Pricing will appear as a latest item in your case dashboard under the same Case ID, \r\n and your prior DR or SP case will transition to 'expired' status.`\r\n },\r\n Expire: {\r\n ActionName: 'Expire',\r\n ExpireMessage: `This 'expire' function will immediately transition the case from “approved†to “expired†status, \r\n and any future claims submitted will be validated against the case’s early expiration date.`\r\n },\r\n Delete: {\r\n ActionName: 'Delete',\r\n DeleteMessage: `Are you sure you wish to delete this case? All information will be lost, and this case will no longer be accessible in your dashboard. \r\n Select 'Confirm' to delete this case, or 'Cancel', to return to your case dashboard.`\r\n },\r\n Revert: {\r\n ActionName: 'Revert',\r\n RevertMessage: `Are you sure you want to revert this case back to “draft†status? \r\n If you revert the case, it will be removed from its current queue position, and upon your next submittal, \r\n the case will be placed at the lowest queue position.`\r\n },\r\n Copy: {\r\n ActionName: 'Copy and Submit New',\r\n CopyMessage: `Please confirm to Copy and Submit New Case.`\r\n },\r\n DownloadCaseLetters: {\r\n ActionName: 'Download Case Decision Letter',\r\n CopyMessage: `Please confirm the type of decision letter.`\r\n },\r\n ConfirmFormOutTitle: \"Confirm\",\r\n ConfirmFormOutMessage: \"Do you want to save your changes before leaving this page? Save, Discard changes. Discard changes will cancel all the information without saving. Save would save the information on the form.\",\r\n CreateCustomerSubmitBtnText: \"Submit new customer record for review\",\r\n PricingProgramBtnText: \"Submit Selected Customer \",\r\n CreatNewRecordText: \"Create New record\",\r\n AddNewCustomerText: \"Add New Customer\",\r\n EditCustomerText: \"Edit Customer\",\r\n PanelCustomerWidth55Percent: \"55%\",\r\n HasWebPageURLLabel: \"Has Web Page URL\",\r\n Max500CharErrorMessage: \"Max 500 characters allowed.\",\r\n Max200CharErrorMessage: \"Max 200 characters allowed.\",\r\n Max100CharErrorMessage: \"Max 100 characters allowed.\",\r\n Text500: 500,\r\n Text200: 200,\r\n Text100: 100,\r\n BoosterDiscountColumnName: \"boosterDiscountValue\",\r\n TotalDiscountColumnName: \"totalDiscountValue\",\r\n InactiveCustomer: \"InActive Customer\",\r\n SelectedCustomer: \"Selected Customer: \",\r\n CustomerDetails: \"Customer Details\",\r\n NewCustomerDetails: \"New Customer Details\",\r\n SubmitNewCustomerRecord: \"Submit New Customer Record\",\r\n SmallPanel: \"30%\",\r\n Filter: \"Filter\",\r\n LoadingMCL: \"Loading...\",\r\n InactiveProducts: \"InActive Product(s)\",\r\n Save: \"Save\",\r\n Requester: \"Requester\",\r\n Default: \"Default\",\r\n CaseCadeProductTitle: \"Product(s) CaseCade\",\r\n InactiveProductsSubTitle: \"Following are the InActive\",\r\n CustomerSearchText: \"Search by Customer Name or DUNS ID\",\r\n InvalidPfamError:\"The selected PFAM '{0}' is not applicable for Special Pricing\",\r\n MultipleInvalidPfamError:\"Some of the selected PFAMs cannot be added as those are not applicable for Special Pricing\",\r\n\r\n //BidGrid texts\r\n BGShowDiscountsText: \"Show Discounts\",\r\n BGProductGroup: \"Product Group\",\r\n BGProductGroupPlaceholder: \"Select Product Group\",\r\n BGCountryLabel: \"End Customer Country\",\r\n BGCountryLabelPlaceholder: \"Select End Customer Country\",\r\n BGDatePickerLabel: \"Date\",\r\n BGSearchPlaceholder: \"Search by SKU Number\",\r\n DatePlaceHolder: \"Select Date\",\r\n BGComboBoxID: \"BGComboBox\",\r\n ExportSkuTOExcel: \"Export SKUs to Excel\",\r\n NoRecordsFound: \" No Cases available for your Partner Organization and Location.\",\r\n ProductinformationFooterText: \" DISCLAIMER - Updates can happen to NetMsRP, List Price, ERP, discount % - all subject to change @ Microsoft discretion\",\r\n ProductFamilyNameExcelColumnTitle: \"Product Family Name\",\r\n BusinessUnitExcelColumnTitle: \"Business Unit\",\r\n SkuNameExcelColumnTitle: \"SKU Name\",\r\n skuNumberExcelColumnTitle: \"SKU Number\",\r\n DealDetailsIcon: \"Commitments\",\r\n CaseDetailsIcon: \"EntitlementPolicy\",\r\n AddressIcon: \"MapPin\",\r\n PublicTenderPolicyIcon: \"MultiSelect\",\r\n PreSalesIcon: \"Generate\",\r\n CustomerDetailsIcon: \"ContactInfo\",\r\n DistributorIcon: \"UserEvent\",\r\n ResellersIcon: \"TeamFavorite\",\r\n MSStoreIcon: \"Telemarketer\",\r\n PricingAndDiscountsIcon: \"CalculatorPercentage\",\r\n ProductSearchIcon: \"SearchAndApps\",\r\n CommittedDealVolumeIcon: \"Quantity\",\r\n GeoCoverageIcon: \"World\",\r\n PartnerDetailsForCaseText: \"Partner details for the case\",\r\n NoRecordsAvailableText: \"No records available.\",\r\n DuplicateLEMessage: \"For uploading of legal entities, please ensure that your upload file does not contain duplicates of legal entities that were previously submitted for this case. If a duplicate legal entity name is found in your file for a given country, it will not be added to the case. Only one legal entity name will be allowed to exist in this case, for a given country.\",\r\n MDPPTransitionBannerNotificationText: \"Notice to Partners: As part of the transition of the Surface Pricing Program to the MDPP Portal on October 31st, 2022, MDPP Portal will temporarily close on Saturday, October 29th, at 8 AM (Pacific Daylight Time). The portal will re-open on Monday, October 31st, at 8 AM (Pacific Daylight Time), at which the legacy Surface Pricing Portal will be closed. All cases must be accessed from MDPP portal.\",\r\n OTLENewCaseSubmission: \"OTLE Case Submission\",\r\n CPNewCaseSubmission: \"CP Strategic Case Submission\",\r\n}\r\n\r\nexport const UIConfigIdentifierConstants = {\r\n StackForCaseDecisionRowId: \"StackForCaseDecisionRow\",\r\n StackDealsNameRowId: \"StackDealsNameRow\",\r\n PartnerInformationId: \"PartnerInformation\",\r\n StackItemSaveDraftButtonId: \"StackItemSaveDraftButton\",\r\n StackDeviceShipToAddressRowId: \"StackDeviceShipToAddressRow\",\r\n StackItemDealOverviewId: \"StackItemDealOverview\",\r\n StackItemPreSalesActivitiesId: \"StackItemPreSalesActivities\",\r\n RfpRfqPublicTenderId: \"RfpRfqPublicTender\",\r\n StackItemPublicTenderJustificationId: \"StackItemPublicTenderJustification\",\r\n StackItemEmailCCNotificationRecipientsId: \"StackItemEmailCCNotificationRecipients\",\r\n DealOverviewTextFieldId: \"DealOverviewTextField\",\r\n ChannelContainerForMSStoreId: \"ChannelContainerForMSStore\",\r\n PrimaryResellerContainerId: \"PrimaryResellerContainer\",\r\n AdditionalResellersChoiceGroupId: \"AdditionalResellersChoiceGroup\",\r\n FinalTierResellersChoiceGroupId: \"FinalTierResellersChoiceGroup\",\r\n GuidanceTextForMSStoreId: \"GuidanceTextForMSStore\",\r\n GuidanceTextForResellerId: \"GuidanceTextForReseller\",\r\n StackItemForDealVerticalDropdownId: \"StackItemForDealVerticalDropdown\",\r\n StackContainerDomainId: \"StackContainerDomainId\",\r\n ExpirationHeading: \"Expiration Details\",\r\n AdditionalInformation: \"Additional Information\",\r\n StackItemAdditionalInformation: \"StackItemAdditionalInformation\",\r\n}\r\n","/**\r\n * Constants for API.\r\n * @const\r\n */\r\nexport const ApiConstants = {\r\n productTypeBase: \"/api/ProductType/\",\r\n getAllProductType: \"GetAllProductType\",\r\n countryBase: \"/api/Country/\",\r\n getAllCountries: \"GetAllCountries\",\r\n opportunityDeal: \"/api/OpportunityDeal/\",\r\n setOpportunityDealStatus: \"SetOpportunityDealStatus\",\r\n accountsBase: \"/api/Accounts/\",\r\n getAllActiveDistributors: \"GetAllActiveDistributors\",\r\n getAllActiveResellers: \"GetAllActiveResellers\",\r\n GetAllActiveResellersByProductAndCountries: \"GetAllActiveResellersByProductAndCountries\",\r\n getAllActiveResellersByProductAndCountry: \"GetAllActiveResellersByProductAndCountry\",\r\n GetResellersWithProductTypeRole: \"GetResellersWithProductTypeRole\",\r\n GetAddsAccountsByDmpAccountIds: \"getAddsAccountsByDmpAccountIds\",\r\n verticalBase: \"/api/BusinessVertical/\",\r\n getAllVerticals: \"GetAllVerticals\",\r\n contactBase: \"/api/Contact/\",\r\n getContactFromGraphByEmail: \"GetContactFromGraphByEmail\",\r\n getContactRoleOptions: \"GetContactRoleOptions\",\r\n opportunityBase: \"/api/Opportunity/\",\r\n getOpportunity: \"GetOpportunity\",\r\n saveDraftOpportunity: \"SaveOpportunityDraft\",\r\n revertOpportunityDealStatus: \"RevertOpportunity\",\r\n dealTypeBase: \"/api/DealType/\",\r\n getAllDealTypes: \"GetAllDealTypes\",\r\n saveOpportunity: \"SaveOpportunity\",\r\n saveOpportunityAsync: \"SaveOpportunityAsync\",\r\n userBase: \"/api/User/\",\r\n getUserDetails: \"GetUserDetails\",\r\n getAccountDetails: \"GetUserAccountDetailsAsync\",\r\n getChatbotUserRole: \"GetChatBotUserRole\",\r\n attachmentsBase: \"/api/Attachment/\",\r\n getCPStrategicLettersByOpportunityDealId: \"GetCPStrategicLettersByOpportunityDealId\",\r\n GetDashboardData: \"GetDashboardData\",\r\n validateOpportunityNameAndReseller: \"ValidateCaseAndReseller\",\r\n addOpportunityAccountToCase: \"AddOpportunityAccountToCase\",\r\n opportunityAccountBase: \"/api/OpportunityAccount/\",\r\n validateCustomers: \"ValidateDealCustomers\",\r\n opportunityDealProductSkuBase: \"/api/OpportunityDealProductSku/\",\r\n getOpportunityDealDiscountPeriodAndSkuMSRP: \"GetOpportunityDealDiscountPeriodAndSkuMSRP\",\r\n businessVertical: \"BusinessVerticalByCustomerVerticalAndCategory\",\r\n caseLetters: \"/api/CaseLetters/\",\r\n getCaseDecisionLetter: \"GetCaseDecisionLetter\",\r\n customerBase: \"/api/customer\",\r\n getCustomerIndustries: \"/GetCustomerIndustryVerticalDetails\",\r\n userVoiceBase: \"/api/UserVoice/\",\r\n saveUserVoice: \"SaveUserVoice\",\r\n opportunityDealCustomerBase: \"/api/OpportunityDealCustomer\",\r\n createUnmanagedCustomer: \"/CreateCustomer\",\r\n searchDuplicateDeal: \"SearchDuplicateDeal\",\r\n getDealQuantityThresholds: \"GetDealQuantityThresholds\",\r\n getDealDurationConfig: \"GetDealDurationConfiguration\",\r\n extendOpportunityDeal: \"ExtendOpportunityDeal\",\r\n getPricingProgramDashboardData: \"GetPricingProgramDashboardData\",\r\n getAllSpecialPricingProducts: \"GetAllSpecialPricingProducts\",\r\n updateUnmanagedCustomer: \"/UpdateCustomer\",\r\n blobBase: \"/api/BlobStorage/\",\r\n getBlobBufferByName: \"GetBlobBufferByName\",\r\n copyOpportunity: \"CopyOpportunity\",\r\n renewOpportunity: \"RenewOpportunity\",\r\n extensionConfig: \"GetDealExtensionConfig\",\r\n bidGridTypeBase: \"/api/BidGrid/\",\r\n getBidGridDashboardData: 'GetBidGridDashboardData',\r\n ruleValidationBase: \"/api/RuleValidation/\",\r\n getCustomMessageAndText: 'GetCustomMessageAndText',\r\n};","/* eslint-disable no-throw-literal */\r\nimport * as axiosStatic from \"axios\";\r\nimport { AxiosRequestConfig, AxiosResponse } from \"axios\";\r\nimport fetchJsonp from \"fetch-jsonp\";\r\nimport { isNullOrEmpty } from \"../../components/shared/common/util\";\r\nimport { ApplicationConstants } from \"../../models/ApplicationConstants\";\r\n\r\n/**\r\n * Base wrapper implementation for axios that does not provide an implementation for the passthrough to axios.\r\n * @class\r\n */\r\nexport class AxiosWrapperBase {\r\n /** axios instance to call through to.\r\n */\r\n private axios: axiosStatic.AxiosStatic;\r\n\r\n /**\r\n * Initializes a new instance of the `AxiosWrapperBase` class.\r\n * @constructor\r\n * @param {axiosStatic.AxiosStatic} axios Axios service instance.\r\n */\r\n constructor(axios?: axiosStatic.AxiosStatic) {\r\n this.axios = (axios || axiosStatic) as axiosStatic.AxiosStatic;\r\n }\r\n\r\n /**\r\n * Method to send any type of http call (get/post/put/etc.).\r\n * @method\r\n * @param config {axiosStatic.RequestOptions} The request detail.\r\n * @returns {Promise<AxiosResponse>} The result of the call.\r\n */\r\n public sendRequest(config: AxiosRequestConfig): Promise<AxiosResponse> {\r\n if (!config) {\r\n throw \"config must not be null\";\r\n }\r\n \r\n let headerConfig = {};\r\n const isAuthorizationEnabled = process.env.REACT_APP_AUTHORIZATION_ENABLED === \"true\";\r\n \r\n const refreshTokenPromise = isAuthorizationEnabled\r\n ? this.refreshTokenIfNeeded() // Refresh token only if enabled\r\n : Promise.resolve(); // No-op if authorization is disabled\r\n \r\n return refreshTokenPromise\r\n .then(() => {\r\n // Prepare headers after ensuring token is refreshed\r\n Object.assign(headerConfig, config.headers, {\r\n CorrelationId: sessionStorage.getItem(\"correlationId\"),\r\n UserEmail: sessionStorage.getItem(\"userEmail\"),\r\n \"Ocp-Apim-Subscription-Key\": process.env.REACT_APP_NEXTGEN_APIKEY,\r\n ...(isAuthorizationEnabled && sessionStorage.getItem(\"userToken\") && { 'Authorization': `Bearer ${sessionStorage.getItem(\"userToken\")}` })\r\n });\r\n \r\n config = {\r\n ...config,\r\n headers: headerConfig,\r\n };\r\n \r\n this.onRequest(config);\r\n let response = this.axios(config) as Promise<AxiosResponse>;\r\n \r\n this.onResponse(response);\r\n return response;\r\n })\r\n .catch((error) => {\r\n console.error(\"API Request Failed:\", error);\r\n throw error;\r\n });\r\n }\r\n \r\n\r\n /**\r\n * Convenient alias for doing a get service call.\r\n * @method\r\n * @param url {string} The url to make the service call to.\r\n * @param config {AxiosRequestConfig} Additional settings for the service call.\r\n * @returns {Promise<AxiosResponse>} The result of the call.\r\n */\r\n public get<T>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {\r\n return this.callWithMergedConfig(\"get\", url, config);\r\n }\r\n\r\n /**\r\n * Convenient alias for doing a delete service call.\r\n * @method\r\n * @param url {string} The url to make the service call to.\r\n * @param config {AxiosRequestConfig} Additional settings for the service call.\r\n * @returns {Promise<AxiosResponse>} The result of the call.\r\n */\r\n public delete(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse> {\r\n return this.callWithMergedConfig(\"delete\", url, config);\r\n }\r\n\r\n /**\r\n * Convenient alias for doing a head service call.\r\n * @method\r\n * @param url {string} The url to make the service call to.\r\n * @param config {AxiosRequestConfig} Additional settings for the service call.\r\n * @returns {Promise<AxiosResponse>} The result of the call.\r\n */\r\n public head(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse> {\r\n return this.callWithMergedConfig(\"head\", url, config);\r\n }\r\n\r\n /**\r\n * Convenient alias for doing a post service call.\r\n * @method\r\n * @param url {string} The url to make the service call to.\r\n * @param data {any} The data to send as the body of the request.\r\n * @param config {AxiosRequestConfig} Additional settings for the service call.\r\n * @returns {Promise<AxiosResponse>} The result of the call.\r\n */\r\n public post(url: string, data?: any, config?: AxiosRequestConfig): Promise<AxiosResponse> {\r\n return this.callWithMergedConfigWithData(\"post\", url, data, config);\r\n }\r\n\r\n /**\r\n * Convenient alias for doing a put service call.\r\n * @method\r\n * @param url {string} The url to make the service call to.\r\n * @param data {any} The data to send as the body of the request.\r\n * @param config {AxiosRequestConfig} Additional settings for the service call.\r\n * @returns {Promise<AxiosResponse>} The result of the call.\r\n */\r\n public put(url: string, data?: any, config?: AxiosRequestConfig): Promise<AxiosResponse> {\r\n return this.callWithMergedConfigWithData(\"put\", url, data, config);\r\n }\r\n\r\n /**\r\n * Convenient alias for doing a patch service call.\r\n * @method\r\n * @param url {string} The url to make the service call to.\r\n * @param data {any} The data to send as the body of the request.\r\n * @param config {AxiosRequestConfig} Additional settings for the service call.\r\n * @returns {Promise<AxiosResponse>} The result of the call.\r\n */\r\n public patch(url: string, data?: any, config?: AxiosRequestConfig): Promise<AxiosResponse> {\r\n return this.callWithMergedConfigWithData(\"patch\", url, data, config);\r\n }\r\n\r\n /**\r\n * Overridable method to do pre-processing before the request is sent.\r\n * @method\r\n * @param config {axiosStatic.RequestOptions} The request detail.\r\n */\r\n protected onRequest(config: AxiosRequestConfig): void { } // tslint:disable-line\r\n\r\n /**\r\n * Overridable method to do post-processing after the response is received.\r\n * @method\r\n * @param result {Promise<AxiosResponse>} The response detail.\r\n * @returns {Promise<AxiosResponse>} The result of the call with any required changes added.\r\n */\r\n protected onResponse(result: Promise<AxiosResponse>): Promise<AxiosResponse> {\r\n return result;\r\n }\r\n\r\n private refreshTokenIfNeeded(): Promise<void> {\r\n const refreshTokenUrl = process.env.REACT_APP_RSLR_REFRESH_TOKEN || \"\";\r\n const pcApiTimeout = Number(process.env.REACT_APP_PCAPI_TIMEOUT_MS);\r\n const logoutUrl = process.env.REACT_APP_RSLR_LOGOUT_API_URI;\r\n \r\n return new Promise((resolve, reject) => {\r\n const expiresOn = sessionStorage.getItem(\"userTokenExpiry\") || new Date().getTime();\r\n const isNearExpiry =\r\n new Date().getTime() + (ApplicationConstants.AccessTokenRefreshTimeInMinutes * 60 * 1000) >\r\n new Date(expiresOn).getTime();\r\n \r\n if (!isNearExpiry) {\r\n resolve(); // Token is still valid; no action needed\r\n return;\r\n }\r\n \r\n fetchJsonp(refreshTokenUrl, { timeout: pcApiTimeout })\r\n .then((response) => response.json())\r\n .then((tokenResponse) => {\r\n if (!isNullOrEmpty(tokenResponse)) {\r\n sessionStorage.setItem(\"userToken\", tokenResponse[\"AccessToken\"]);\r\n sessionStorage.setItem(\"userTokenExpiry\", tokenResponse[\"ExpiresOn\"]);\r\n resolve(); // Successfully refreshed\r\n } else {\r\n throw new Error(\"Empty token response\");\r\n }\r\n })\r\n .catch((ex) => {\r\n console.error(\"Token refresh failed:\", ex);\r\n sessionStorage.clear();\r\n window.open(logoutUrl, \"_self\");\r\n reject(ex); // Propagate error\r\n });\r\n });\r\n }\r\n\r\n \r\n /**\r\n * Merge the given method and url into the given config object and call through to axios.\r\n * @method\r\n * @param method {string} The type of http call to make.\r\n * @param url {string} The url to make the service call to.\r\n * @param config {AxiosRequestConfig} The request detail.\r\n * @returns {Promise<AxiosResponse>} The combined configuration.\r\n */\r\n private callWithMergedConfig(method: string, url: string, config?: AxiosRequestConfig): Promise<AxiosResponse> {\r\n var mergedConfig = Object.assign({}, config, {\r\n method: method,\r\n url: url\r\n });\r\n\r\n return this.sendRequest(mergedConfig);\r\n }\r\n\r\n /**\r\n * Merge the given method, url and data into the given config object and call through to axios.\r\n * @method\r\n * @param method {string} The type of http call to make.\r\n * @param url {string} The url to make the service call to.\r\n * @param data {any} The data to send as the body of the request.\r\n * @param config {AxiosRequestConfig} The request detail.\r\n * @returns {Promise<AxiosResponse>} The combined configuration.\r\n */\r\n private callWithMergedConfigWithData(method: string, url: string, data: any, config?: AxiosRequestConfig): Promise<AxiosResponse> {\r\n\r\n if (!url) {\r\n throw \"url must not be null\";\r\n }\r\n\r\n var mergedConfig = Object.assign({}, config, {\r\n method: method,\r\n url: url,\r\n data: data\r\n });\r\n\r\n return this.sendRequest(mergedConfig);\r\n }\r\n}","import { AxiosWrapperBase } from \"../infrastructure/axios-wrapper/AxiosWrapperBase\";\r\n\r\n/**\r\n * BaseService.\r\n * @class\r\n */\r\nexport class BaseService {\r\n /**\r\n * Base Url of API.\r\n * @type {string | undefined}\r\n */\r\n public static apiBaseUrl: string | undefined = process.env.REACT_APP_API_URI;\r\n\r\n /**\r\n * Axios Wrapper to make API call.\r\n * @type {AxiosWrapperBase}\r\n */\r\n public static axiosWrapper: AxiosWrapperBase = new AxiosWrapperBase();\r\n}","/**\r\n * Enum for Deal Type.\r\n * @readonly\r\n * @enum {DealType}\r\n */\r\nexport enum DealType\r\n{\r\n /**\r\n * CP Strategic.\r\n */\r\n CPStrategic = \"CP Strategic\",\r\n\r\n /**\r\n * Deal Registration.\r\n */\r\n DealRegistration = \"Deal Registration\",\r\n\r\n /**\r\n * Special Pricing.\r\n */\r\n SpecialPricing = \"Special Pricing\",\r\n\r\n /**\r\n * BidGrid Pricing.\r\n */\r\n BidGrid = \"Bid Grid\",\r\n\r\n /**\r\n * OTLE.\r\n */\r\n OTLE = \"OTLE\",\r\n}","/**\r\n * Enum for UserSubRole.\r\n * @readonly\r\n * @enum {UserSubRole}\r\n */\r\nexport enum UserSubRole {\r\n /// <summary>\r\n /// ADD\r\n /// </summary>\r\n ADD = \"ADD\",\r\n\r\n /// <summary>\r\n /// Surface Specialist\r\n /// </summary>\r\n SurfaceSpecialist = \"SSP\",\r\n\r\n /// <summary>\r\n /// ADR\r\n /// </summary>\r\n ADR = \"ADR\",\r\n\r\n /// <summary>\r\n /// MSStoreUser\r\n /// </summary>\r\n MSStoreUser = \"MSS\",\r\n\r\n /// <summary>\r\n /// DMP\r\n /// </summary>\r\n DMP = \"DMP\",\r\n\r\n /// <summary>\r\n /// SurfacePDM\r\n /// </summary>\r\n SurfacePDM = \"PDM\",\r\n\r\n /// <summary>\r\n /// SurfacePDMLead\r\n /// </summary>\r\n SurfacePDMLead = \"PML\",\r\n\r\n /// <summary>\r\n /// SurfaePMM\r\n /// </summary>\r\n SurfacePMM = \"PMM\",\r\n\r\n /// <summary>\r\n /// FinanceBusinessDesk.\r\n /// </summary>\r\n FinanceBusinessDesk = \"FBD\",\r\n\r\n /// <summary>\r\n /// SurfaceCE\r\n /// </summary>\r\n SurfaceCE = \"SCE\",\r\n\r\n /// <summary>\r\n /// CorpGBB\r\n /// </summary>\r\n CorpGBB = \"COU\",\r\n\r\n /// <summary>\r\n /// CorpAdmin\r\n /// </summary>\r\n CoprAdmin = \"COA\",\r\n\r\n /// <summary>\r\n /// CorpFinanceAdmin\r\n /// </summary>\r\n CorpFinanceAdmin = \"CFA\",\r\n\r\n /// <summary>\r\n /// OperationDeskVendor\r\n /// </summary>\r\n OperationDeskVendor = \"POD\",\r\n\r\n /// <summary>\r\n /// ClaimVendors\r\n /// </summary>\r\n ClaimVendors = \"CMT\",\r\n\r\n /// <summary>\r\n /// Reseller\r\n /// </summary>\r\n Reseller = \"Reseller\",\r\n\r\n /// <summary>\r\n /// ADDReseller\r\n /// </summary>\r\n ADDReseller = \"ADDReseller\",\r\n\r\n /// <summary>\r\n /// MSSeller\r\n /// </summary>\r\n MSSeller = \"MSSeller\",\r\n\r\n /// <summary>\r\n /// ClaimOnlyADD\r\n /// </summary>\r\n ClaimOnlyADD = \"COD\",\r\n}","/**\r\n * Enum for Message Type.\r\n * @readonly\r\n * @enum {Enum}\r\n */\r\nexport enum MessageType {\r\n /**\r\n * ClaimsValidationError.\r\n */\r\n ClaimsValidationError = 1,\r\n /**\r\n * OpportunityValidationError.\r\n */\r\n OpportunityValidationError = 2,\r\n /**\r\n * FieldGuidanceText.\r\n */\r\n FieldGuidanceText = 3,\r\n /**\r\n * FieldPlaceHolderText.\r\n */\r\n FieldPlaceHolderText = 4,\r\n /**\r\n * FieldLabelText.\r\n */\r\n FieldLabelText = 5,\r\n /**\r\n * PopupMessageText.\r\n */\r\n PopupMessageText = 6,\r\n}","/**\r\n * Enum for Partner Type.\r\n * @readonly\r\n * @enum {Enum}\r\n */\r\nexport enum PartnerType {\r\n /**\r\n * ADD value.\r\n */\r\n ADD = 1,\r\n /**\r\n * ADR value.\r\n */\r\n ADR = 2,\r\n /**\r\n * DMP value.\r\n */\r\n DMP = 3,\r\n /**\r\n * MsStore value.\r\n */\r\n MsStore = 4,\r\n /**\r\n * MsStore value.\r\n */\r\n Reseller = 5,\r\n /**\r\n * Additional Tier Reseller value.\r\n */\r\n AdditionalTierReseller = 6,\r\n /**\r\n * Final Tier Reseller value.\r\n */\r\n FinalTierReseller = 7,\r\n}","import { AxiosRequestConfig, AxiosResponse } from \"axios\";\r\nimport { ApplicationConstants } from \"../models/ApplicationConstants\";\r\nimport { IAccount } from \"../models/IAccount\";\r\nimport { IAttachment } from \"../models/IAttachment\";\r\nimport { IContact } from \"../models/IContact\";\r\nimport { ICountry } from \"../models/ICountry\";\r\nimport { IDashboardDataRequest } from \"../models/IDashboardDataRequest\";\r\nimport { IDealType } from \"../models/IDealType\";\r\nimport { IKeyValue } from \"../models/IKeyValue\";\r\nimport { IOpportunityDeal } from \"../models/IOpportunityDeal\";\r\nimport { IProductType } from \"../models/IProductType\";\r\nimport { IUserDetail } from \"../models/IUserDetail\";\r\nimport { IVertical } from \"../models/IVertical\";\r\nimport { PageMode } from \"../models/PageMode\";\r\nimport { SessionStorageConsts } from \"../models/SessionStorageConsts\";\r\nimport { IPageState } from \"../pages/pricingprogram/common/state/IPageState\";\r\nimport { ApiConstants } from \"./ApiConstants\";\r\nimport { BaseService } from \"./BaseService\";\r\nimport { IUserRoleDetail } from \"../models/IUserRoleDetail\";\r\nimport { IDataSaveResponse } from './../models/IDataSaveResponse';\r\nimport { IValidateOpportunityResponse } from \"../models/IValidateOpportunityResponse\";\r\nimport { IAddOpportunityAccountToCaseRequest } from \"../models/IAddOpportunityAccountToCaseRequest\";\r\nimport { IValidateCaseAndResellerRequest } from \"../models/IValidateCaseAndResellerRequest\";\r\nimport { IOpportunityDealProductSku } from \"../models/IOpportunityDealProductSku\";\r\nimport { getDistinctUserRole, getLoggedinUserRoleDetails, getUserRole, IsInternalPricingProgram } from \"../components/shared/common/util\";\r\nimport { ICustomerVertical } from \"../models/ICustomerVertical\";\r\nimport { IUserVoice } from \"../models/IUserVoice\";\r\n\r\nimport { IUnmanagedCustomer } from \"../models/IUnmanagedCustomer\"\r\nimport { IUnmanagedCustomerResult } from \"../models/IUnmanagedCustomerResult\"\r\nimport { IIndustryDropdown } from \"../models/IIndustryDropdown\";\r\nimport { IPricingProgramDuplicateDeal } from \"../models/IPricingProgramDuplicateDeal\";\r\nimport { IDealQuantityThresholds } from \"../models/IDealQuantityThresholds\";\r\nimport { IDealExtensionRequest } from \"../models/IDealExtensionRequest\";\r\nimport { IDealCopyRequest } from \"../models/IDealCopyRequest\";\r\nimport { IDealActionRequest } from \"../models/IDealActionRequest\";\r\nimport { IOpportunityDealDetails } from \"../models/IOpportunityDealDetails\";\r\nimport { IBidGridDeal } from \"../models/IBidGridDeal\";\r\nimport { IPricingProgram } from \"../models/IPricingProgramType\";\r\nimport { IDealDurationConfig } from \"../models/IDealDurationConfig\";\r\nimport _ from \"lodash\";\r\nimport { DealType } from \"../models/DealType\";\r\nimport { UserSubRole } from \"../models/UserSubRole\";\r\nimport { MessageType } from \"../models/MessageType\";\r\nimport { PartnerType } from \"../models/PartnerType\";\r\nimport { IDealRevertRequest } from \"../models/IDealRevertRequest\";\r\nimport { IDealExtensionConfig } from \"../models/IDealExtensionConfig\";\r\n\r\n/**\r\n * NextGenService.\r\n * @class\r\n*/\r\nclass NextGenService {\r\n /**\r\n * Method to Get Countries using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IProductType[]>>} The result of the call.\r\n */\r\n public async getAllCountries(): Promise<AxiosResponse<ICountry[]>> {\r\n return BaseService.axiosWrapper.get<ICountry[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.countryBase}${ApiConstants.getAllCountries}`);\r\n }\r\n\r\n /**\r\n * Method to Get Customer industries and verticals using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IIndustryDropdown[]>>} The result of the call.\r\n */\r\n public async getIndustries(): Promise<AxiosResponse<IIndustryDropdown[]>> {\r\n return BaseService.axiosWrapper.get<any>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.customerBase}${ApiConstants.getCustomerIndustries}`);\r\n }\r\n\r\n /**\r\n * Method to Get ProductTypes using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IProductType[]>>} The result of the call.\r\n */\r\n public async getProductTypes(): Promise<AxiosResponse<IProductType[]>> {\r\n return BaseService.axiosWrapper.get<IProductType[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.productTypeBase}${ApiConstants.getAllProductType}`);\r\n }\r\n\r\n /**\r\n * Gets the list of opportunity deal quantity thresholds\r\n * @returns {Promise<AxiosResponse<IDealQuantityThresholds[]>>} Deal quantity thresholds array\r\n */\r\n public async getDealQuantityThresholds(): Promise<AxiosResponse<IDealQuantityThresholds[]>> {\r\n return BaseService.axiosWrapper.get<IDealQuantityThresholds[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDeal}${ApiConstants.getDealQuantityThresholds}`);\r\n }\r\n\r\n /**\r\n * Gets the list of opportunity deal duration configs\r\n * @returns {Promise<AxiosResponse<IDealDurationConfig[]>>} Deal duration config array\r\n */\r\n public async getDealDurationConfig(): Promise<AxiosResponse<IDealDurationConfig[]>> {\r\n return BaseService.axiosWrapper.get<IDealDurationConfig[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDeal}${ApiConstants.getDealDurationConfig}`);\r\n }\r\n\r\n /**\r\n * Extends opportunity deal\r\n * @param extensionRequest Extension request\r\n * @returns \r\n */\r\n public async extendOpportunityDeal(extensionRequest: IDealExtensionRequest) {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDeal}${ApiConstants.extendOpportunityDeal}`, extensionRequest);\r\n }\r\n\r\n /**\r\n * Gets the deal extension count\r\n * @param opportunityDealId Opportunity deal Id\r\n * @returns Deal extension count\r\n */\r\n public async getDealExtensionConfig(opportunityDealId: string): Promise<AxiosResponse<IDealExtensionConfig>> {\r\n var params = new URLSearchParams();\r\n params.append(\"opportunityDealId\", opportunityDealId)\r\n\r\n return BaseService.axiosWrapper.get<IDealExtensionConfig>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDeal}${ApiConstants.extensionConfig}`, { params });\r\n }\r\n\r\n /**\r\n * Method to Post Opportunity Deal Status\r\n * @param opportunityDealId \r\n * @param stateCode \r\n * @param statusCode\r\n * @param fullName \r\n * @param email \r\n * @returns \r\n */\r\n public async setOpportunityDealStatus(opportunityDealId: string, stateCode: number, statusCode: number, fullName: string, email: string) {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDeal}${ApiConstants.setOpportunityDealStatus}?opportunityDealId=${opportunityDealId}&stateCode=${stateCode}&statusCode=${statusCode}&fullName=${fullName}&email=${email}`);\r\n }\r\n\r\n /**\r\n * Method to Post RevertOpportunity Deal Status\r\n * @param revertRequest \r\n * @returns \r\n */\r\n public async revertOpportunityDealStatus(revertRequest: IDealRevertRequest) {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityBase}${ApiConstants.revertOpportunityDealStatus}`, revertRequest, {\r\n headers: { 'Access-Control-Allow-Origin': '*' }\r\n });\r\n }\r\n\r\n /**\r\n * Method to Get Verticals using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IProductType[]>>} The result of the call.\r\n */\r\n public async getAllVerticals(): Promise<AxiosResponse<IVertical[]>> {\r\n return BaseService.axiosWrapper.get<IVertical[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.verticalBase}${ApiConstants.getAllVerticals}`);\r\n }\r\n\r\n /**\r\n * Method to Get Distributors Accounts using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IProductType[]>>} The result of the call.\r\n */\r\n public async getAllDistributors(): Promise<AxiosResponse<IAccount[]>> {\r\n var params = new URLSearchParams();\r\n params.append(\"partnerTypeRoles\", PartnerType.ADD.toString())\r\n return BaseService.axiosWrapper.get<IAccount[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.accountsBase}${ApiConstants.getAllActiveDistributors}`,\r\n { params });\r\n }\r\n\r\n /**\r\n * Method to Get Resellers Accounts using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IProductType[]>>} The result of the call.\r\n */\r\n public async getAllResellers(): Promise<AxiosResponse<IAccount[]>> {\r\n return BaseService.axiosWrapper.get<IAccount[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.accountsBase}${ApiConstants.getAllActiveResellers}`);\r\n }\r\n\r\n /**\r\n * Method to Get All DealTypes using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IDealType[]>>} The result of the call.\r\n */\r\n public async getAllDealTypes(): Promise<AxiosResponse<IDealType[]>> {\r\n return BaseService.axiosWrapper.get<IDealType[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.dealTypeBase}${ApiConstants.getAllDealTypes}`);\r\n }\r\n\r\n /**\r\n * Method to Get All the resource strings.\r\n * @method\r\n * @returns {[Key: string]: {[Key: string]: {[Key: string]: string}}} The result of the call.\r\n */\r\n public async getAllResourceStrings(): Promise<AxiosResponse<{ [Key: string]: { [Key: string]: { [Key: string]: string } } }>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.ruleValidationBase}${ApiConstants.getCustomMessageAndText}`,\r\n [MessageType.OpportunityValidationError, MessageType.FieldGuidanceText, MessageType.FieldPlaceHolderText, MessageType.FieldLabelText, MessageType.PopupMessageText],\r\n {\r\n headers: { 'Access-Control-Allow-Origin': '*' },\r\n });\r\n }\r\n\r\n /**\r\n * Method to Get Resellers Accounts using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IAccount[]>>} The result of the call.\r\n */\r\n public async getAllActiveResellersByProductCountriesAndType(productType: string, countryIds: string[]): Promise<AxiosResponse<IAccount[]>> {\r\n var params = new URLSearchParams();\r\n countryIds.forEach((countryId: string) => params.append(\"countryIds\", countryId));\r\n return BaseService.axiosWrapper.get<IAccount[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.accountsBase}${ApiConstants.GetAllActiveResellersByProductAndCountries}/${productType}`,\r\n { params });\r\n }\r\n\r\n /**\r\n * Method to Get Resellers Accounts for a given Product and Country using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IAccount[]>>} The result of the call.\r\n */\r\n public async getAllActiveResellersByProductAndCountry(productType: string, countryId: string): Promise<AxiosResponse<IAccount[]>> {\r\n return BaseService.axiosWrapper.get<IAccount[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.accountsBase}${ApiConstants.getAllActiveResellersByProductAndCountry}?productTypeId=${productType}&countryId=${countryId}`);\r\n }\r\n\r\n /**\r\n * Method to Get all Distributors for a given DMP account id and producttype.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IAccount[]>>} The result of the call.\r\n */\r\n public async getAddsAccountsByDmpAccountIds(productType: string, accounIds: string[]): Promise<AxiosResponse<{ [key: string]: IAccount[]; }>> {\r\n var params = new URLSearchParams();\r\n params.append(\"productTypeId\", productType);\r\n accounIds.forEach((accountId: string) => params.append(\"accounIds\", accountId));\r\n return BaseService.axiosWrapper.get<{ [key: string]: IAccount[]; }>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.accountsBase}${ApiConstants.GetAddsAccountsByDmpAccountIds}`,\r\n { params });\r\n }\r\n\r\n /**\r\n * Method to Get Microsoft Contact details from grpah API.\r\n * @method\r\n * @param email {string}\r\n * @returns {Promise<AxiosResponse<IContact>>} The result of the call.\r\n */\r\n public async getMicrosoftContactByAlias(email: string): Promise<AxiosResponse<IContact>> {\r\n return BaseService.axiosWrapper.get<IContact>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.contactBase}${ApiConstants.getContactFromGraphByEmail}/${email}`);\r\n }\r\n\r\n /**\r\n * Method to Get OptionsetValue of Contact Role.\r\n * @method\r\n * @param email {string}\r\n * @returns {Promise<AxiosResponse<IKeyValue[]>>} The result of the call.\r\n */\r\n public async getContactRoleOptions(): Promise<AxiosResponse<IKeyValue[]>> {\r\n return BaseService.axiosWrapper.get<IKeyValue[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.contactBase}${ApiConstants.getContactRoleOptions}`);\r\n }\r\n\r\n /**\r\n * Method to Get draft opportunity from server and set in the state.\r\n * @method\r\n * @param oppNumber {string}\r\n * @returns {Promise<AxiosResponse<ICPStrategicState>>} The result of the call.\r\n */\r\n public async getOpportunity(opportunityNumber: string, userRoleDetails: IUserRoleDetail[], pageMode: string): Promise<AxiosResponse<IPageState>> {\r\n const params = new URLSearchParams();\r\n let countries = \"\";\r\n let accounts = \"\";\r\n countries = _.uniq(userRoleDetails.map((userRoleDetail) => userRoleDetail.countryId)).join(',');\r\n accounts = _.uniq(userRoleDetails.map((userRoleDetail) => userRoleDetail.accountId)).join(',');\r\n let userRole = getDistinctUserRole(userRoleDetails);\r\n sessionStorage.setItem(SessionStorageConsts.userRole, userRole.toString());\r\n params.append(\"countries\", countries);\r\n params.append(\"accounts\", accounts);\r\n params.append(\"userRole\", userRole);\r\n return BaseService.axiosWrapper.get<IPageState>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityBase}${ApiConstants.getOpportunity}/${opportunityNumber}`, { params });\r\n }\r\n\r\n /**\r\n * Method to Get opportunity from server and set in the state.\r\n * @method\r\n * @param oppNumber {string}\r\n * @returns {Promise<AxiosResponse<IPageState>>} The result of the call.\r\n */\r\n public async getOpportunityCommon(opportunityNumber: string, userRoleDetails: IUserRoleDetail[], selectedDealCaseNumber: string): Promise<AxiosResponse<IPageState>> {\r\n const params = new URLSearchParams();\r\n let countries = \"\";\r\n let accounts = \"\";\r\n countries = userRoleDetails.map(function (userRoleDetail) { return userRoleDetail.countryId }).join(',');\r\n accounts = userRoleDetails.map(function (userRoleDetail) { return userRoleDetail.accountId }).join(',');\r\n let userRole = getDistinctUserRole(userRoleDetails);\r\n sessionStorage.setItem(SessionStorageConsts.userRole, userRole.toString());\r\n params.append(\"countries\", countries);\r\n params.append(\"accounts\", accounts);\r\n params.append(\"userRole\", userRole);\r\n if (!_.isEmpty(selectedDealCaseNumber)) {\r\n params.append(\"selectedDealCaseNumber\", selectedDealCaseNumber);\r\n }\r\n return BaseService.axiosWrapper.get<IPageState>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityBase}${ApiConstants.getOpportunity}/${opportunityNumber}`, { params });\r\n }\r\n\r\n /**\r\n * Method to save draft opportunity to server.\r\n * @method\r\n * @param opportunity {IPageState}\r\n * @returns {Promise<AxiosResponse<string>>} Saved Opportunity Name.\r\n */\r\n public async saveDraftOpportunity(opportunity: IPageState): Promise<AxiosResponse<string>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityBase}${ApiConstants.saveDraftOpportunity}`, opportunity, {\r\n headers: { 'Access-Control-Allow-Origin': '*' },\r\n });\r\n }\r\n\r\n /**\r\n * Method to save opportunity to server.\r\n * @method\r\n * @param opportunity {IPageState}\r\n * @returns {Promise<AxiosResponse<string>>} Saved Opportunity Name.\r\n */\r\n public async submitOpportunity(opportunity: IPageState): Promise<AxiosResponse<string>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityBase}${ApiConstants.saveOpportunity}`, opportunity, {\r\n headers: { 'Access-Control-Allow-Origin': '*' },\r\n });\r\n }\r\n\r\n /**\r\n * Method to save async opportunity to server.\r\n * @method\r\n * @param opportunity {IPageState}\r\n * @returns {Promise<AxiosResponse<string>>} Saved Opportunity Name.\r\n */\r\n public async submitOpportunityAsync(opportunity: IPageState): Promise<AxiosResponse<string>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityBase}${ApiConstants.saveOpportunityAsync}`, opportunity, {\r\n headers: { 'Access-Control-Allow-Origin': '*' },\r\n });\r\n }\r\n\r\n /**\r\n * Method to Get Customer Search Results using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IFacetData[]>>} The result of the call.\r\n */\r\n public async getCustomerSearchResults(filterString: string, selectedSearchValue: string, skipValue: number, allFacetNames: string[], top?: number): Promise<AxiosResponse<any[]>> {\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'api-key': process.env.REACT_APP_SEARCH_API_KEY || '',\r\n }\r\n };\r\n\r\n return BaseService.axiosWrapper.post(\r\n process.env.REACT_APP_SEARCH_API_URL_ENV + ApplicationConstants.CustomerSearchIndexApiUrl || '',\r\n {\r\n \"count\": true,\r\n \"facets\": allFacetNames,\r\n \"filter\": filterString,\r\n \"search\": selectedSearchValue,\r\n \"skip\": skipValue,\r\n \"searchMode\": ApplicationConstants.CognitiveSearchMode,\r\n \"top\": top != null ? top : 50\r\n },\r\n config\r\n );\r\n }\r\n\r\n /**\r\n * Method to Get Customer Search Results for Pricing Program using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IFacetData[]>>} The result of the call.\r\n */\r\n public async getPricingProgramAllDistinctCustomerSearchResults(filterString: string, selectedSearchValue: string, skipValue: number, searchMode: string): Promise<AxiosResponse<any[]>> {\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'api-key': process.env.REACT_APP_SEARCH_API_KEY || '',\r\n }\r\n };\r\n\r\n return BaseService.axiosWrapper.post(\r\n\r\n process.env.REACT_APP_SEARCH_API_URL_ENV + ApplicationConstants.PricingProgramAllDistinctCustomerSearchIndexApiUrl || '',\r\n {\r\n \"count\": true,\r\n \"filter\": filterString,\r\n \"search\": selectedSearchValue,\r\n \"skip\": skipValue,\r\n \"searchMode\": searchMode,\r\n },\r\n config\r\n );\r\n }\r\n\r\n /**\r\n * Method to Get User Details .\r\n * @method\r\n * @param email {string}\r\n * @returns {Promise<AxiosResponse<IUserDetail>>} The result of the call.\r\n */\r\n public async getUserDetails(userDetail: IUserDetail): Promise<AxiosResponse<IUserDetail>> {\r\n let headers: any = { 'Access-Control-Allow-Origin': '*' };\r\n\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.userBase}${ApiConstants.getUserDetails}`,\r\n userDetail,\r\n { headers }\r\n );\r\n }\r\n\r\n /**\r\n * Method to getAccountDetails .\r\n * @method\r\n * @param bearerToken {string}\r\n * @param userToken {string}\r\n * @returns {Promise<AxiosResponse<any>>} The result of the call ??\r\n */\r\n public async getUserAccountDetails(userEmail: string): Promise<AxiosResponse<any>> {\r\n let headers: any = { 'Access-Control-Allow-Origin': '*' };\r\n\r\n return BaseService.axiosWrapper.get<string>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.userBase}${ApiConstants.getAccountDetails}?userEmail=${userEmail}`,\r\n { headers }\r\n );\r\n }\r\n\r\n /**\r\n * Method to Get Chatbot User Role .\r\n * @method\r\n * @param userEmail {string}\r\n * @returns {Promise<AxiosResponse<string>>} The result of the call.\r\n */\r\n public async getChatbotUserRole(userEmail: string): Promise<AxiosResponse<string>> {\r\n return BaseService.axiosWrapper.get<string>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.userBase}${ApiConstants.getChatbotUserRole}?userEmail=${userEmail}`);\r\n }\r\n\r\n /**\r\n * Method to Get CPStrategicLetters Based on OpportunityDealId using API call.\r\n * @method\r\n * @param opportunityDealId \r\n * @param partnerRole \r\n * @returns {Promise<AxiosResponse<IAttachment[]>>} The result of the call.\r\n */\r\n public async getCPStrategicLettersByOpportunityDealId(opportunityDealId: string, partnerRole: string): Promise<AxiosResponse<IAttachment[]>> {\r\n return BaseService.axiosWrapper.get<IAttachment[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.attachmentsBase}${ApiConstants.getCPStrategicLettersByOpportunityDealId}?opportunityDealId=${opportunityDealId}&partnerRole=${partnerRole}`\r\n )\r\n }\r\n\r\n /**\r\n * Method to Get list of opportunity deal from server.\r\n * @method\r\n * @param dashboardDataRequest {IDashboardDataRequest}\r\n * @returns {Promise<AxiosResponse<Array<IOpportunityDeal>>} The result of the call.\r\n */\r\n public async getDashboardData(dashboardDataRequest: IDashboardDataRequest): Promise<AxiosResponse<IOpportunityDeal[]>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDeal}${ApiConstants.GetDashboardData}`, dashboardDataRequest);\r\n }\r\n\r\n /**\r\n * Method to Validate Case Id and to get valid Resellers.\r\n * @param validateCaseAndResellerRequest {IValidateCaseAndResellerRequest}\r\n * @returns {Promise<AxiosResponse<IValidateOpportunityResponse>>} The result of the call.\r\n */\r\n public async validateCaseAndReseller(validateCaseAndResellerRequest: IValidateCaseAndResellerRequest): Promise<AxiosResponse<IValidateOpportunityResponse>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDeal}${ApiConstants.validateOpportunityNameAndReseller}`, validateCaseAndResellerRequest, {\r\n headers: { 'Access-Control-Allow-Origin': '*' },\r\n });\r\n }\r\n\r\n /**\r\n * Method to Post Opportunity Deal Status\r\n * @param opportunityDealId {string}\r\n * @param addOpportunityAccountToCaseRequest {IAddOpportunityAccountToCaseRequest}\r\n * @returns {Promise<AxiosResponse<IDataSaveResponse>>}\r\n */\r\n public async AddOpportunityAccountToCase(opportunityId: string, addOpportunityAccountToCaseRequest: IAddOpportunityAccountToCaseRequest): Promise<AxiosResponse<IDataSaveResponse>> {\r\n let config = {\r\n headers: {\r\n \"Access-Control-Allow-Origin\": \"*\",\r\n \"Access-Control-Allow-Headers\": \"*\",\r\n \"content-type\": \"application/json\",\r\n }\r\n };\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityAccountBase}${ApiConstants.addOpportunityAccountToCase}?opportunityId=${opportunityId}`, addOpportunityAccountToCaseRequest, config);\r\n }\r\n /**\r\n * Method to Validate Deal Customers .\r\n * @method\r\n * @param email {string}\r\n * @returns {Promise<AxiosResponse<string>>} The result of the call.\r\n */\r\n public async validateDealCustomers(opportunity: IPageState): Promise<AxiosResponse<string>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityBase}${ApiConstants.validateCustomers}`, opportunity, {\r\n headers: { 'Access-Control-Allow-Origin': '*' },\r\n });\r\n }\r\n\r\n /**\r\n * Method to GetOpportunityDealDiscountPeriodAndSkuMSRP .\r\n * @method\r\n * @param opportunityDealId {string}\r\n * @returns {Promise<AxiosResponse<string>>} The result of the call.\r\n */\r\n public async getOpportunityDealDiscountPeriodAndSkuMSRP(opportunityDealId: string, userRoleDetails: IUserRoleDetail[], pageMode: string, dealType: string): Promise<AxiosResponse<IOpportunityDealProductSku[]>> {\r\n if (pageMode.toLowerCase() === PageMode.View.toLowerCase()) {\r\n var countries = null;\r\n if (IsInternalPricingProgram(dealType)) {\r\n countries = Array.from(new Set(userRoleDetails.filter(x => x.isLoggedInUserOrg == true).map(function (userRoleDetail) { return userRoleDetail.countryId }))).join(',');\r\n }\r\n else {\r\n countries = Array.from(new Set(userRoleDetails.map(function (userRoleDetail) { return userRoleDetail.countryId }))).join(',');\r\n }\r\n let accounts = Array.from(new Set(userRoleDetails.map(function (userRoleDetail) { return userRoleDetail.accountId }))).join(',');\r\n let userRole = getDistinctUserRole(userRoleDetails);\r\n const params = new URLSearchParams();\r\n params.append(\"countries\", countries);\r\n params.append(\"accounts\", accounts);\r\n params.append(\"userRole\", userRole);\r\n return BaseService.axiosWrapper.get<IOpportunityDealProductSku[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDealProductSkuBase}${ApiConstants.getOpportunityDealDiscountPeriodAndSkuMSRP}?opportunityDealId=${opportunityDealId}`, { params });\r\n }\r\n else {\r\n return BaseService.axiosWrapper.get<IOpportunityDealProductSku[]>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDealProductSkuBase}${ApiConstants.getOpportunityDealDiscountPeriodAndSkuMSRP}?opportunityDealId=${opportunityDealId}`);\r\n }\r\n }\r\n\r\n /**\r\n * Method to Get Business Vertical from Customer Vertical using API call.\r\n * @param vertical\r\n * @returns \r\n */\r\n public async getBusinessVertical(customerVertical: ICustomerVertical): Promise<AxiosResponse<IVertical>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.verticalBase}${ApiConstants.businessVertical}`,\r\n customerVertical\r\n , {\r\n headers: { 'Access-Control-Allow-Origin': '*' },\r\n });\r\n }\r\n\r\n /**\r\n * Method to Get CaseDecisionLetter Based on OpportunityDealId using API call.\r\n * @method\r\n * @param opportunityDealId \r\n * @param partnerRole \r\n * @returns {Promise<AxiosResponse<>>} The result of the call.\r\n */\r\n public async getCaseLetters(opportunityDealId: string, userRoleDetails: IUserRoleDetail[], pricingProgram: string, dashboardDataRequest: any, isSKUsRequired = true) {\r\n const params = new URLSearchParams();\r\n var userRole = getUserRole();\r\n var userSubRole = _.uniq(userRole.split(\",\")).join(\",\");\r\n if (userSubRole.includes(UserSubRole.MSStoreUser)) {\r\n userSubRole = UserSubRole.MSStoreUser\r\n } else {\r\n userSubRole = userSubRole.split(\",\")[0]\r\n }\r\n params.append(\"userRole\", userSubRole);\r\n params.append(\"pricingprogram\", `${pricingProgram}`);\r\n params.append(\"isSKUsRequired\", `${isSKUsRequired}`);\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.caseLetters}${ApiConstants.getCaseDecisionLetter}?opportunityDealId=${opportunityDealId}&${params}`, dashboardDataRequest);\r\n }\r\n\r\n /**\r\n * Method to save customer to server.\r\n * @method\r\n * @param createUnmanagedCustomer {IUnmanagedCustomer}\r\n * @returns {Promise<AxiosResponse<IDataSaveResponse>>} .\r\n */\r\n public async createUnmanagedCustomer(createUnmanagedCustomer: IUnmanagedCustomer): Promise<AxiosResponse<IUnmanagedCustomerResult>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDealCustomerBase}${ApiConstants.createUnmanagedCustomer}`, createUnmanagedCustomer, {\r\n headers: { 'Access-Control-Allow-Origin': '*' },\r\n });\r\n }\r\n\r\n /**\r\n * Method to update customer to server.\r\n * @method\r\n * @param updateUnmanagedCustomer {IUnmanagedCustomer}\r\n * @returns {Promise<AxiosResponse<IDataSaveResponse>>} .\r\n */\r\n public async updateUnmanagedCustomer(updateUnmanagedCustomer: IUnmanagedCustomer): Promise<AxiosResponse<IUnmanagedCustomerResult>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDealCustomerBase}${ApiConstants.updateUnmanagedCustomer}`, updateUnmanagedCustomer, {\r\n headers: { 'Access-Control-Allow-Origin': '*' },\r\n });\r\n }\r\n\r\n /**\r\n * Method to search DuplicateDeal\r\n * @param pricingProgramDuplicateDeal \r\n * @returns object\r\n */\r\n public async searchDuplicateDeal(pricingProgramDuplicateDeal: IPricingProgramDuplicateDeal) {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDeal}${ApiConstants.searchDuplicateDeal}`,\r\n pricingProgramDuplicateDeal\r\n , {\r\n headers: { 'Access-Control-Allow-Origin': '*' },\r\n });\r\n }\r\n\r\n /**\r\n * Method to Get Customer Search Results for Pricing Program using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IFacetData[]>>} The result of the call.\r\n */\r\n public async getPricingProgramCustomerSearchResults(filterString: string, selectedSearchValue: string, skipValue: number, allFacetNames: string[], searchMode: string, top?: number): Promise<AxiosResponse<any[]>> {\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'api-key': process.env.REACT_APP_SEARCH_API_KEY || '',\r\n }\r\n };\r\n\r\n return BaseService.axiosWrapper.post(\r\n process.env.REACT_APP_SEARCH_API_URL_ENV + ApplicationConstants.PricingProgramCustomerSearchIndexApiUrl || '',\r\n {\r\n\r\n \"count\": true,\r\n \"facets\": allFacetNames,\r\n \"filter\": filterString,\r\n \"search\": selectedSearchValue,\r\n \"skip\": skipValue,\r\n \"searchMode\": searchMode,\r\n \"top\": top != null ? top : 50\r\n },\r\n config\r\n );\r\n }\r\n\r\n /**\r\n * Method to Get list of opportunity deal from server.\r\n * @method\r\n * @param dashboardDataRequest {IDashboardDataRequest}\r\n * @returns {Promise<AxiosResponse<Array<IPricingProgram>>} The result of the call.\r\n */\r\n public async getPricingProgramDashboardData(dashboardDataRequest: IDashboardDataRequest): Promise<AxiosResponse<IPricingProgram>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDeal}${ApiConstants.getPricingProgramDashboardData}`, dashboardDataRequest);\r\n }\r\n\r\n /**\r\n * Clones opportunity deal\r\n * @param copyRequest copy request\r\n * @returns \r\n */\r\n public async copyOpportunity(copyRequest: IDealCopyRequest): Promise<AxiosResponse<string>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityBase}${ApiConstants.copyOpportunity}`, copyRequest, {\r\n headers: { 'Access-Control-Allow-Origin': '*' }\r\n });\r\n }\r\n\r\n /**\r\n * Renews opportunity deal\r\n * @param renewRequest renew request\r\n * @returns \r\n */\r\n public async renewOpportunity(renewRequest: IDealActionRequest): Promise<AxiosResponse<string>> {\r\n if (renewRequest.dealTypeName !== DealType.CPStrategic) {\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n let countries = \"\";\r\n let accounts = \"\";\r\n countries = userRoleDetails.map(function (userRoleDetail) { return userRoleDetail.countryId }).join(',');\r\n accounts = userRoleDetails.map(function (userRoleDetail) { return userRoleDetail.accountId }).join(',');\r\n let userRole = getDistinctUserRole(userRoleDetails);\r\n sessionStorage.setItem(SessionStorageConsts.userRole, userRole.toString());\r\n renewRequest.countries = countries;\r\n renewRequest.accounts = accounts;\r\n renewRequest.userRole = userRole;\r\n }\r\n\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityBase}${ApiConstants.renewOpportunity}`, renewRequest, {\r\n headers: { 'Access-Control-Allow-Origin': '*' }\r\n });\r\n }\r\n\r\n /**\r\n * Method to Get list of opportunity deal from server.\r\n * @method\r\n * @param dashboardDataRequest {IDashboardDataRequest}\r\n * @returns {Promise<AxiosResponse<Array<IBidGridDeal>>} The result of the call.\r\n */\r\n public async getBidGridDashboardData(dashboardDataRequest: IDashboardDataRequest): Promise<AxiosResponse<IBidGridDeal[]>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.bidGridTypeBase}${ApiConstants.getBidGridDashboardData}`, dashboardDataRequest);\r\n }\r\n\r\n /**\r\n * Method to Get list of ProductInformation from server.\r\n * @method\r\n * @param dashboardDataRequest {IDashboardDataRequest}\r\n * @returns {Promise<AxiosResponse<Array<IOpportunityDealProductSku>>} The result of the call.\r\n */\r\n public async getProductinformationDashboardData(dashboardDataRequest: IDashboardDataRequest): Promise<AxiosResponse<IOpportunityDealProductSku[]>> {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.opportunityDealProductSkuBase}${ApiConstants.getAllSpecialPricingProducts}`, dashboardDataRequest);\r\n }\r\n\r\n /**\r\n * Method to Get Blob Array buffer as string.\r\n * @method\r\n * @returns {Promise<AxiosResponse<string>>} The result of the call.\r\n */\r\n public async getDocumentFromBlob(blobName: string): Promise<AxiosResponse<string>> {\r\n return BaseService.axiosWrapper.get<string>(\r\n `${BaseService.apiBaseUrl}${ApiConstants.blobBase}${ApiConstants.getBlobBufferByName}?name=${blobName}`);\r\n }\r\n\r\n /**\r\n * Method to Get Product Search Results using API call.\r\n * @method\r\n * @returns {Promise<AxiosResponse<IFacetData[]>>} The result of the call.\r\n */\r\n public async getProductSearchResults(url: string, filterString: string, selectedSearchValue: string, skipValue: number, allFacetNames: string[], top?: number): Promise<AxiosResponse<any[]>> {\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'api-key': process.env.REACT_APP_SEARCH_API_KEY || '',\r\n }\r\n };\r\n\r\n return BaseService.axiosWrapper.post(\r\n url || '',\r\n {\r\n \"count\": true,\r\n \"facets\": allFacetNames,\r\n \"filter\": filterString,\r\n \"search\": selectedSearchValue,\r\n \"skip\": skipValue,\r\n \"searchMode\": ApplicationConstants.CognitiveSearchMode,\r\n \"top\": top != null ? top : 50\r\n },\r\n config\r\n );\r\n }\r\n\r\n /**\r\n * Method to Post the Rating\r\n * @param userVoice \r\n * @returns boolean\r\n */\r\n public async saveUserVoice(userVoice: IUserVoice) {\r\n return BaseService.axiosWrapper.post(\r\n `${BaseService.apiBaseUrl}${ApiConstants.userVoiceBase}${ApiConstants.saveUserVoice}`,\r\n userVoice\r\n , {\r\n headers: { 'Access-Control-Allow-Origin': '*' },\r\n });\r\n }\r\n}\r\n\r\nexport const nextGenService = new NextGenService();","/**\r\n * Enum for UserRole.\r\n * @readonly\r\n * @enum {UserRole}\r\n */\r\nexport enum UserRole {\r\n\r\n /// <summary>\r\n /// channel\r\n /// </summary>\r\n Channel = \"CHL\",\r\n\r\n /// <summary>\r\n /// MSStore\r\n /// </summary>\r\n MSStore = \"MST\",\r\n\r\n /// <summary>\r\n /// MSSeller\r\n /// </summary>\r\n MSSeller = \"MSS\",\r\n\r\n /// <summary>\r\n /// BusinessDesk\r\n /// </summary>\r\n BusinessDesk = \"BD\"\r\n}","/**\r\n * Class containing shortcuts and methods that should be in javascript but isn't.\r\n * @class\r\n */\r\nexport class JavaScriptExtensions {\r\n\r\n /**\r\n * Tests whether an object is defined or not.\r\n * @method\r\n * @param object {any} The object to check.\r\n * @returns {boolean} true if the object is defined, false otherwise.\r\n */\r\n public static isDefined(object: any): boolean {\r\n return typeof object !== \"undefined\";\r\n }\r\n\r\n /**\r\n * Tests whether an object is undefined or null.\r\n * @method\r\n * @param object {any} The object to check.\r\n * @returns {boolean} true if the object is undefined, false otherwise.\r\n */\r\n public static isNullOrUndfinedOrEmpty<T>(object: T | null | undefined): boolean {\r\n return typeof object === \"undefined\" || object === null;\r\n }\r\n\r\n /**\r\n * Tests whether an string is defined or null or empty.\r\n * @method\r\n * @param str {any} The tring to check.\r\n * @returns {boolean} true if the string is undefined, null or Empty, false otherwise.\r\n */\r\n public static isEmptyOrNullOrUndefined(str: string | undefined): boolean {\r\n return str === null || str === undefined || str === \"\";\r\n }\r\n\r\n /**\r\n * Tests whether an string is empty guid\r\n * @method\r\n * @param str {any} String to check.\r\n * @returns {boolean} true if the string is empty guid, null or Empty, false otherwise.\r\n */\r\n public static isEmptyGuid(str: string | undefined): boolean {\r\n return str === null || str === undefined || str === \"\" || str === \"00000000-0000-0000-0000-000000000000\";\r\n }\r\n\r\n /**\r\n * Replaces the placeholders in the format string with the given arguments.\r\n * @method\r\n * @param format {string} The format string with the placeholders to replace.\r\n * @param args {string[]} The arguments to replace the placeholders with.\r\n * @returns {string} The format string with the placeholders replaced.\r\n */\r\n public static stringFormat(format: string, ...args: string[]): string {\r\n for (var ndx = 0; ndx < args.length; ++ndx) {\r\n format = format.replace(new RegExp(\"\\\\{\" + ndx + \"\\\\}\", \"g\"), args[ndx]);\r\n }\r\n\r\n return format;\r\n };\r\n\r\n /**\r\n * Compare two strings are equal or not.\r\n * @method\r\n * @param oldStr {string} The old string to check.\r\n * @param newStr {string} The new string to check.\r\n * @returns {boolean} true if the both strings are equal, false otherwise.\r\n */\r\n public static isEqual(oldStr: string | undefined, newStr: string | undefined): boolean {\r\n if (!this.isEmptyOrNullOrUndefined(oldStr) && !this.isEmptyOrNullOrUndefined(newStr) && (oldStr === newStr)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n}","/**\r\n * Enum for AsyncProcessStatus.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum AsyncProcessStatus {\r\n\r\n /**\r\n * NotStarted.\r\n */\r\n NotStarted = 0,\r\n\r\n /**\r\n * InProgress.\r\n */\r\n InProgress = 1,\r\n\r\n /**\r\n * Completed.\r\n */\r\n Completed = 2,\r\n}","/**\r\n * Local Storage Constants.\r\n * @constant\r\n */\r\nexport const LocalStorageConsts = {\r\n savedOpportunity: \"savedOpportunity\",\r\n}","/**\r\n * Enum for FieldMapMode.\r\n * @readonly\r\n * @enum \r\n */\r\nexport enum FieldMapMode {\r\n /**\r\n * Diabled field config.\r\n */\r\n Disable = \"Disable\",\r\n\r\n /**\r\n * Hidden field config.\r\n */\r\n Hidden = \"Hidden\",\r\n}","import { OpportunityDealStatusCodes } from \"./OpportunityDealStatusCodes\";\r\nimport { OpportunityDealStatusNames } from \"./OpportunityDealStatusNames\";\r\n\r\n/**\r\n * Label for Deal Status.\r\n * @readonly\r\n * @type {Map<number, string>}\r\n */\r\n export const DealStatusLabel: Map<number, string> = new Map<number, string>([\r\n [OpportunityDealStatusCodes.Draft, OpportunityDealStatusNames.Draft],\r\n [OpportunityDealStatusCodes.Approved, OpportunityDealStatusNames.Approved],\r\n [OpportunityDealStatusCodes.Denied, OpportunityDealStatusNames.Denied],\r\n [OpportunityDealStatusCodes.Unassigned, OpportunityDealStatusNames.DecisionPending],\r\n [OpportunityDealStatusCodes.Expired, OpportunityDealStatusNames.Expired],\r\n [OpportunityDealStatusCodes.DealPricingApprovedPendingChannelStatus, OpportunityDealStatusNames.DealPricingApprovedPendingChannel],\r\n [OpportunityDealStatusCodes.ForcedExpire, OpportunityDealStatusNames.ForcedExpire],\r\n [OpportunityDealStatusCodes.InProgress, OpportunityDealStatusNames.DecisionPending],\r\n [OpportunityDealStatusCodes.NeedMoreInfo, OpportunityDealStatusNames.NeedMoreInfo],\r\n [OpportunityDealStatusCodes.Incomplete, OpportunityDealStatusNames.Incomplete],\r\n [OpportunityDealStatusCodes.DraftRenew, OpportunityDealStatusNames.DraftRenew],\r\n [OpportunityDealStatusCodes.PendingSecondaryReview, OpportunityDealStatusNames.PendingSecondaryReview]\r\n ]);","export enum SpecialLocationtype {\r\n China = 7,\r\n Japan = 6,\r\n WorldWide = 13,\r\n}","export enum RequestorsRoleType {\r\n ADR = 3, //Reseller Type\r\n DMP = 3, //Reseller Type\r\n ADD = 7, //Distributor \r\n MSStore = 13, //Internal\r\n Invalid = 0\r\n}","import { RequestorsRoleType } from \"./RequestorRoleType\"\r\nimport { SpecialLocationtype } from \"./SpecialLocationtype\"\r\n\r\nexport enum ChannelDisplayFunctionalities {\r\n //Bitwise AND operations\r\n PrimaryResellersOnly = RequestorsRoleType.ADD & SpecialLocationtype.WorldWide,\r\n PrimaryAndFinalTierResellers = RequestorsRoleType.ADD & SpecialLocationtype.China,\r\n PrimaryandAdditionalResellers = RequestorsRoleType.ADD & SpecialLocationtype.Japan,\r\n AdditionalAndDistributors = ((RequestorsRoleType.ADR & SpecialLocationtype.Japan) || (RequestorsRoleType.DMP & SpecialLocationtype.Japan)),\r\n FinalTierAndDistributors = (RequestorsRoleType.ADR & SpecialLocationtype.China) || (RequestorsRoleType.DMP & SpecialLocationtype.China),\r\n MultipleDistributorsOnly = (RequestorsRoleType.ADR & SpecialLocationtype.WorldWide) || (RequestorsRoleType.DMP & SpecialLocationtype.WorldWide),\r\n MSStore = RequestorsRoleType.MSStore & SpecialLocationtype.WorldWide,\r\n}\r\n// 8 9 10 11 12 13 14 15\r\n// 1000 1001 1010 1011 1100 1101 1110 1111\r\n\r\n// ADD 0111 - Japan - 0110 = 6 //Add_PrimaryandAdditionalResellers\r\n// ADD 0111 - China - 0111 = 7 //Add_PrimaryAndFinalTierResellers\r\n// ADD 0111 - None - 1101 = 5 //Add_PrimaryResellersOnly\r\n\r\n// ADR DMP 0011 - China - 0111 = 3 //Add_FinalTierAndDistributors\r\n\r\n// ADR DMP 0011 - Japan - 0110 = 2 //Add_AdditionalAndDistributors\r\n\r\n// MSS 1101 - None - 1101 = 13 //Add_MSStore\r\n\r\n// ADR DMP - 0011 - None - 1101 = 1 //Add_MultipleDistributorsOnly","/**\r\n * Enum for OpportunityDealClosureDecisionType.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum OpportunityDealClosureDecisionType {\r\n /**\r\n * Approved value.\r\n */\r\n Approved = 441820000,\r\n\r\n /**\r\n * ApprovedPendingChannel value.\r\n */\r\n ApprovedPendingChannel = 441820002,\r\n\r\n /**\r\n * EditPendingReview value.\r\n */\r\n EditPendingReview = 441820004,\r\n\r\n /**\r\n * Denied value.\r\n */\r\n Denied = 441820001,\r\n\r\n /**\r\n * InsufficientInformation value.\r\n */\r\n InsufficientInformation = 441820003,\r\n\r\n /**\r\n * RequireAdditionalInformation value.\r\n */\r\n RequireAdditionalInformation = 441820005,\r\n}","/**\r\n * Enum for OpportunityDealClosureDecisionType.\r\n * @readonly\r\n * @enum {string}\r\n */\r\n export enum OpportunityDealClosureDecisionName {\r\n /**\r\n * Approved value.\r\n */\r\n Approved = \"Approved\",\r\n\r\n /**\r\n * ApprovedPendingChannel value.\r\n */\r\n ApprovedPendingChannel = \"Approved Pending Channel\",\r\n\r\n /**\r\n * EditPendingReview value.\r\n */\r\n EditPendingReview = \"Edit Pending Review\",\r\n\r\n /**\r\n * Denied value.\r\n */\r\n Denied = \"Denied\",\r\n\r\n /**\r\n * InsufficientInformation value.\r\n */\r\n InsufficientInformation = \"Insufficient Information\",\r\n\r\n /**\r\n * RequireAdditionalInformation value.\r\n */\r\n RequireAdditionalInformation = \"Require Additional Information\",\r\n}","/**\r\n * Enum for OpportunityDealPortalEditStatusNames.\r\n * @readonly\r\n * @enum\r\n */\r\nexport enum OpportunityDealPortalEditStatusNames {\r\n /**\r\n * Review Complete Name.\r\n */\r\n ReviewComplete = \"Review Complete\",\r\n\r\n /**\r\n * Edit Under Review Name.\r\n */\r\n EditUnderReview = \"Edit Under Review\",\r\n\r\n /**\r\n * Approved Name.\r\n */\r\n Approved = \"Approved\",\r\n\r\n /**\r\n * Edit Pending Review Name.\r\n */\r\n EditPendingReview = \"Edit Pending Review\",\r\n}\r\n","/**\r\n * Enum for AffiliationTypes.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum AffiliationType {\r\n\r\n /**\r\n * AffiliateCompanies value.\r\n */\r\n AffiliateCompanies = 1,\r\n\r\n /**\r\n * ConsortiumBuying value.\r\n */\r\n ConsortiumBuying = 2,\r\n\r\n /**\r\n * Framework Agreement value.\r\n */\r\n FrameworkAgreement = 3,\r\n\r\n /**\r\n * AffiliateCompanies value.\r\n */\r\n Others = 4,\r\n}","/**\r\n * Enum for ChannelStructure.\r\n * @readonly\r\n * @enum {Enum}\r\n */\r\nexport enum ChannelStructure {\r\n /**\r\n * Cascade CAS-ID to Customer value.\r\n */\r\n Customer = 1,\r\n\r\n /**\r\n * Cascade CAS-ID only to ADD value.\r\n */\r\n Distributor = 2,\r\n\r\n /**\r\n * Skip Channel value.\r\n */\r\n Skip = 3\r\n}","/**\r\n * Enum for DealGeoCountryType.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum DealGeoCountryType {\r\n\r\n /**\r\n * SingleCountryDeal value.\r\n */\r\n SingleCountryDeal = 0,\r\n\r\n /**\r\n * MultiNationalDeal value.\r\n */\r\n MultiNationalDeal = 1,\r\n}","/**\r\n * Enum for All selection dropdown options.\r\n * @readonly\r\n * @enum {Enum}\r\n */\r\nexport enum AccountAllType {\r\n /**\r\n * All.\r\n */\r\n All = 1,\r\n /**\r\n * All EUEFTA.\r\n */\r\n AllEuefta = 2,\r\n /**\r\n * Default.\r\n */\r\n None = 3,\r\n}","/**\r\n * ErrorMessage Constants.\r\n * @constant \r\n */\r\nexport const ErrorMessages = {\r\n RequiredProductGroup: \"Product Group is a required field.\",\r\n RequiredDealGeoCoverage: \"Deal Geo Coverage is a required field.\",\r\n RequiredDealCountries: \"Deal Country(s) is a required field.\",\r\n MultipleDealCountriesError: \"Please select more than one Geo Country for Multi-National Deal.\",\r\n RequiredAffiliationType: \"Affiliation Type is a required field.\",\r\n RequiredAffiliationTypeOthers: \"Affiliation Type Others is a required field.\",\r\n RequiredFieldError: \"This is required field.\",\r\n DealContactInputError: \"Enter valid Microsoft email or alias.\",\r\n DealContactNameInputError: \"No contact found for given alias/email.\",\r\n RequiredLegalEntity: \"Please select at least one Legal Entity per each selected Geo Country.\",\r\n SingleRequiredLegalEntity: \"Please select a Legal Entity.\",\r\n ValidLegalEntityName: \"Please select the Legal Entity with valid Legal Entity Name.\",\r\n PrimaryLegalEntityCustomer: \"Please select the Primary Legal Entity.\",\r\n LegalEntityDealVolume: \"Please select valid Deal Volume for legal entities.\",\r\n RequiredChannelOverview: \"Channel Overview is a required field.\",\r\n RequiredChannelStructure: \"Channel Structure is a required field.\",\r\n DuplicateADRErrorText: \"Duplicate Country and Partner Type are not allowed.\",\r\n RequiredChannelSkip: \"Channel Skip Reason is a required field.\",\r\n RequiredChannelJustification: \"Channel Justification is a required field.\",\r\n RequiredChannelPartner: \"One of the Channel Partners row has not valid input.\",\r\n RequiredResellerPartner: \"Please select at least one Reseller.\",\r\n RequiredChannelException: \"Please provide minimum one attachment as proof of Partner Selected Channel exception.\",\r\n RequiredAttachementException: \"Please provide minimum one attachment as proof in Channel.\",\r\n RequiredProofOfAttachementException: \"Please provide minimum one attachment - Proof of End Customer's Preference.\",\r\n RequiredDealName: \"Deal Name is a required field.\",\r\n RequiredDealOverview: \"Deal Overview is a required field.\",\r\n RequiredDealVertical: \"Deal Vertical is a required field.\",\r\n RequiredExpirationDate: \"Expiration Date is a required field.\",\r\n RequiredExpirationDateJustification: \"Expiration Date Justification is a required field.\",\r\n RequiredProduct: \"Product is required field.\",\r\n RequiredProductQuantity: \"Invalid Quantity, please input valid quantity value.\",\r\n RequiredProductGeoCountry: \"Please add at least one product for per selected Geo Country.\",\r\n SingleRequiredProductGeoCountry: \"Please add at least one product.\",\r\n RequiredDealContacts: \"One of the selected Deal Contacts has missing required field(s).\",\r\n LegalEntityValidationError: \"Please fix the errors in the selected Legal Entities.\",\r\n APIErrorMessage: \"An error occurred while processing your request. Please try after some time.\",\r\n TotalDealVolume: \"Deal Volume should not be 0. Please enter valid Deal Volume.\",\r\n RequiredLengthForResellerName: \"Please provide minimum of 3 characters.\",\r\n ValidEmailError: \"Please enter valid email address(es).\",\r\n ValidPostalCodeError: \"Please enter valid postal code.\",\r\n ValidCustomerDomainError: \"Please enter valid customer domain.\",\r\n RequiredChannelContactError: \"Please enter valid email address(es) for all channel contacts.\",\r\n ValidEmailCCRecipientsError: \"Please enter valid email CC Notification Recipient(s).\",\r\n\tCountryRequired: \"Value required for 'Customer Country', please select country for Customer Search.\",\r\n CustomerNameRequired: \"Value required for 'Customer Name (English)', please input Customer Name (English).\",\r\n CustomerLocalNameRequired: \"Value required for 'Customer Name (Local Language)', please input Customer Name (Local Language).\",\r\n AddressLine1Required: \"Value required for 'Address', please input Address.\",\r\n PostalCodeRequired: \"Value required for 'ZIP / Postal Code', please input ZIP / Postal Code.\",\r\n CityRequired: \"Value required for 'City', please input City.\",\r\n StateRequired: \"Value required for 'State / Province', please input State / Province.\",\r\n IndustryRequired: \"Value required for 'Industry', please select Industry for Customer.\",\r\n VerticalRequired: \"Value required for 'Vertical', please select Vertical for Customer.\",\r\n VerticalCategoryRequired: \"Value required for 'Vertical Category', please select Vertical Category for Customer.\",\r\n WebPageURLRequired: \"Please Enter web page url\",\r\n WebPageURLpattern: \"Please check the web page url\",\r\n EmailPattern: \"Please check the email pattern, Required email pattern @xyz.com\",\r\n CustomerNameEnglishValidationMsg:\"\\\"Account Name\\\" entered by user is not eligible, and an English name must be entered.\",\r\n FileExtensionError: \"File type {0} is not allowed. Allowed file types are {1}.\",\r\n DealInfoDealNameRequired: \"Value required for 'Deal Name', please input Deal Name.\",\r\n DealInfoDealVerticalRequired: \"Value required for 'Deal Vertical', please input Deal Vertical.\",\r\n DealInfoCustomerDomainRequired: \"Value required for 'Customer Domain'.\",\r\n DealInfoDeviceShipToAddressRequired: \"Value required for 'Street Address', please input Street Address.\",\r\n DealInfoCityRequired: \"Value required to 'City', please input City.\",\r\n DealInfoStateRequired: \"Value required for 'State or Province', please input State or Province.\",\r\n DealInfoPostalCodeRequired: \"Value required for 'Postal Code', please input Postal Code.\",\r\n DealInfoDealOverviewRequired: \"Value required for 'Deal Overview', please input Deal Overview.\",\r\n DealInfoPreSalesRequired: \"Value required for 'Pre-sales Activities', please input Pre-sales Activities.\",\r\n DealInfoRfpJustificationRequired: \"Value required for 'Justification', please input Justification.\",\r\n DealInfoCommittedBlankDealVolume: \"Committed Deal Volume should not be blank, please input quantity.\", \r\n DealInfoCommittedZeroDealVolume: \"Committed Volume should not be Zero, please input quantity.\" ,\r\n DealInfoCommittedMinimumThreshold: \"Commited Volume does not meet minimum threshold.\" ,\r\n RequiredMSStoreHub: \"Value required for 'Hub Name', please input Hub name.\",\r\n RequiredMSStoreDigitalStore: \"Value required for 'Digital Store Name', please input Digital Store Name.\",\r\n RequiredCity: \"Value required for 'City', please input City name.\",\r\n RequiredState: \"Value required for 'State/Province/Region', please input State/Province/Region.\",\r\n RequiredMSStoreSellerEmail: \"MS Store Seller Email should not be blank.\",\r\n InvalidMSStoreSellerEmail: \"Invalid MS Store Seller Email, please input valid email id.\",\r\n InvalidMicrosoftMSStoreSellerEmail: \"MS Store Seller Email must end with '@microsoft.com', please input valid email id.\",\r\n RequiredMSStoreSellerName: \"Value required for 'MS Store Seller Name', please input Seller Name.\",\r\n PricingProgramSelection: \"Value required for 'Pricing Program', please input Pricing Program.\",\r\n RequiredResellerEmail: \"Contact Email should not be blank.\",\r\n InvalidResellerEmail: \"Invalid Contact Email, please input valid Contact Email.\",\r\n UnavailableChannelPartner: \"Unavailable Partner\",\r\n UnavailablePartner: \"Unavailable Partner(s): \",\r\n InvalidResellerAccounts: \"Please Note: The selected channel partner is no longer available for inclusion in this case. Please edit your channel section to select available partner(s).\",\r\n InvalidDistributorAccounts: \"Please Note: The selected channel partner is no longer available for inclusion in this case. Please edit your channel section to select available partner(s).\",\r\n InActiveManagedCustomerMessage :\"Please Note: The current customer record is no longer available for inclusion in this case. Please create a new case submission and search for the latest customer record or submit a new customer record for review.\",\r\n InActiveUnManagedCustomerMessage :\"Please Note: The current customer record is no longer available for inclusion in this case. Please create a new case submission and search for the latest customer record or submit a new customer record for review.\",\r\n ValidatePrimaryResellersOnly: \"Select a Reseller.\",\r\n ValidatePrimaryDistributorOnly: \"Select atleast one Distributor.\",\r\n ValidateCustomer: \"Please Select Customer.\",\r\n ValidateProduct: \"Please Select Product.\",\r\n ValidateAdditionalReseller: \"Select atleast one Additional Reseller.\",\r\n ValidateFinalReseller: \"Select atleast one Final Reseller.\",\r\n InactiveProductError: \"One or More products are InActive.\",\r\n InActiveProductErrorMessage: \"Please Note: One or more of the previously selected products (listed below) are no longer available for inclusion in this case. Please update your product selection before submitting this case. If you believe the unavailable products are a result of an error, please contact sppsup@microsoft.com and share the exact product information, as well as the case details for this opportunity\",\r\n ProductsCascadeMessageHeaderText: \"Notice - Regarding Product Additions\",\r\n ProductsCascadeMessage :\"Your request to add the following product families to your Special Pricing case will also submit a parallel edit request to Microsoft, to add the corresponding Business Units for these Product Families, to your DR case. Review decisions and associated pricing/discounts will be available in the respective DR/SP cases in your dashboard.\",\r\n ExpirationDateBeyondThresholdDate: \"Expiration date should be within {0} days from today.\",\r\n ExpirationDateShouldNotBeEqualToCurrentDate: \"You must select a date in the future.\",\r\n DealVolumeThresholdWarningForOTLE: \"The input quantity does not meet the unit threshold for the selected product group.\",\r\n EmailShouldBeMicrosoftDomain: \"Microsoft alias is only accepted.\",\r\n InputQuantityShouldNotBeZero: \"Input quantity cannot be zero\"\r\n}","/**\r\n * Enum for DashboardViewTypes.\r\n * @readonly\r\n * @enum \r\n */\r\n\r\nexport const DashboardViewTypes = {\r\n /**\r\n * All Cases.\r\n */\r\n AllCases: 1,\r\n\r\n /**\r\n * Special Pricing Cases.C\r\n */\r\n SpecialPricingCases: 2,\r\n\r\n /**\r\n * Deal Registration Cases.\r\n */\r\n DealRegistrationCases: 3,\r\n\r\n /**\r\n * Custom Pricing Strategic Cases.\r\n */\r\n CustomPricingStrategicCases: 4,\r\n\r\n /**\r\n * Custom Pricing Strategic Cases.\r\n */\r\n BidGridAndNonProfitEDUDiscounts: 1,\r\n\r\n /**\r\n * Special Pricing Local Empowerment\r\n */\r\n SpecialPricingLocalEmpowerment:5,\r\n\r\n /**\r\n * One Time Local Empowerment\r\n */\r\n OneTimeLocalImpowerement:6\r\n}","/**\r\n * Enum for Grid Types which are implemented gridjson config.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum GridType {\r\n LegalEntitySearchOTLE = \"LegalEntitySearchOTLE\",\r\n LegalEntitySearch = \"LegalEntitySearch\",\r\n LegalEntitySelection = \"LegalEntitySelection\",\r\n LegalEntityUpload = \"LegalEntityUpload\",\r\n ProductSearch = \"ProductSearch\",\r\n PFAMSelection = \"PFAMSelection\",\r\n CaseView = \"Case View\",\r\n CPStrategicCaseView = \"CP Strategic Case View\",\r\n ProductInformationView = \"Product Information View\",\r\n AccountsList = 'AccountsList',\r\n CPStrategicLetters = \"CPStrategicLetters\",\r\n ViewResellers = \"View Resellers\",\r\n PFAMExpandView = \"PFAMExpandedView\",\r\n PFAMCompactView = \"PFAMCompactView\",\r\n PFAMDynamicSelection = \"PFAMDynamicSelection\",\r\n CPStrategicDealReport = \"CP Strategic Deal Report\",\r\n ResellersList = \"Add Reseller\",\r\n DistributorList = \"Add Distributors\",\r\n DuplicateCustomerResults = \"DuplicateCustomerResults\",\r\n DRProducts = \"DRProducts\",\r\n SPProducts = \"SPProducts\",\r\n InternalPricingProducts = \"InternalPricingProducts\",\r\n BUView = \"BUView\",\r\n DRSPExpandView = \"DRSPExpandView\",\r\n DRSPCompactView = \"DRSPCompactView\",\r\n CustomerSearch = \"CustomerSearch\",\r\n BusinessUnitProductSearch = \"BusinessUnitProductSearch\",\r\n SelectedBusinessUnit = \"SelectedBusinessUnit\",\r\n PFAMProductSearch = \"PFAMProductSearch\",\r\n SelectedPFAM = \"SelectedPFAM\",\r\n DealRegistration = \"Deal Registration\",\r\n AllCaseView = \"AllCases\",\r\n SpecialPricing=\"Special Pricing\",\r\n BidGrid=\"Bid Grid\",\r\n SPLocalEmpowerment= \"Special Pricing(Local Empowerment)\",\r\n OneTimeLocalEmpowerment = \"One Time Local Empowerment\"\r\n}\r\n","/**\r\n * Enum for CaseDecisionLetterType.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum CaseDecisionLetterType {\r\n\r\n /**\r\n * SingleCountryDeal value.\r\n */\r\n WithSKU = 0,\r\n\r\n /**\r\n * MultiNationalDeal value.\r\n */\r\n WithoutSKU = 1,\r\n}","import { IDropdownOption } from \"office-ui-fabric-react/lib/Dropdown\";\r\nimport { AffiliationType } from \"../models/AffiliationType\";\r\nimport { ChannelStructure } from \"../models/ChannelStructure\";\r\nimport { DealGeoCountryType } from \"../models/DealGeoCountryType\";\r\nimport { AccountAllType } from \"../models/AccountAllType\";\r\nimport { PartnerType } from \"../models/PartnerType\";\r\nimport { DashboardViewTypes } from \"../models/DashboardViewTypes\";\r\nimport { IBreadcrumbItem } from \"@fluentui/react\";\r\nimport { GridType } from \"../models/GridType\";\r\nimport { CaseDecisionLetterType } from \"../models/CaseDecisionLetterType\";\r\n\r\n\r\nexport const CaseDecisionLetterTypeOptions: IDropdownOption[] =\r\n [\r\n { key: CaseDecisionLetterType.WithoutSKU, text: 'Without SKU details' },\r\n { key: CaseDecisionLetterType.WithSKU, text: 'With SKU details' },\r\n ];\r\n\r\nexport const SingleDealCoverageOption: IDropdownOption[] = \r\n[\r\n { key: DealGeoCountryType.SingleCountryDeal, text: 'Single Country Deal' },\r\n];\r\n \r\nexport const DealGeoCoverageOptions: IDropdownOption[] =\r\n [\r\n { key: DealGeoCountryType.SingleCountryDeal, text: 'Single Country Deal' },\r\n { key: DealGeoCountryType.MultiNationalDeal, text: 'Multi-National Deal' },\r\n ];\r\n\r\nexport const AffiliationTypeOptions: IDropdownOption[] =\r\n [\r\n { key: AffiliationType.AffiliateCompanies, text: 'Affiliate Companies' },\r\n { key: AffiliationType.ConsortiumBuying, text: 'Consortium Buying' },\r\n { key: AffiliationType.FrameworkAgreement, text: 'Framework Agreement' },\r\n { key: AffiliationType.Others, text: 'Others' },\r\n ];\r\n\r\nexport const ChannelStructureOptions: IDropdownOption[] =\r\n [\r\n { key: ChannelStructure.Customer, text: 'Cascade CAS-ID to Reseller' },\r\n { key: ChannelStructure.Distributor, text: 'Cascade CAS-ID to ADD' },\r\n { key: ChannelStructure.Skip, text: 'Skip Channel' },\r\n ];\r\n\r\nexport const AccountTypeOptions: IDropdownOption[] =\r\n [\r\n { key: PartnerType.ADD, text: 'ADD' },\r\n { key: PartnerType.ADR, text: 'ADR' },\r\n { key: PartnerType.DMP, text: 'DMP' },\r\n { key: PartnerType.MsStore, text: 'MS Store' },\r\n ];\r\n\r\nexport const AccountAllOptions: IDropdownOption[] =\r\n [\r\n { key: AccountAllType.None, text: 'Selected Accounts' },\r\n { key: AccountAllType.All, text: 'All Accounts' },\r\n { key: AccountAllType.AllEuefta, text: 'All EUEFTA Accounts' },\r\n\r\n ];\r\n\r\nexport const partnerTypeValues: any = {\r\n [`${PartnerType.ADD}`]: 'ADD',\r\n [`${PartnerType.ADR}`]: 'ADR',\r\n [`${PartnerType.DMP}`]: 'DMP',\r\n [`${PartnerType.MsStore}`]: 'MS Store',\r\n [`${PartnerType.Reseller}`]: 'Reseller',\r\n};\r\n\r\nexport const dropDownYesOrNoData: IDropdownOption[] = [\r\n { key: 1, text: 'Yes' },\r\n { key: 0, text: 'No' }\r\n];\r\n\r\nexport const DashboardViewTypesValues: IDropdownOption[] = [\r\n {\r\n key: DashboardViewTypes.AllCases,\r\n text: \"All Cases\",\r\n title: \"/dashboard/allcases\",\r\n },\r\n {\r\n key: DashboardViewTypes.DealRegistrationCases,\r\n text: \"Deal Registration Cases\",\r\n title: \"/dashboard/dealregistration\"\r\n },\r\n {\r\n key: DashboardViewTypes.SpecialPricingCases,\r\n text: \"Special Pricing Cases\",\r\n title: \"/dashboard/specialpricing\"\r\n },\r\n {\r\n key: DashboardViewTypes.CustomPricingStrategicCases,\r\n text: \"Custom Pricing Strategic Cases\",\r\n title: \"/dashboard/cpstrategic\"\r\n },\r\n {\r\n key: DashboardViewTypes.SpecialPricingLocalEmpowerment,\r\n text: \"Special Pricing (Local Empowerment)\",\r\n title: \"/dashboard/splocalempowerment\"\r\n },\r\n {\r\n key: DashboardViewTypes.OneTimeLocalImpowerement,\r\n text: \"One Time Local Empowerment Cases\",\r\n title: \"/dashboard/otle\"\r\n }\r\n]\r\n\r\nexport const DashboardViewTypesValuesForMSSeller: IDropdownOption[] = [\r\n {\r\n key: DashboardViewTypes.AllCases,\r\n text: \"All Cases\",\r\n title: \"/dashboard/allcases\",\r\n },\r\n {\r\n key: DashboardViewTypes.CustomPricingStrategicCases,\r\n text: \"Custom Pricing Strategic Cases\",\r\n title: \"/dashboard/cpstrategic\"\r\n },\r\n {\r\n key: DashboardViewTypes.OneTimeLocalImpowerement,\r\n text: \"One Time Local Empowerment Cases\",\r\n title: \"/dashboard/otle\"\r\n }\r\n]\r\n\r\nexport const DashboardGidNames = {\r\n [`${DashboardViewTypes.SpecialPricingCases}`]: 'Special Pricing',\r\n [`${DashboardViewTypes.AllCases}`]: 'AllCases',\r\n [`${DashboardViewTypes.DealRegistrationCases}`]: 'Deal Registration',\r\n [`${DashboardViewTypes.CustomPricingStrategicCases}`]: 'CP Strategic Case View',\r\n [`${DashboardViewTypes.SpecialPricingLocalEmpowerment}`]: 'Special Pricing (Local Empowerment)',\r\n [`${DashboardViewTypes.OneTimeLocalImpowerement}`]: 'One Time Local Empowerment',\r\n};\r\n\r\nexport const DiscountViewTypesValues: IDropdownOption[] = [\r\n {\r\n key: DashboardViewTypes.BidGridAndNonProfitEDUDiscounts,\r\n text: \"Bid Grid & Non-Profit/EDU Discounts\",\r\n isSelected: true\r\n }\r\n]\r\n\r\nexport const BidGridBreadcrumbItems: IBreadcrumbItem[] = [\r\n {\r\n text: 'Discount', key: 'discount'\r\n },\r\n {\r\n text: 'Bid Grid & Non-Profit/EDU Discounts', key: ''\r\n },\r\n]\r\n\r\nexport const DRAndSPStatusCodeFilterValues = [\r\n \"Approved\",\r\n \"Expired\",\r\n \"Draft\",\r\n \"Decision Pending\",\r\n \"Insufficient Information\",\r\n \"Denied\",\r\n \"Pending Secondary Review\"\r\n]\r\n\r\nexport const StatusCodeFilterValues = [\r\n {\r\n gridName: GridType.DealRegistration,\r\n statusValues: DRAndSPStatusCodeFilterValues\r\n },\r\n {\r\n gridName: GridType.SpecialPricing,\r\n statusValues: DRAndSPStatusCodeFilterValues\r\n },\r\n {\r\n gridName: GridType.AllCaseView,\r\n statusValues: DRAndSPStatusCodeFilterValues\r\n },\r\n {\r\n gridName: GridType.OneTimeLocalEmpowerment,\r\n statusValues: DRAndSPStatusCodeFilterValues\r\n },\r\n]","/**\r\n * Enum for Message Type.\r\n * @readonly\r\n * @enum {Enum}\r\n */\r\n export enum MessageTypeText {\r\n /**\r\n * ClaimsValidationError.\r\n */\r\n ClaimsValidationError = \"ClaimsValidationError\",\r\n /**\r\n * OpportunityValidationError.\r\n */\r\n OpportunityValidationError = \"OpportunityValidationError\",\r\n /**\r\n * FieldGuidanceText.\r\n */\r\n FieldGuidanceText = \"FieldGuidanceText\",\r\n /**\r\n * FieldPlaceHolderText.\r\n */\r\n FieldPlaceHolderText = \"FieldPlaceHolderText\", \r\n /**\r\n * FieldLabelText.\r\n */\r\n FieldLabelText = \"FieldLabelText\",\r\n /**\r\n * PopupMessageText.\r\n */\r\n PopupMessageText = \"PopupMessageText\",\r\n /**\r\n * UserEvent.\r\n */\r\n UserEvent = \"UserEvent\",\r\n}","export const PageConstants = {\r\n\tAddCountry: \"ADD Country\",\r\n\tAddName: \"ADD Name\",\r\n\tDeleteColumn: \"Delete\",\r\n\tAddDistributor: \"Add Distributor\",\r\n\tAddReseller: \"Add Reseller\",\r\n\tResellerType: \"Reseller Type\",\r\n\tResellerCountry: \"Reseller Country\",\r\n\tResellerName: \"Reseller Name\",\r\n\tSaveAsDraft: \"Save as Draft\",\r\n\tCancel: \"Cancel\",\r\n\tLabel_Overview: \"Overview\",\r\n\tLabel_ChannelStructure: \"Channel Structure\",\r\n\tLabel_MsStoreRequired: \"Ms Store Required\",\r\n\tListOfDistributors: \"List of Distributors\",\r\n\tListOfReseller: \"List of Reseller\",\r\n\tAttachments: \"Attachments\",\r\n\tDealName: \"Deal Name\",\r\n\tDealOverview: \"Deal Overview\",\r\n\tProductGroup: \"Product Group\",\r\n\tDealGeoCoverage: \"Deal Geo Coverage\",\r\n\tDealCountry: \"Deal Country(s)\",\r\n\tAffiliationType: \"Affiliation Type\",\r\n\tAffiliationTypeOthers: \"Affiliation Type Others\",\r\n\tContinue: \"Continue\",\r\n\tCountry: \"Country\",\r\n\tSearchFilter: \"Search Filter\",\r\n\tAddSelectedLegalEntites: \"Add Selected Legal Entites\",\r\n\tLegalEntityName: \"Legal Entity Name\",\r\n\tTPID: \"TPID\",\r\n\tAddress: \"Address\",\r\n\tCity: \"City\",\r\n\tState: \"State\",\r\n\tWebUrl: \"Web Url\",\r\n\tIsPrimary: \"Is Primary\",\r\n\tDealVolume: \"Deal Volume\",\r\n\tBusinessUnit: \"Business Unit\",\r\n\tPFAMCode: \"PFAMCode\",\r\n\tPFAMName: \"PFAMName\",\r\n\tSegment: \"Segment\",\r\n\tDealVertical: \"Deal Vertical\",\r\n\tRequestedExpirationDate: \"Requested Expiration Date\",\r\n\tRequestedExpirationDateJustification: \"Requested Expiration Date Justification\",\r\n\tExceptionRequest: \"Exception Request\",\r\n\tProductSearch: \"Product Search\",\r\n\tSearch: \"Search\",\r\n\tAddSelectedProducts: \"Add Selected Products\",\r\n\tAddVTeamMember: \"Add V-Team Member\",\r\n\tName: \"Name\",\r\n\tAlias: \"Alias\",\r\n\tRole: \"Role\",\r\n\tSubmit: \"Submit\",\r\n\tPFAM: \"PFAM\",\r\n\tSelectedLegalEntities: \"Selected Legal Entities\",\r\n\tNoLegalEntitySelected: \"Please select atleast one legal entity to add\",\r\n\tNoPrimaryEntitySelected: \"Atleast one primary legal entity to be selected\",\r\n\tCustomerSegmentContainsSMB: \"smb\",\r\n\tCPStrategicDealtype: \"CP Strategic\",\r\n\tOTLEDealtype: \"otle\",\r\n\tCaseId: \"Case Id\",\r\n\tStatus: \"Status\",\r\n\tPricingProgram: \"Pricing Program\",\r\n\tCustomerCountry: \"Customer Country\",\r\n\tEndCustomerName: \"EndCustomer Name\",\r\n\tDefaultProductType: \"Surface\",\r\n\tResellerNameInputPlaceholderText: \"e.g., XYZ Ltd.\",\r\n CaseIdInputPlaceholderText: \"e.g., CAS-XX-XXXX\",\r\n\tAddCasToDashboard: \"Add Case to Dashboard\",\r\n\tExpanded: \"expanded\",\r\n\tRefresh: \"Refresh\",\r\n\tPropCPStrategictype: \"cpstrategic\"\r\n}\r\n\r\n\r\n\r\n","import XLSX from 'xlsx';\r\nimport { IGridProps } from \"../grid/IGridProps\"\r\nimport { IKendoGridColumnProps } from \"../grid/IKendoGridColumnProps\"\r\nimport GridConfig from \"../grid/gridconfig.json\"\r\nimport { ILegalEntity } from '../../../models/ILegalEntity';\r\nimport { IDropdownOption } from '@fluentui/react/lib/Dropdown';\r\nimport { ICountry } from '../../../models/ICountry';\r\nimport { CustomerType } from '../../../models/CustomerType';\r\nimport { ILegalEntityValidationRule } from '../../../models/ILegalEntityValidationRule';\r\nimport { IPageState } from '../../../pages/pricingprogram/common/state/IPageState';\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\nimport { IPageModeProps } from '../../../pages/pagefieldmap/props/IPageModeProps';\r\nimport internalpricingfieldrolemap from \"../../../../src/pages/pagefieldmap/internalpricing-fieldrolemap.json\";\r\nimport { IPageMode } from '../../../pages/pagefieldmap/props/IPageMode';\r\nimport { IPageRole } from '../../../pages/pagefieldmap/props/IPageRole';\r\nimport { ApplicationConstants } from '../../../models/ApplicationConstants';\r\nimport { PageMode } from '../../../models/PageMode';\r\nimport { OpportunityDealStatusCodes } from '../../../models/OpportunityDealStatusCodes';\r\nimport { OpportunityDealStatusNames } from '../../../models/OpportunityDealStatusNames';\r\nimport { IRouteDetail } from '../../../models/IRouteDetail';\r\nimport RouteConfig from '../../../pages/home/route-config.json';\r\nimport { UIControlsText } from '../../../content/UIControlsText';\r\nimport { IAccount } from '../../../models/IAccount';\r\nimport { ActionType } from '../../../models/ActionType';\r\nimport { nextGenService } from '../../../services/NextGenService';\r\nimport { IUserRoleDetail } from '../../../models/IUserRoleDetail';\r\nimport { UserRole } from '../../../models/UserRole';\r\nimport { UserSubRole } from '../../../models/UserSubRole';\r\nimport { JavaScriptExtensions } from '../../../infrastructure/JavaScriptExtensions';\r\nimport Moment from 'moment';\r\nimport { LocalStorageConsts } from '../../../models/LocalStorageConsts';\r\nimport * as CryptoJS from 'crypto-js';\r\nimport { AsyncProcessStatus } from '../../../models/AsyncProcessStatus';\r\nimport commonfieldmap from \"../../../pageConfig/common-fieldmap.json\"\r\nimport { DealType } from '../../../models/DealType';\r\nimport { IFieldMap } from '../../../pageConfig/Props/IFieldMap';\r\nimport { FieldMapMode } from '../../../models/FieldMapMode';\r\nimport { DealStatusLabel } from '../../../models/DealStatusLabels';\r\nimport { IDealType } from '../../../models/IDealType';\r\nimport { ErrorMessages } from '../../../content/ErrorMessages';\r\nimport { IDealState } from '../../../pages/pricingprogram/common/state/IDealState';\r\nimport { Guid } from '../../../infrastructure/Guid';\r\nimport { IUserDetail } from '../../../models/IUserDetail';\r\nimport { IDealQuantityThresholds } from '../../../models/IDealQuantityThresholds';\r\nimport { IKendoGridProps } from '../grid/IKendoGridProps';\r\nimport { IMultiSelectDropDownSessionProps } from '../props/IMultiSelectSessionProps';\r\nimport { SpecialLocationtype } from '../../../pages/shared/ComponentTypes/SpecialLocationtype';\r\nimport { RequestorsRoleType } from '../../../pages/shared/ComponentTypes/RequestorRoleType';\r\nimport { IChannelFunctionalityDisplayState } from '../../../pages/shared/ComponentTypes/IChannelFunctionalityDisplayState';\r\nimport { ChannelDisplayFunctionalities } from '../../../pages/shared/ComponentTypes/ChannelDisplayFunctionalities';\r\nimport { OpportunityDealClosureDecisionType } from '../../../models/OpportunityDealClosureDecisionType';\r\nimport { OpportunityDealClosureDecisionName } from '../../../models/OpportunityDealClosureDecisionName';\r\nimport { OpportunityDealPortalEditStatusNames } from '../../../models/OpportunityDealPortalEditStatusNames';\r\nimport { IDealDurationConfig } from '../../../models/IDealDurationConfig';\r\nimport { IProductType } from '../../../models/IProductType';\r\nimport { GridColumnMenuProps } from '@progress/kendo-react-grid';\r\nimport { StatusCodeFilterValues } from '../../../services/StaticData';\r\nimport _ from 'lodash';\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { PageConstants } from '../../../pages/pageconstants/Constants';\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n//funciton helps to process excel file\r\nexport function processExcelDataToJson(fileObj: any, callback: any): void {\r\n const reader = new FileReader(); //read the file\r\n const rABS = !!reader.readAsBinaryString;\r\n reader.onload = (e: any) => {\r\n /* Parse data */\r\n const bstr = e.target.result;\r\n const wb = XLSX.read(bstr, { type: rABS ? 'binary' : 'array', bookVBA: true });\r\n /* Get first worksheet */\r\n const wsname = wb.SheetNames[0];\r\n const ws = wb.Sheets[wsname];\r\n /* Convert array of arrays */\r\n const data = XLSX.utils.sheet_to_json(ws);\r\n let jsonData: any = [...data];\r\n callback(jsonData);\r\n };\r\n if (rABS) {\r\n reader.readAsBinaryString(fileObj.file);\r\n } else {\r\n reader.readAsArrayBuffer(fileObj.file);\r\n };\r\n}\r\n\r\n//TextField OnChange Function\r\nexport const getTextFieldErrorMessage = (value: string): string => {\r\n return !value ? getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldError\", ErrorMessages.RequiredFieldError) : \"\";\r\n};\r\n\r\n/**\r\n* Get TextField ErrorMessage.\r\n* @method\r\n* @param {string>} value Text Box value.\r\n* @@returns {string} Error Message.\r\n*/\r\nexport const getEmailFieldErrorMessage = (value: string): string => {\r\n if (!value) {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldError\", ErrorMessages.RequiredFieldError);\r\n }\r\n else {\r\n let isInvalid = value.split(';').some((email) => !isValidEmail(email));\r\n if (isInvalid) {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidEmailError\", ErrorMessages.ValidEmailError);\r\n }\r\n }\r\n return '';\r\n};\r\n\r\n/**\r\n * Get PostalCode TextField ErrorMessage.\r\n * @method\r\n * @param {string>} value Text Box value.\r\n * @@returns {string} Error Message.\r\n */\r\nexport const getPostalCodeTextFieldErrorMessage = (value: string): string => {\r\n if (!value) {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"PostalCodeRequired\", ErrorMessages.PostalCodeRequired);\r\n } else {\r\n let isInvalid = !isValidPostalCode(value);\r\n if (isInvalid) {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidPostalCodeError\", ErrorMessages.ValidPostalCodeError);\r\n }\r\n }\r\n return '';\r\n}\r\n\r\n//this function used to read config value from /components/shared/grid/gridconfig and can consume anywhere\r\nexport function readGridConfig(gridName: string, colVisible?: boolean, colName?: string): IGridProps {\r\n var gridConfigs: IGridProps[] = [];\r\n gridConfigs = GridConfig.map((item: any) => {\r\n return {\r\n kendoGridProps: {\r\n gridName: item.gridName,\r\n gridDisplayName: item.gridDisplayName,\r\n selectable: item.selectable,\r\n resizable: item.resizable,\r\n pageable: item.pageable,\r\n dragable: item.dragable,\r\n sortable: item.sortable,\r\n filterable: item.filterable,\r\n groupable: item.groupable,\r\n noOfColumns: item.noOfColumns,\r\n noOfRecords: item.noOfRecords,\r\n initialSortField: item.initialSortField,\r\n dataItemKey: item.dataItemKey,\r\n selectedField: item.selectedField,\r\n selectionType: item.selectionType,\r\n editField: item.editField,\r\n className: item.className,\r\n expandField: item.expandField,\r\n editMode: item.editMode,\r\n selectAllRows: item.selectAllRows,\r\n customDetailComponent: item.customDetailComponent,\r\n pageSizes: item.pageSizes,\r\n actionTypes: {\r\n showAddNewRowGridAction: item.actionTypes?.showAddNewRowGridAction,\r\n showRowEditGridAction: item.actionTypes?.showRowEditGridAction,\r\n showRowDeleteGridAction: item.actionTypes?.showRowDeleteGridAction,\r\n showRowDownloadGridAction: item.actionTypes?.showRowDownloadGridAction,\r\n showSelectAllCheckboxGridAction: item.actionTypes?.showSelectAllCheckboxGridAction,\r\n showGridContextMenuAction: item.actionTypes?.showGridContextMenuAction,\r\n showClearAllGridAction: item.actionTypes?.showClearAllGridAction,\r\n showDownloadExcelGridAction: item.actionTypes?.showDownloadExcelGridAction,\r\n showExpandCollapseGridAction: item.actionTypes?.showExpandCollapseGridAction,\r\n showActionMenuBar: item.actionTypes?.showActionMenuBar,\r\n showRadioSelectionAction: item.actionTypes?.showRadioSelectionAction,\r\n showMultiSelectDropDownGridAction: item.actionTypes?.showMultiSelectDropDownGridAction,\r\n showAddNewPanelGridAction: item.actionTypes?.showAddNewPanelGridAction,\r\n showManufactureConfirmationLetter: item.actionTypes?.showManufactureConfirmationLetter\r\n },\r\n additionalColumns: item.additionalColumns?.map((column: IKendoGridColumnProps) => {\r\n return {\r\n apiField: column.apiField,\r\n columnTitle: column.columnTitle,\r\n key: column.key,\r\n showHeaderCell: column.showHeaderCell,\r\n allowFilter: column.allowFilter,\r\n width: column.width,\r\n isVisible: column.apiField === colName ? colVisible : column.isVisible,\r\n cssClass: column.cssClass,\r\n excelColumnTitle: column.excelColumnTitle,\r\n } as IKendoGridColumnProps\r\n }),\r\n data: item.data,\r\n displayOrder: item.displayOrder,\r\n allowCaseView: item.allowCaseView,\r\n allowCaseCreate: item.allowCaseCreate,\r\n allowCaseDownload: item.allowCaseDownload,\r\n allowCaseEdit: item.allowCaseEdit,\r\n allowCaseRevert: item.allowCaseRevert,\r\n allowCaseDelete: item.allowCaseDelete,\r\n allowCaseExpire: item.allowCaseExpire,\r\n allowCaseLetters: item.allowCaseLetters,\r\n allowCaseDecisionLetter: item.allowCaseDecisionLetter,\r\n defaultMainGridSelectionstate: item.defaultMainGridSelectionstate,\r\n defaultDetailGridSelectionstate: item.defaultDetailGridSelectionstate,\r\n allowCaseCopy: item.allowCaseCopy,\r\n allowCaseExtend: item.allowCaseExtend,\r\n allowCaseRenew: item.allowCaseRenew,\r\n recordsToFetch: item.recordsToFetch,\r\n excelData: item.excelData,\r\n excelColumns: item.excelColumns,\r\n customGridMessage: item.customGridMessage,\r\n dealName: item.dealName,\r\n caseNumber: item.caseNumber,\r\n customerCountry: item.customerCountry,\r\n customerName: item.customerName,\r\n filterValue: item.filterValue,\r\n isRefresh: item.isRefresh,\r\n isFilterAppliedOrRemoved: item.isFilterAppliedOrRemoved,\r\n columns: item.columns.map((column: any) => {\r\n return {\r\n apiField: column.apiField,\r\n columnTitle: column.columnTitle,\r\n allowColumnView: column.allowColumnView,\r\n showHeaderCell: column.showHeaderCell,\r\n key: column.key,\r\n isEditable: column.isEditable,\r\n editorType: column.editorType,\r\n editorFormat: column.editorFormat,\r\n isVisible: column.apiField === colName ? colVisible : column.isVisible,\r\n allowFilter: column.allowFilter,\r\n allowSorting: column.allowSorting,\r\n allowGroupable: column.allowGroupable,\r\n showFooter: column.showFooter,\r\n displayOrder: column.displayOrder,\r\n width: column.width,\r\n cssClass: column.cssClass,\r\n footerTitle: column.footerTitle,\r\n filterType: column.filterType,\r\n categoryFilterCell: column.categoryFilterCell,\r\n mandatoryField: column.mandatoryField,\r\n isCustomCell: column.isCustomCell,\r\n type: column.type,\r\n isDefaultSelected: column.isDefaultSelected,\r\n isDisabled: column.isDisabled,\r\n locked: column.locked,\r\n isDynamic: column.isDynamic,\r\n isDefaultFilterTobeApplied: column.isDefaultFilterTobeApplied,\r\n headerClassName: column.headerClassName\r\n } as IKendoGridColumnProps\r\n }),\r\n groupByColumn: item.groupByColumn,\r\n masterData: item.masterData,\r\n detailGrid: item.detailGrid,\r\n isServerSideGrid: item.isServerSideGrid,\r\n width: item.width,\r\n noRecordsCustomMessage: item.noRecordsCustomMessage,\r\n addNewButtonText: item.addNewButtonText\r\n }\r\n } as IGridProps\r\n });\r\n return gridConfigs.filter((item) => item.kendoGridProps.gridName === gridName)[0];\r\n}\r\n//function to validate null or empty\r\nexport function isNullOrEmpty(value: any) {\r\n return value === undefined || value === null || value === \"\";\r\n}\r\n//common function used to return idropdownoption from string array\r\nexport function getSelectedCountry(dealCountries: string[]): IDropdownOption[] {\r\n var countries = sessionStorage.getItem(\"countries\");\r\n var countriesDropdownValues: IDropdownOption[] = [];\r\n if (countries !== null) {\r\n JSON.parse(countries).map((pt: ICountry) => {\r\n if (dealCountries.some(x => x === pt.countryId)) {\r\n countriesDropdownValues.push({ key: pt.countryId, text: pt.countryName } as IDropdownOption);\r\n }\r\n });\r\n }\r\n return countriesDropdownValues;\r\n}\r\n//function to validate error messages as part of excel upload\r\nexport function validateLegalEntityApiResponse(apiValidations: ILegalEntityValidationRule[]): [] {\r\n let validationResult: any = []\r\n let errors: any = apiValidations.filter(x => x.passed === false && x.error.length > 0);\r\n let warnings: any = errors = apiValidations.filter(x => x.passed && x.isWarning && x.error.length > 0);\r\n validationResult.push({ errors: errors, warnings: warnings });\r\n return validationResult;\r\n}\r\n//convert excel file to buffer array\r\nexport function getFileArrayBuffer(fileObj: any, callback: any): void {\r\n var reader = new FileReader();\r\n reader.onload = function () {\r\n var arrayBuffer = this.result;\r\n callback(arrayBuffer);\r\n }\r\n reader.readAsArrayBuffer(fileObj.file);\r\n}\r\n//common method for search and upload entities to construct final model\r\nexport function processLegalEntityModel(selectedLegals: any, primaryLegalID: any): ILegalEntity[] {\r\n var legalData = selectedLegals.map((item: any) => {\r\n return {\r\n id: item.id,\r\n customerId: item.id,\r\n country: item.country,\r\n legalEntityName: item.legalEntityName,\r\n tpid: item.tpid,\r\n crmAccountId: item.crmAccountId,\r\n segment: item.segment,\r\n unitsCommitted: item.unitsCommitted,\r\n isManaged: item.isManaged,\r\n unManaged: !item.isManaged,\r\n vertical: item.vertical,\r\n customerType: item.id === primaryLegalID ? CustomerType.Primary : CustomerType.Affiliates,\r\n errors: item.errors,\r\n warnings: item.warnings,\r\n action: item.action\r\n } as ILegalEntity\r\n });\r\n return legalData;\r\n}\r\n\r\nexport function exportToExcel(excelJsonData: any, excelName: string, sheetName: string): void {\r\n let today = new Date();\r\n const fileName = \"\".concat(excelName, '_', today.getTime().toString(), '.xlsx',);\r\n const ws: XLSX.WorkSheet = XLSX.utils.aoa_to_sheet([excelJsonData]);\r\n const wb: XLSX.WorkBook = XLSX.utils.book_new();\r\n ws['!cols'] = [{ wch: 10 }, { wch: 20 }, { wch: 10 }, { wch: 15 }, { wch: 15 }, { wch: 20 }, { wch: 20 }, { wch: 20 }];\r\n XLSX.utils.book_append_sheet(wb, ws, sheetName);\r\n XLSX.writeFile(wb, fileName);\r\n}\r\n//get entire saved IPageState from API, this is used to compare saved data in edit mode\r\nexport function getsavedContext(): IPageState {\r\n let savedState: IPageState = {} as IPageState;\r\n let savedOpportunityInSession = localStorage.getItem(LocalStorageConsts.savedOpportunity);\r\n if (savedOpportunityInSession !== null) {\r\n savedState = JSON.parse(savedOpportunityInSession);\r\n }\r\n return savedState;\r\n}\r\n\r\n//this function used to read config value for role to field level mapping as per json defined in cpstrategic_fieldrolemap.json\r\nexport function readPageConfig(pageName: string): IPageModeProps {\r\n var pageConfigs: IPageModeProps[] = [];\r\n pageConfigs = internalpricingfieldrolemap.filter((item: any) => item.pageName === pageName).map((item: any) => {\r\n return {\r\n pageName: item.pageName,\r\n pageMode: item.pageMode.map((pmode: IPageMode) => {\r\n return {\r\n fieldsToReadOnly: pmode.fieldsToReadOnly,\r\n modeType: pmode.modeType,\r\n roles: pmode.roles?.map((role: IPageRole) => {\r\n return {\r\n fieldsToHide: role.fieldsToHide,\r\n fieldsToReadOnly: role.fieldsToReadOnly,\r\n fieldsToEdit: role.fieldsToEdit,\r\n roleName: role.roleName\r\n } as IPageRole\r\n })\r\n } as IPageMode\r\n })\r\n } as IPageModeProps\r\n });\r\n return pageConfigs.filter((item) => item.pageName === pageName)[0];\r\n}\r\n\r\nexport function readCommonConfig(pageName: string) {\r\n let config = commonfieldmap.map(item => {\r\n return {\r\n pageName: item.pageName,\r\n pageModes: item.modes.map(function (mode: any) {\r\n return {\r\n pageMode: mode.pageMode,\r\n dealStatus: mode.dealStatus,\r\n dealType: mode.dealType?.map((dt: DealType) => dt as DealType),\r\n roles: mode.roles,\r\n disabledFields: mode.disabledFields,\r\n hiddenFields: mode.hiddenFields\r\n } as IFieldMap\r\n })\r\n }\r\n });\r\n return config.find((item) => item.pageName === pageName)?.pageModes;\r\n}\r\n\r\n//Common function to get the fieldmap config\r\nexport function getFieldConfig(pageName: string, pageMode: string, dealStatus: OpportunityDealStatusCodes, dealType: IDealType, fieldName: string, mode: FieldMapMode, closureDecision?: string | undefined): boolean | undefined {\r\n let disabled: boolean | undefined = undefined;\r\n const pageConfig = readCommonConfig(pageName);\r\n let fieldConfig = pageConfig?.filter(config => config.pageMode === pageMode && config.dealStatus.some(s => s === DealStatusLabel.get(dealStatus)));\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(fieldConfig)) {\r\n //filter the config by dealType, if dealType is defined\r\n fieldConfig = fieldConfig?.filter(config => JavaScriptExtensions.isNullOrUndfinedOrEmpty(config.dealType) || (config.dealType && config.dealType.some(t => t === dealType?.name)));\r\n //filter the config by role, if role is defined\r\n fieldConfig = fieldConfig?.filter(config => JavaScriptExtensions.isNullOrUndfinedOrEmpty(config.roles) || (config.roles && config.roles.some(r => getLoginUserRoles().includes(r))));\r\n //filter the config by closureDecision, if closureDecision is defined\r\n fieldConfig = fieldConfig?.filter(config => JavaScriptExtensions.isNullOrUndfinedOrEmpty(config.closureDecision) || (config.closureDecision && config.closureDecision.some(c => c === closureDecision)));\r\n if (mode === FieldMapMode.Disable) {\r\n fieldConfig = fieldConfig?.filter(f => f.disabledFields?.some(d => d === fieldName));\r\n }\r\n else if (mode === FieldMapMode.Hidden) {\r\n fieldConfig = fieldConfig?.filter(f => f.hiddenFields?.some(d => d === fieldName));\r\n }\r\n if (fieldConfig && fieldConfig.length > 0) {\r\n disabled = true;\r\n }\r\n }\r\n return disabled;\r\n}\r\n\r\n//Common function to get the fieldmap config\r\nexport function getFieldConfigByState(state: IPageState, fieldName: string, mode: FieldMapMode): boolean | undefined {\r\n const selectedDeal = getSelectedDeal(state);\r\n if (state?.pageMode && selectedDeal?.dealType && selectedDeal?.statusCode) {\r\n const fieldConfigState = getFieldConfig(\"commonPP\", state?.pageMode, selectedDeal?.statusCode, selectedDeal?.dealType, fieldName, mode);\r\n return fieldConfigState === true ? true : false;\r\n }\r\n}\r\n\r\n// Get Selected Deal from Dashboard in View/Edit Mode\r\nexport function getSelectedDeal(state: IPageState): IDealState | undefined {\r\n const selectedDeal = state?.pageMode === PageMode.Create ? state?.opportunityDeals[0] :\r\n state?.opportunityDeals?.find(t => t.name === state?.selectedOptyDealCaseNumber);\r\n return selectedDeal;\r\n}\r\n\r\n//this method used to identify whether filed is editable or not based on config: cpstrategic_fieldrolemap.json\r\nexport function isFieldDisabled(fieldName: string, modeType?: string, caseStatus?: number, isMultiNational?: boolean, asyncProcessStatus?: AsyncProcessStatus, dealType?: string): boolean {\r\n // Handle CP Strategic deal type as it has space in between\r\n let dealTypePageName = dealType?.trim().replace(/\\s+/g,'')?.toLowerCase();\r\n\r\n if (modeType?.toLowerCase() === PageMode.Create.toLowerCase()) {\r\n let currentUserRoles = getUserRole();\r\n let routeConfig = getRouteConfig();\r\n \r\n let internalPricingConfig = routeConfig.filter(x => (x?.menuHref && x?.menuHref?.indexOf(\"managecase\") > 0) && x.routeName?.trim().toLowerCase() == (dealTypePageName));\r\n if (!isNullOrEmpty(internalPricingConfig) && internalPricingConfig.length > 0 && !internalPricingConfig[0]?.allowMenuItemUserRoles.some(r => currentUserRoles?.includes(r))) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n if (modeType?.toLowerCase() === PageMode.View.toLowerCase()) {\r\n return true;\r\n }\r\n var isDisabled = true;\r\n if (modeType?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n if (getsavedContext().opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview) {\r\n var fieldsToEnable = [\r\n getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation),\r\n getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment),\r\n getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Submit\", UIControlsText.SubmitText),\r\n ]\r\n\r\n return isNullOrEmpty(fieldsToEnable.find(x => x === fieldName));\r\n }\r\n\r\n var loginRole = getOwnerInfo();\r\n var pageConfig = readPageConfig(dealTypePageName || \"\")?.pageMode.filter(m => m.modeType === modeType)\r\n pageConfig?.map((item: IPageMode, i: number) => {\r\n if (item.roles[i].roleName.indexOf(loginRole) !== -1) {\r\n if (caseStatus === OpportunityDealStatusCodes.Draft && asyncProcessStatus != AsyncProcessStatus.InProgress) {\r\n isDisabled = false;\r\n }\r\n else if (item.roles[i].fieldsToEdit?.indexOf(fieldName) !== -1 && !isMultiNational &&\r\n (caseStatus === OpportunityDealStatusCodes.Approved || caseStatus === OpportunityDealStatusCodes.DealPricingApprovedPendingChannelStatus || caseStatus === OpportunityDealStatusCodes.Incomplete || caseStatus === OpportunityDealStatusCodes.PendingSecondaryReview)) {\r\n isDisabled = false;\r\n }\r\n }\r\n else\r\n isDisabled = true;\r\n });\r\n }\r\n return isDisabled;\r\n}\r\n\r\n//this method used to get urlparameter by name\r\nexport function getURLParamValue(paramName: string): string {\r\n const search = window.location.search;\r\n const params = search && new URLSearchParams(search);\r\n return params && params.get(paramName) as string;\r\n}\r\n\r\n//this methed will ideintify whether the page is editmode based on case status \r\nexport function isEditmode(caseStatus?: number, isSavedItem?: boolean): boolean {\r\n var editmode = false;\r\n if ((caseStatus === OpportunityDealStatusCodes.Approved || caseStatus === OpportunityDealStatusCodes.DealPricingApprovedPendingChannelStatus || caseStatus === OpportunityDealStatusCodes.PendingSecondaryReview) && isSavedItem) {\r\n editmode = true;\r\n }\r\n else {\r\n editmode = false;\r\n }\r\n return editmode;\r\n}\r\n\r\n// this method will return the user role\r\nexport function getLoggedinUserRoleDetails() {\r\n let userSession = getUserSession();\r\n return JSON.parse(userSession || '{}')[SessionStorageConsts.userRoleDetails];\r\n}\r\n\r\n// this method will return the user role\r\nexport function getLoggedinUserRole() {\r\n let userSession = getUserSession();\r\n return JSON.parse(userSession || '{}')[SessionStorageConsts.userSubRole];\r\n}\r\n\r\n// this method is used to validate against logged in person role and return true/false to show the control on a page\r\nexport function isFieldVisible(fieldName: string, modeType?: string, dealTypePageName?: string | undefined) {\r\n let savedOpportunity = getsavedContext() \r\n\r\n if (fieldName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation)) {\r\n if (modeType?.toLowerCase() === PageMode.Create.toLowerCase()) {\r\n return false\r\n }\r\n\r\n if (modeType?.toLowerCase() === PageMode.Edit.toLowerCase() && savedOpportunity != null && savedOpportunity.opportunityDeals != null && savedOpportunity.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.PendingSecondaryReview) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n if (savedOpportunity != null && savedOpportunity.opportunityDeals != null && savedOpportunity.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview) {\r\n if (fieldName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntitiesSearchElements\", UIControlsText.LegalEntitiesSearchElements) || \r\n fieldName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Add V-Team Member\", UIControlsText.DealVTeamMemberAddtext)) {\r\n return false;\r\n }\r\n }\r\n\r\n var isVisible = true;\r\n var loginRole = getOwnerInfo();\r\n if (dealTypePageName && !isNullOrEmpty(dealTypePageName)) {\r\n let dealtypepage = dealTypePageName?.trim()?.replace(/\\s/g, \"\")?.toLowerCase(); \r\n var pageConfig = readPageConfig(dealtypepage.trim().toLowerCase())?.pageMode.filter(m => m.modeType.toLowerCase() === modeType);\r\n if (loginRole === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Owner\", UIControlsText.Owner)) {\r\n if (JavaScriptExtensions.isDefined(pageConfig) && pageConfig?.length > 0) {\r\n pageConfig[0].roles.forEach((role) => {\r\n if (role.roleName.indexOf(loginRole) !== -1) {\r\n if (role.fieldsToHide?.indexOf(fieldName) !== -1) {\r\n isVisible = false;\r\n return;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n var roles = getUserMainRole().concat(\",\").concat(getUserRole());\r\n var userRole = roles.split(\",\");\r\n if (JavaScriptExtensions.isDefined(pageConfig) && pageConfig?.length > 0) {\r\n pageConfig[0].roles.forEach((role) => {\r\n userRole.forEach((loginRole) => {\r\n if (role.roleName.indexOf(loginRole) !== -1) {\r\n if (role.fieldsToHide?.indexOf(fieldName) !== -1) {\r\n isVisible = false;\r\n return;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n return isVisible;\r\n}\r\n\r\n// this method will remove the unwanted spaces from the text field\r\nexport const removeExtraSpace = (s: string) => s.trim().split(/ +/).join(\" \");\r\n\r\n// this method is used to return statusCode name from statusCode value\r\nexport function getDealClosureDecisionNameByCode(statusCode?: number): any {\r\n switch (statusCode) {\r\n case OpportunityDealClosureDecisionType.ApprovedPendingChannel:\r\n return OpportunityDealClosureDecisionName.ApprovedPendingChannel;\r\n\r\n case OpportunityDealClosureDecisionType.EditPendingReview:\r\n return OpportunityDealClosureDecisionName.EditPendingReview;\r\n\r\n case OpportunityDealClosureDecisionType.Approved:\r\n return OpportunityDealClosureDecisionName.Approved;\r\n\r\n case OpportunityDealClosureDecisionType.Denied:\r\n return OpportunityDealClosureDecisionName.Denied;\r\n\r\n case OpportunityDealClosureDecisionType.InsufficientInformation:\r\n return OpportunityDealClosureDecisionName.InsufficientInformation;\r\n\r\n case OpportunityDealClosureDecisionType.RequireAdditionalInformation:\r\n return OpportunityDealClosureDecisionName.RequireAdditionalInformation;\r\n\r\n default:\r\n break;\r\n }\r\n}\r\n\r\n// this method is used to return statusCode name from statusCode value\r\nexport function getStatusNameByCode(statusCode?: number): any {\r\n switch (statusCode) {\r\n case OpportunityDealStatusCodes.Cancelled:\r\n return OpportunityDealStatusNames.Cancelled;\r\n\r\n case OpportunityDealStatusCodes.Draft:\r\n return OpportunityDealStatusNames.Draft;\r\n\r\n case OpportunityDealStatusCodes.Approved:\r\n return OpportunityDealStatusNames.Approved;\r\n\r\n case OpportunityDealStatusCodes.ForcedExpire:\r\n return OpportunityDealStatusNames.ForcedExpire;\r\n\r\n case OpportunityDealStatusCodes.DealPricingApprovedPendingChannelStatus:\r\n return OpportunityDealStatusNames.DealPricingApprovedPendingChannel;\r\n\r\n case OpportunityDealStatusCodes.InProgress:\r\n case OpportunityDealStatusCodes.Unassigned:\r\n return OpportunityDealStatusNames.DecisionPending;\r\n\r\n case OpportunityDealStatusCodes.Denied:\r\n return OpportunityDealStatusNames.Denied;\r\n\r\n case OpportunityDealStatusCodes.Expired:\r\n return OpportunityDealStatusNames.Expired;\r\n\r\n case OpportunityDealStatusCodes.Incomplete:\r\n return OpportunityDealStatusNames.Incomplete;\r\n\r\n case OpportunityDealStatusCodes.DraftRenew:\r\n return OpportunityDealStatusNames.DraftRenew;\r\n\r\n case OpportunityDealStatusCodes.InsufficientInformation:\r\n return OpportunityDealStatusNames.InsufficientInformation;\r\n\r\n case OpportunityDealStatusCodes.PendingSecondaryReview:\r\n return OpportunityDealStatusNames.PendingSecondaryReview;\r\n\r\n default:\r\n break;\r\n }\r\n}\r\n\r\nexport function getUserDetails(): IUserDetail {\r\n var userDetails = getUserSession()\r\n if (userDetails == null) {\r\n return <IUserDetail>{}\r\n }\r\n\r\n return JSON.parse(userDetails);\r\n}\r\n\r\n//Function converts route config json to IRouteDetails and return IRouteDetails information.\r\nexport function getRouteConfig(): IRouteDetail[] {\r\n var routeConfigs: IRouteDetail[] = [];\r\n routeConfigs = RouteConfig.map((item: any) => {\r\n return {\r\n routeName: item.routeName,\r\n allowRoutingUserRoles: item.allowRoutingUserRoles,\r\n allowMenuItemUserRoles: item.allowMenuItemUserRoles,\r\n isMenuItem: item.isMenuItem,\r\n menuName: item.menuName,\r\n menuKey: item.menuKey,\r\n menuHref: item.menuHref,\r\n menuIcon: item.menuIcon,\r\n isMenuHidden: item.isMenuHidden,\r\n menuTarget: item.menuTarget,\r\n isLoadNewTab: item.isLoadNewTab\r\n } as IRouteDetail\r\n });\r\n return routeConfigs;\r\n}\r\n\r\n//Function to return logged in user sub role information\r\nexport function getUserRole(): string {\r\n let userSession = getUserSession();\r\n if (!isNullOrEmpty(userSession)) {\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n return Array.prototype.map.call(loggedInUserInfo.userRoleDetails, s => s.userSubRole).toString();\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n\r\n//this to get user role for logged in person. we will be validating both userrole/sub role for\r\nexport function getUserMainRole(): string {\r\n let userSession = getUserSession();\r\n if (!isNullOrEmpty(userSession)) {\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n var roleArray = Array.prototype.map.call(loggedInUserInfo.userRoleDetails, s => s.userRole);\r\n let uniqueItems = [...new Set(roleArray)];\r\n return uniqueItems.toString();\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n//Function to return User Session Object\r\nexport function getUserSession(): any {\r\n let userSession = sessionStorage.getItem(SessionStorageConsts.loggedInUserInfo);\r\n if (!isNullOrEmpty(userSession)) {\r\n return decryptString(JSON.stringify(userSession));\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n\r\n//Sort function for Panel in CP Strategic. //Todo Remove later\r\nexport const sortArray = (items: Array<any>) => {\r\n return items.sort((a, b) => {\r\n return (a.name.toLowerCase() > b.name.toLowerCase()) ? 1 : -1;\r\n });\r\n}\r\n\r\n//sort array data by object name and data type\r\nexport const sortArrayData = (items: Array<any>, dataType: string, propertyName: string) => {\r\n return items.sort((a, b): any => {\r\n switch (dataType) {\r\n case 'name':\r\n return (a[propertyName].toLowerCase() > b[propertyName].toLowerCase()) ? 1 : -1;\r\n case 'number':\r\n return a[propertyName] - b[propertyName];\r\n default: break;\r\n }\r\n });\r\n}\r\n\r\n//returns if IOpportunityAccount is editable based on Id.\r\nexport function isEditableAccountById(id?: string) {\r\n let isSavedItem = getsavedContext().opportunityDeals && getsavedContext().opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.Draft && getsavedContext().opportunityAccounts?.some(acc => acc.id === id);\r\n return !isSavedItem;\r\n}\r\n\r\n//this method helps to identify if the account item can editable based on pagemode and case status.\r\nexport function isEditableAccount(countryId?: string, pageMode?: string, statusCode?: number, accountItem?: IAccount, partnerType?: number) {\r\n var editMode = false;\r\n var isSavedItem = false;\r\n if (accountItem) {\r\n //check if item is already saved and not allow to uncheck if case is not in draft status\r\n isSavedItem = isSavedAccount(countryId, partnerType, accountItem);\r\n }\r\n if (pageMode?.toLowerCase() === PageMode.View.toLowerCase()) {\r\n editMode = true;\r\n }\r\n else if (pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() && statusCode !== OpportunityDealStatusCodes.Draft && isSavedItem) {\r\n editMode = true;\r\n }\r\n return editMode;\r\n}\r\n\r\nexport function isSavedAccount(countryId?: string, partnerType?: number, accountItem?: IAccount) {\r\n var isSavedItem = false;\r\n var items = [];\r\n items = getsavedContext().opportunityAccounts?.filter(o => o.countryId === countryId) || [];\r\n if (partnerType) {\r\n items = items?.filter(o => o.partnerType === partnerType) || [];\r\n }\r\n if (items?.length > 0 && items[0].accounts) {\r\n if (items[0].accounts?.findIndex(item => item.accountId && item.accountId === accountItem?.accountId) !== -1) {\r\n isSavedItem = true;\r\n }\r\n }\r\n return isSavedItem\r\n}\r\n//this method will identify logged in person is owner/ co-owner of the case he is editing/view\r\nexport function getOwnerInfo() {\r\n var userRole = \"\";\r\n var savedContext = getsavedContext();\r\n var submitterInfo = savedContext.submitterDetails;\r\n var dealContactInfo = savedContext.opportunityDeals && savedContext.opportunityDeals[0].dealContacts;\r\n var loggedUserInfo = JSON.parse(getUserSession());\r\n\r\n if ((submitterInfo?.email.toLowerCase() === loggedUserInfo.email.toLowerCase()) ||\r\n (dealContactInfo && dealContactInfo?.findIndex(c => c.isCoOwner === true && c.email?.toLowerCase() === loggedUserInfo.email.toLowerCase()) != -1)) {\r\n userRole = getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Owner\", UIControlsText.Owner);\r\n }\r\n return userRole;\r\n}\r\n\r\n//validate account is already saved\r\nexport function savedAccountAction(countryId?: string, partnerType?: number, accountItem?: IAccount) {\r\n var action = \"\";\r\n var items = getsavedContext().opportunityAccounts?.filter(o => o.countryId === countryId && o.partnerType === partnerType) || [];\r\n if (items?.length > 0 && items[0].accounts) {\r\n var idx = items[0].accounts?.findIndex(item => item.accountId && item.accountId === accountItem?.accountId);\r\n if (idx !== -1) {\r\n action = items[0].accounts[idx].action || \"\";\r\n }\r\n }\r\n return action\r\n}\r\n\r\n//this method will return action at child level, when already saved, return action from API otherwise \"Add\" action\r\nexport function getAction(account: IAccount, countryId?: string, partnerType?: number) {\r\n var savedAction = savedAccountAction(countryId, partnerType, account);\r\n if (savedAction !== \"\") {\r\n savedAction = savedAction;\r\n }\r\n else {\r\n savedAction = ActionType.Add;\r\n }\r\n return savedAction;\r\n}\r\n\r\n//validate account is already saved\r\nexport function isPartnerAccount(countryId?: string, partnerType?: number, accountItem?: IAccount, dmpAccountID?: string) {\r\n var isSaved = false;\r\n var dmpAccount = getsavedContext().opportunityAccounts?.find(r => r.countryId === countryId && r.partnerType === partnerType && r.accounts?.find(a => a.accountId === dmpAccountID));\r\n if (dmpAccount && dmpAccount?.partnerAccounts) {\r\n var idx = dmpAccount?.partnerAccounts && dmpAccount?.partnerAccounts[dmpAccountID as string]?.findIndex(item => item.accountId && item.accountId === accountItem?.accountId);\r\n if (idx !== -1 && dmpAccount?.partnerAccounts[dmpAccountID as string]) {\r\n isSaved = true\r\n }\r\n }\r\n return isSaved;\r\n}\r\n\r\n//validate account is already saved\r\nexport function savedPartnerAccount(countryId?: string, partnerType?: number, accountItem?: IAccount, dmpAccountID?: string) {\r\n var action = \"\";\r\n var dmpAccount = getsavedContext().opportunityAccounts?.find(r => r.countryId === countryId && r.partnerType === partnerType && r.accounts?.find(a => a.accountId === dmpAccountID));\r\n if (dmpAccount && dmpAccount?.partnerAccounts) {\r\n var idx = dmpAccount?.partnerAccounts && dmpAccount?.partnerAccounts[dmpAccountID as string]?.findIndex(item => item.accountId && item.accountId === accountItem?.accountId);\r\n if (idx !== -1 && dmpAccount?.partnerAccounts[dmpAccountID as string]) {\r\n action = dmpAccount?.partnerAccounts && dmpAccount?.partnerAccounts[dmpAccountID as string][idx].action || \"\";\r\n }\r\n }\r\n return action\r\n}\r\n\r\n//this method will return action at child level, when already saved, return action from API otherwise \"Add\" action\r\nexport function getPartnerAction(account: IAccount, countryId?: string, partnerType?: number, dmpAccountID?: string) {\r\n var savedAction = savedPartnerAccount(countryId, partnerType, account, dmpAccountID);\r\n if (savedAction != \"\") {\r\n savedAction = savedAction;\r\n }\r\n else {\r\n savedAction = ActionType.Add;\r\n }\r\n return savedAction\r\n}\r\n\r\n//validate MS store checkbox to be disabled based on case status and pagemode\r\nexport function isMSStoreDisable(customerCountry?: ICountry, partnerType?: number, pageMode?: string, statusCode?: number) {\r\n var isDisable = false;\r\n if (pageMode === PageMode.View) {\r\n return true;\r\n }\r\n if (pageMode === PageMode.Create) {\r\n return !customerCountry?.isMsStore;\r\n }\r\n if (pageMode === PageMode.Edit) {\r\n var savedContext = getsavedContext();\r\n if (savedContext) {\r\n var items = savedContext.opportunityAccounts?.filter(o => o.countryId === customerCountry?.countryId && o.partnerType === partnerType) || [];\r\n if (items?.length > 0) {\r\n if (statusCode != OpportunityDealStatusCodes.Draft) {\r\n isDisable = true;\r\n }\r\n }\r\n }\r\n }\r\n return isDisable\r\n}\r\n//this method will return action for at Parent level (MS Store, ADD - All Country & All EU), when already saved, return action from API otherwise \"Add\" action\r\nexport function getParentAccountAction(countryId?: string, partnerType?: number) {\r\n var action = \"\";\r\n var items = getsavedContext().opportunityAccounts?.filter(o => o.countryId === countryId && o.partnerType === partnerType) || [];\r\n if (items?.length > 0) {\r\n if (items[0]?.accounts && items[0].accounts.length > 0) {\r\n action = items[0]?.accounts?.[0]?.action || \"\";\r\n }else{\r\n action = items[0].action || \"\";\r\n }\r\n }\r\n else {\r\n action = ActionType.Add;\r\n }\r\n return action\r\n}\r\n//Function to return logged in user sub role information\r\nexport function getDistinctUserRole(userRoleDetails: IUserRoleDetail[]): string {\r\n\r\n let userSubRoles: Array<string> = [];\r\n let userRoles: Array<string> = [];\r\n let userRole = \"\";\r\n userRoleDetails.map(userRoleDetail => {\r\n if (!userSubRoles.includes(userRoleDetail.userSubRole)) {\r\n userSubRoles.push(userRoleDetail.userSubRole);\r\n }\r\n if (!userRoles.includes(userRoleDetail.userRole)) {\r\n userRoles.push(userRoleDetail.userRole);\r\n }\r\n });\r\n\r\n if (userRoles.length === 1 && userRoles.includes(UserRole.MSStore)) {\r\n userRole = UserRole.MSStore;\r\n }\r\n else if (userSubRoles.length === 1 && userSubRoles.includes(UserSubRole.ADD)) {\r\n userRole = UserSubRole.ADD;\r\n }\r\n else if (userSubRoles.length === 1 && (userSubRoles.includes(UserSubRole.ADR) || userSubRoles.includes(UserSubRole.DMP))) {\r\n userRole = UserSubRole.Reseller;\r\n }\r\n else if (userSubRoles.length > 1 && (userSubRoles.includes(UserSubRole.ADR) || userSubRoles.includes(UserSubRole.DMP)) && !userSubRoles.includes(UserSubRole.ADD)) {\r\n userRole = UserSubRole.Reseller;\r\n }\r\n else if (userSubRoles.length > 1 && (userSubRoles.includes(UserSubRole.ADR) || userSubRoles.includes(UserSubRole.DMP)) && userSubRoles.includes(UserSubRole.ADD)) {\r\n userRole = UserSubRole.ADDReseller;\r\n }\r\n return userRole;\r\n\r\n}\r\n\r\n//Function to return logged in user sub role information\r\nexport function getRequestorTypeRoles(userRoleDetails: IUserRoleDetail[]): string {\r\n let userSubRoles: Array<string> = [];\r\n let userRoles: Array<string> = [];\r\n let userRole = \"\";\r\n userRoleDetails.map(userRoleDetail => {\r\n if (!userSubRoles.includes(userRoleDetail.userSubRole)) {\r\n userSubRoles.push(userRoleDetail.userSubRole);\r\n }\r\n if (!userRoles.includes(userRoleDetail.userRole)) {\r\n userRoles.push(userRoleDetail.userRole);\r\n }\r\n });\r\n if (userRoles.length === 1 && userRoles.includes(UserRole.MSStore)) {\r\n userRole = UserRole.MSStore;\r\n }\r\n else if (userRoles.length === 1 && userRoles.includes(UserRole.MSSeller)) {\r\n userRole = UserRole.MSSeller;\r\n }\r\n else if (userSubRoles.length === 1 && userSubRoles.includes(UserSubRole.ADD)) {\r\n userRole = UserSubRole.ADD;\r\n }\r\n else if (userSubRoles.length === 1 && (userSubRoles.includes(UserSubRole.ADR))) {\r\n userRole = UserSubRole.ADR;\r\n }\r\n else if (userSubRoles.length === 1 && userSubRoles.includes(UserSubRole.DMP)) {\r\n userRole = UserSubRole.DMP;\r\n }\r\n else if (userSubRoles.length > 1 && userSubRoles.includes(UserSubRole.ADD)) {\r\n userRole = UserSubRole.ADD;\r\n }\r\n return userRole;\r\n}\r\n\r\nasync function setSessionData() {\r\n let [productTypes, countries, distributors, verticals, dealTypes, dealDurationConfig, dealVolumeConfig, resourceStrings] = await Promise.allSettled([\r\n nextGenService.getProductTypes(),\r\n nextGenService.getAllCountries(),\r\n nextGenService.getAllDistributors(),\r\n nextGenService.getAllVerticals(),\r\n nextGenService.getAllDealTypes(),\r\n nextGenService.getDealDurationConfig(),\r\n nextGenService.getDealQuantityThresholds(),\r\n nextGenService.getAllResourceStrings(),\r\n ]);\r\n\r\n if (productTypes.status === 'fulfilled') {\r\n sessionStorage.setItem(SessionStorageConsts.productTypes, JSON.stringify(productTypes.value.data));\r\n }\r\n\r\n if (countries.status === 'fulfilled') {\r\n sessionStorage.setItem(SessionStorageConsts.countries, JSON.stringify(countries.value.data));\r\n }\r\n\r\n if (distributors.status === 'fulfilled') {\r\n sessionStorage.setItem(SessionStorageConsts.distributors, JSON.stringify(distributors.value.data));\r\n }\r\n\r\n if (verticals.status === 'fulfilled') {\r\n var filteredVerticals = verticals.value.data.filter(x => x.code != ApplicationConstants.AllVertical);\r\n sessionStorage.setItem(SessionStorageConsts.verticals, JSON.stringify(filteredVerticals));\r\n }\r\n\r\n if (dealTypes.status === 'fulfilled') {\r\n sessionStorage.setItem(SessionStorageConsts.dealTypes, JSON.stringify(dealTypes.value.data));\r\n }\r\n\r\n if (dealDurationConfig.status === 'fulfilled') {\r\n sessionStorage.setItem(SessionStorageConsts.dealDurationConfig, JSON.stringify(dealDurationConfig.value.data));\r\n }\r\n\r\n if (dealVolumeConfig.status === 'fulfilled') {\r\n sessionStorage.setItem(SessionStorageConsts.dealVolumeConfig, JSON.stringify(dealVolumeConfig.value.data));\r\n }\r\n\r\n if (resourceStrings.status === 'fulfilled' && resourceStrings.value && resourceStrings.value.data) {\r\n sessionStorage.setItem(SessionStorageConsts.resourceStrings, JSON.stringify(resourceStrings.value.data[\"en-US\"]));\r\n }\r\n}\r\n\r\nexport async function intializeSessionConstants() {\r\n if (sessionStorage.getItem(SessionStorageConsts.productTypes) === null\r\n || sessionStorage.getItem(SessionStorageConsts.countries) === null\r\n || sessionStorage.getItem(SessionStorageConsts.distributors) === null\r\n || sessionStorage.getItem(SessionStorageConsts.verticals) === null\r\n || sessionStorage.getItem(SessionStorageConsts.dealTypes) === null\r\n || sessionStorage.getItem(SessionStorageConsts.dealDurationConfig) === null\r\n || sessionStorage.getItem(SessionStorageConsts.dealVolumeConfig) === null\r\n || sessionStorage.getItem(SessionStorageConsts.resourceStrings) === null) {\r\n await setSessionData();\r\n }\r\n}\r\n\r\nexport async function getAllDealTypes(): Promise<IDealType[]> {\r\n let dealTypes: IDealType[] = getEntityDataFromSession(SessionStorageConsts.dealTypes)\r\n\r\n if (dealTypes == null || dealTypes.length <= 0) {\r\n const response = await Promise.resolve(nextGenService.getAllDealTypes());\r\n if (response.status === 200) {\r\n dealTypes = response.data;\r\n if (dealTypes.length > 0) {\r\n sessionStorage.setItem(SessionStorageConsts.dealTypes, JSON.stringify(dealTypes));\r\n }\r\n }\r\n }\r\n\r\n return dealTypes;\r\n}\r\n\r\nexport async function getAllDealQuantityThresholds(): Promise<IDealQuantityThresholds[]> {\r\n let quantityThresholds: IDealQuantityThresholds[] = getEntityDataFromSession(SessionStorageConsts.dealVolumeConfig);\r\n\r\n if (quantityThresholds == null || quantityThresholds.length <= 0) {\r\n const response = await Promise.resolve(nextGenService.getDealQuantityThresholds());\r\n if (response.status === 200) {\r\n quantityThresholds = response.data;\r\n if (quantityThresholds.length > 0) {\r\n sessionStorage.setItem(SessionStorageConsts.dealVolumeConfig, JSON.stringify(quantityThresholds));\r\n }\r\n }\r\n }\r\n\r\n return quantityThresholds;\r\n}\r\n\r\nexport async function getAllDealDurationConfigs(): Promise<IDealDurationConfig[]> {\r\n let dealDurationConfig: IDealDurationConfig[] = getEntityDataFromSession(SessionStorageConsts.dealDurationConfig);\r\n\r\n if (dealDurationConfig == null) {\r\n const response = await Promise.resolve(nextGenService.getDealDurationConfig());\r\n if (response.status === 200) {\r\n dealDurationConfig = response.data;\r\n if (dealDurationConfig.length > 0) {\r\n sessionStorage.setItem(SessionStorageConsts.dealDurationConfig, JSON.stringify(dealDurationConfig));\r\n }\r\n }\r\n }\r\n\r\n return dealDurationConfig;\r\n}\r\n\r\nexport function getRegionFromCountry(countryName?: string): string {\r\n let countriesInSession = sessionStorage.getItem(SessionStorageConsts.countries);\r\n if (countriesInSession !== null) {\r\n var countryList = JSON.parse(countriesInSession);\r\n if (!isNullOrEmpty(countryName)) {\r\n let selectedCountry = countryList.find((x: any) => x.countryName === countryName)\r\n return selectedCountry.region?.toLowerCase()\r\n }\r\n }\r\n\r\n return \"\"\r\n}\r\n\r\nexport function getDealDurationConfig(dealType: string, country?: string): IDealDurationConfig | undefined {\r\n let dealDurationConfigs: IDealDurationConfig[] = getEntityDataFromSession(SessionStorageConsts.dealDurationConfig);\r\n let regionName = ''\r\n if (!isNullOrEmpty(country)) {\r\n regionName = getRegionFromCountry(country)\r\n }\r\n\r\n let commonConfigs = dealDurationConfigs.filter(config => config.dealTypeName?.toLowerCase() === dealType?.toLowerCase());\r\n let countryConfig = commonConfigs.find(config => config.countryName?.toLowerCase() === country?.toLowerCase());\r\n let regionConfig = commonConfigs.find(config => config.regionName?.toLowerCase() === regionName?.toLowerCase());\r\n let defaultConfig = commonConfigs.find(config => isNullOrEmpty(config.countryName) && isNullOrEmpty(config.regionName));\r\n\r\n if (!isNullOrEmpty(countryConfig)) {\r\n return countryConfig\r\n }\r\n\r\n if (isNullOrEmpty(countryConfig) && !isNullOrEmpty(regionConfig)) {\r\n return regionConfig\r\n }\r\n\r\n return defaultConfig\r\n}\r\n\r\nexport function getDealVolumes(dealType: string, productType: string, businessVertical?: string, country?: string): IDealQuantityThresholds | undefined {\r\n let dealVolumesConfigs: IDealQuantityThresholds[] = getEntityDataFromSession(SessionStorageConsts.dealVolumeConfig);\r\n let verticalVolumeConfigs = dealVolumesConfigs.filter(config => config?.businessVerticalName?.toLowerCase() === businessVertical?.toLowerCase() && config?.opportunityDealType?.toLowerCase() === dealType?.toLowerCase() && config.productGroupType?.toLowerCase() === productType?.toLowerCase())\r\n let commonConfigs = dealVolumesConfigs.filter(config => config?.businessVerticalName?.toLowerCase() === undefined && config?.opportunityDealType?.toLowerCase() === dealType?.toLowerCase() && config.productGroupType?.toLowerCase() === productType?.toLowerCase());\r\n\r\n let regionName = ''\r\n if (!isNullOrEmpty(country)) {\r\n regionName = getRegionFromCountry(country)\r\n }\r\n\r\n if (!isNullOrEmpty(verticalVolumeConfigs)) {\r\n let countryConfig = verticalVolumeConfigs.find(config => config.countryName?.toLowerCase() === country?.toLowerCase());\r\n let regionConfig = verticalVolumeConfigs.find(config => config.regionName?.toLowerCase() === regionName?.toLowerCase());\r\n let defaultConfig = verticalVolumeConfigs.find(config => isNullOrEmpty(config.countryName) && isNullOrEmpty(config.regionName))\r\n\r\n if (!isNullOrEmpty(countryConfig)) {\r\n return countryConfig\r\n }\r\n\r\n if (isNullOrEmpty(countryConfig) && !isNullOrEmpty(regionConfig)) {\r\n return regionConfig\r\n }\r\n\r\n if (!isNullOrEmpty(defaultConfig)) {\r\n return defaultConfig\r\n }\r\n }\r\n\r\n let countryConfig = commonConfigs.find(config => config.countryName?.toLowerCase() === country?.toLowerCase());\r\n let regionConfig = commonConfigs.find(config => config.regionName?.toLowerCase() === regionName?.toLowerCase());\r\n let defaultConfig = commonConfigs.find(config => isNullOrEmpty(config.countryName) && isNullOrEmpty(config.regionName));\r\n\r\n if (!isNullOrEmpty(countryConfig)) {\r\n return countryConfig\r\n }\r\n\r\n if (isNullOrEmpty(countryConfig) && !isNullOrEmpty(regionConfig)) {\r\n return regionConfig\r\n }\r\n\r\n return defaultConfig\r\n}\r\n\r\nexport async function getAllCountries(): Promise<ICountry[]> {\r\n let countries: ICountry[] = [];\r\n let countriesInSession = sessionStorage.getItem(SessionStorageConsts.countries);\r\n if (countriesInSession !== null) {\r\n countries = JSON.parse(countriesInSession);\r\n } else {\r\n const response = await Promise.resolve(nextGenService.getAllCountries());\r\n if (response.status === 200) {\r\n countries = response.data;\r\n if (countries.length > 0) {\r\n sessionStorage.setItem(SessionStorageConsts.countries, JSON.stringify(countries));\r\n }\r\n }\r\n }\r\n return countries;\r\n}\r\n\r\nexport async function getCustomerIndustries(): Promise<any> {\r\n let industries: any;\r\n let industryInSession = sessionStorage.getItem(SessionStorageConsts.industries);\r\n if (industryInSession !== null) {\r\n industries = JSON.parse(industryInSession);\r\n } else {\r\n const response = await Promise.resolve(nextGenService.getIndustries());\r\n if (response.status === 200) {\r\n industries = response.data;\r\n sessionStorage.setItem(SessionStorageConsts.industries, JSON.stringify(industries));\r\n }\r\n }\r\n return industries;\r\n}\r\n\r\nexport function refreshSessionStorageKey(key: string, value: string) {\r\n let sessionValue = sessionStorage.getItem(key);\r\n if (sessionValue) {\r\n sessionStorage.removeItem(key);\r\n }\r\n\r\n if (value) {\r\n sessionStorage.setItem(key, value);\r\n }\r\n}\r\n\r\n//Function to return logged in user sub role information\r\nexport function isRoleBasedFilterRequired(userRole: string): boolean {\r\n return userRole === UserSubRole.ADD || userRole === UserSubRole.Reseller || userRole === UserSubRole.ADDReseller || userRole === UserRole.MSStore\r\n}\r\n\r\n//Function to validate email address format. Returns true if valid.\r\nexport function isValidEmail(email: string): boolean {\r\n let pattern = new RegExp(/^((\"[\\w-\\s]+\")|([\\w-]+(?:\\.[\\w-]+)*)|(\"[\\w-\\s]+\")([\\w-]+(?:\\.[\\w-]+)*))(@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$)|(@\\[?((25[0-5]\\.|2[0-4][0-9]\\.|1[0-9]{2}\\.|[0-9]{1,2}\\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\\]?$)/i);\r\n return pattern.test(email);\r\n}\r\n//this method will return action for at Parent level (MS Store, ADD - All Country & All EU), when already saved, return action from API otherwise \"Add\" action\r\nexport function getChannelContactAction(accountId?: string, statusCode?: number) {\r\n var action = \"\";\r\n var items = getsavedContext().opportunityChannelContacts?.filter(c => c.accountId === accountId) || [];\r\n if (statusCode != OpportunityDealStatusCodes.Draft && items?.length > 0) {\r\n action = \"\";\r\n }\r\n else {\r\n action = ActionType.Add;\r\n }\r\n return action\r\n}\r\n//this method will return email id from savedcontext-required when email is available in context but not in selected Oppaccounts\r\nexport function getChannelContactEmailFromSavedContext(accountId?: string, statusCode?: number) {\r\n var email = '';\r\n var items = getsavedContext().opportunityChannelContacts?.find(c => c.accountId === accountId);\r\n if (statusCode != OpportunityDealStatusCodes.Draft && !isNullOrEmpty(items) ) {\r\n email = items?.channelContactEmails || '';\r\n }\r\n return email;\r\n}\r\n//this method will return iscomplete from savedcontext based on email id-required when email is available in context but not in selected Oppaccounts\r\nexport function getChannelContactIsComplete(accountId?: string, statusCode?: number) {\r\n var items = getsavedContext().opportunityChannelContacts?.find(c => c.accountId === accountId);\r\n if (statusCode != OpportunityDealStatusCodes.Draft && !isNullOrEmpty(items)) {\r\n return true\r\n }\r\n return false;\r\n}\r\nexport function hideResellerSectionsInViewModeForReseller(userRole: string, modeType?: string) {\r\n return userRole !== UserSubRole.Reseller || modeType?.toLowerCase() !== PageMode.View.toLowerCase();\r\n}\r\n\r\n//Function to Read Excel Headers...\r\nexport function readExcelHeader(fileObj: any, callback: any): void {\r\n const reader = new FileReader(); //read the file\r\n const rABS = !!reader.readAsBinaryString;\r\n reader.onload = (e: any) => {\r\n const bstr = e.target.result;\r\n const wb = XLSX.read(bstr, { type: rABS ? 'binary' : 'array', bookVBA: true });\r\n const wsname = wb.SheetNames[0];\r\n const ws = wb.Sheets[wsname];\r\n let excelHaders = extractHeader(ws);\r\n callback(excelHaders);\r\n };\r\n if (rABS) {\r\n reader.readAsBinaryString(fileObj.file);\r\n } else {\r\n reader.readAsArrayBuffer(fileObj.file);\r\n };\r\n}\r\nfunction extractHeader(ws: any) {\r\n const header = []\r\n if (!isNullOrEmpty(ws['!ref'])) {\r\n const columnCount = XLSX.utils.decode_range(ws['!ref']).e.c + 1\r\n for (let i = 0; i < columnCount; ++i) {\r\n header[i] = ws[`${XLSX.utils.encode_col(i)}1`].v\r\n }\r\n }\r\n return header\r\n}\r\n\r\n//Function to validate list of email address. Returns true if valid.\r\nexport function validateEmails(emails: string, separator: string): boolean {\r\n var returnValue: boolean = true;\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(emails)) {\r\n var emailsList = emails.split(separator);\r\n if (emailsList && emailsList.length > 0) {\r\n for (var email of emailsList) {\r\n if (!isValidEmail(email.trim())) {\r\n returnValue = false;\r\n break;\r\n }\r\n }\r\n } else { returnValue = false; }\r\n } else { returnValue = false; }\r\n return returnValue;\r\n}\r\n\r\nexport function isAnyEUCountrySelected(selectedGeoCountries: ICountry[]) {\r\n return selectedGeoCountries != null && selectedGeoCountries.length > 0 && selectedGeoCountries.filter(country => country.isEUEFTA === true).length > 0\r\n}\r\n\r\n//Function to check if the current user has MSSeller role.\r\nexport function isMSSeller(): boolean {\r\n let isMSSeller = false;\r\n const loggedInUserInfo = JSON.parse(getUserSession());\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(loggedInUserInfo)) {\r\n isMSSeller = loggedInUserInfo.userRoleDetails?.some((userRoleDetail: IUserRoleDetail) => userRoleDetail.userRole === UserRole.MSSeller);\r\n }\r\n return isMSSeller;\r\n}\r\n\r\n//Method for adding headers to excel export\r\nexport function addExportExcelHeader(exportExcel: any, props?: IGridProps): void {\r\n var savedCPContext = getsavedContext();\r\n const options = exportExcel.current.workbookOptions()\r\n if (options && options.sheets) {\r\n const rows = options.sheets[0].rows;\r\n options.sheets[0].frozenRows = 5;\r\n const headerRow1 = {\r\n height: 20,\r\n cells: [\r\n {\r\n value: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseIdText\", UIControlsText.CaseIdText),\r\n fontSize: 15,\r\n bold: true,\r\n },\r\n {\r\n value: props?.kendoGridProps.caseNumber ? props?.kendoGridProps.caseNumber : getURLParamValue(ApplicationConstants.OpportunityNumberParamName),\r\n fontSize: 15,\r\n colSpan: props !== undefined ? props.kendoGridProps.noOfColumns - 1 : 2,\r\n },\r\n ],\r\n };\r\n const headerRow2 = {\r\n height: 20,\r\n cells: [\r\n {\r\n value: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText),\r\n fontSize: 15,\r\n bold: true,\r\n },\r\n {\r\n value: props?.kendoGridProps.caseNumber ? props?.kendoGridProps.dealName : savedCPContext.opportunityDeals[0]?.dealName,\r\n fontSize: 15,\r\n colSpan: props !== undefined ? props.kendoGridProps.noOfColumns - 1 : 2,\r\n },\r\n ],\r\n };\r\n const headerRow3 = {\r\n height: 20,\r\n cells: [\r\n {\r\n value: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EndCustomerText\", UIControlsText.EndCustomerText) + \" Country\",\r\n fontSize: 15,\r\n bold: true,\r\n },\r\n {\r\n value: props?.kendoGridProps?.customerCountry ? props?.kendoGridProps?.customerCountry : savedCPContext?.opportunityDeals ? savedCPContext?.opportunityDeals[0]?.dealCustomers?.find(c => c?.customerType === CustomerType.Primary)?.country : undefined,\r\n fontSize: 15,\r\n colSpan: props !== undefined ? props.kendoGridProps.noOfColumns - 1 : 2,\r\n },\r\n ],\r\n };\r\n const headerRow4 = {\r\n height: 20,\r\n cells: [\r\n {\r\n value: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EndCustomerText\", UIControlsText.EndCustomerText) + \" Name\",\r\n fontSize: 15,\r\n bold: true,\r\n },\r\n {\r\n value: props?.kendoGridProps?.customerName ? props?.kendoGridProps?.customerName : savedCPContext?.opportunityDeals ? savedCPContext?.opportunityDeals[0]?.dealCustomers?.find(c => c?.customerType === CustomerType.Primary)?.legalEntityName : undefined,\r\n fontSize: 15,\r\n colSpan: props !== undefined ? props?.kendoGridProps?.noOfColumns - 1 : 2,\r\n },\r\n ],\r\n };\r\n if (rows) {\r\n rows.unshift(headerRow4);\r\n rows.unshift(headerRow3);\r\n rows.unshift(headerRow2);\r\n rows.unshift(headerRow1);\r\n }\r\n exportExcel.current.save(options);\r\n }\r\n}\r\n\r\n//this method will be common for download according to the filename with extension and response as input param.\r\nexport async function downloadDatabyInputFormat(fileName: string, response: any) {\r\n let responseData: any = response.data;\r\n if (responseData !== null) {\r\n var pdfFile = \"data:application/pdf;base64,\" + responseData\r\n var download = document.createElement(\"a\");\r\n download?.setAttribute(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"HrefAttribute\", UIControlsText.HrefAttribute), pdfFile)\r\n download?.setAttribute(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DownloadAttribute\", UIControlsText.DownloadAttribute), fileName)\r\n download?.click()\r\n }\r\n}\r\n\r\n//This method removes the timestamp and timezone and returns the date part\r\nexport function getDatePart(fullDate?: Date) {\r\n if (fullDate) {\r\n let dt = Moment(fullDate.toString());\r\n\r\n let day = dt.date();\r\n let month = dt.month();\r\n let year = dt.year();\r\n let date = new Date(year, month, day, 0, 0, 0, 0); //Remove the timestamp and timezone\r\n return date;\r\n }\r\n}\r\n\r\n\r\n// encrypt string \r\nexport function encryptString(inputString: string): string {\r\n if (!isNullOrEmpty(inputString)) {\r\n return CryptoJS.AES.encrypt(inputString, process.env.REACT_APP_ENCRYPT_SECRET_KEY || '').toString();\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n\r\n// decrypt string\r\nexport function decryptString(inputString: string): string {\r\n if (!isNullOrEmpty(inputString)) {\r\n try {\r\n return CryptoJS.AES.decrypt(JSON.parse(inputString), process.env.REACT_APP_ENCRYPT_SECRET_KEY || '').toString(CryptoJS.enc.Utf8);\r\n }\r\n catch (e) {\r\n return \"\"; // will be kicked out to login page in case of exception.\r\n }\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n\r\n/**\r\n * Download the attachment\r\n * @method\r\n * @param {string} filename \r\n * @param {string} content \r\n */\r\nexport const downloadFile = (filename: string, content: string) => {\r\n var element = document.createElement('a');\r\n element.setAttribute('href', 'data:application/octet-stream;base64,' + content);\r\n element.setAttribute('download', filename);\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n}\r\n\r\n/**\r\n * to check the logged in user has specific role .\r\n * @method\r\n * @returns {boolean}.\r\n */\r\nexport const isLoggedInUserHasSubRole = (subRole: UserSubRole): boolean => {\r\n var userRole = getUserRole();\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(userRole)) {\r\n return userRole?.toUpperCase().indexOf(subRole) > -1;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Validate email with seperator.\r\n * @method\r\n * @param {string} value.\r\n * @param {string} seperator.\r\n * @returns {boolean}.\r\n */\r\nexport const isValidEmailWithSeperator = (value: string, seperator: string): boolean => {\r\n if (JavaScriptExtensions.isEmptyOrNullOrUndefined(value)) {\r\n return false;\r\n }\r\n else {\r\n let isInvalid = value.split(seperator).some((email) => email.trim() !== \"\" && !isValidEmail(email.trim()));\r\n if (isInvalid) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport function getLoginUserRoles(): string[] {\r\n var userRole = getUserRole().concat(',').concat(getUserMainRole());\r\n return userRole.split(\",\");\r\n}\r\n\r\n/**\r\n * to get master data from Session \r\n * @method\r\n * @param {string} itemKey.\r\n * @returns {T[]}.\r\n */\r\nexport function getEntityDataFromSession<T>(itemKey: string): T[] {\r\n var items = new Array<T>();\r\n let data = sessionStorage.getItem(itemKey);\r\n if (data !== null) {\r\n items = JSON.parse(data);\r\n }\r\n\r\n return items;\r\n}\r\n\r\n/**\r\n * back to dashboard method \r\n * @returns {void}.\r\n */\r\nexport function backToDashboard(): void {\r\n window.location.href = '/dashboard'\r\n}\r\n\r\n/**\r\n * navigate To Page\r\n * @returns {void}.\r\n */\r\nexport function navigateToPage(href: string): void {\r\n window.location.href = href;\r\n}\r\n\r\n/**\r\n * Filters Country list based on isMSStore,isEUFTA or Selected Region\r\n * @returns {ICountry[]}.\r\n */\r\nexport function countriesFilter(selectedCountryId?: string): ICountry[] {\r\n const userRole = getUserRole();\r\n let countryList: ICountry[] = [];\r\n let countriesInSession = sessionStorage.getItem(SessionStorageConsts.countries);\r\n if (countriesInSession !== null) {\r\n countryList = JSON.parse(countriesInSession);\r\n if (userRole.includes(UserSubRole.MSStoreUser)) {\r\n countryList = countryList.filter(country => country.isMsStore === true);\r\n } else {\r\n let selectedCountry = countryList.find(x => x.countryId === selectedCountryId);\r\n if (!isNullOrEmpty(selectedCountry)) {\r\n if (selectedCountry?.isEUEFTA) {\r\n countryList = countryList.filter(country => country.isEUEFTA === selectedCountry?.isEUEFTA);\r\n }\r\n else if (selectedCountry?.region?.toLowerCase() === ApplicationConstants.MiddleEastRegion.toLowerCase()) {\r\n countryList = countryList.filter(country => country.region?.toLowerCase() === ApplicationConstants.MiddleEastRegion.toLowerCase());\r\n }\r\n else {\r\n countryList = countryList.filter(country => country.applicablePriceListGeo === selectedCountry?.applicablePriceListGeo);\r\n }\r\n }\r\n }\r\n }\r\n var excludeCountries = process.env.REACT_APP_EXCLUDE_COUNTRIES;\r\n return countryList.filter(x => !excludeCountries?.split(',')?.includes(x.countryName || \"\"));\r\n}\r\n\r\n/**\r\n * Filter and Return Selected Country Object by countryId\r\n * @returns {ICountry}.\r\n */\r\nexport function getCountryById(selectedCountryId: string): ICountry | undefined {\r\n let countries = getEntityDataFromSession<ICountry>(SessionStorageConsts.countries);\r\n return countries?.find((t: ICountry) => t?.countryId === selectedCountryId);\r\n}\r\n\r\n/**\r\n * Filter and Return Selected Country Object\r\n * @returns {ICountry}.\r\n */\r\nexport function getCountryObjByName(selectedCountryName: string) {\r\n let countryList: ICountry[] = [];\r\n countryList = getEntityDataFromSession<ICountry>(SessionStorageConsts.countries);\r\n return countryList.find(x => x.countryName?.toLowerCase() === selectedCountryName.toLowerCase());\r\n}\r\n\r\n/**\r\n * Filter and Return Selected DealType Object\r\n * @returns {IDealType}.\r\n */\r\nexport function getDealType(dealTypeName: string): IDealType {\r\n let dealTypes: IDealType[] = getEntityDataFromSession<IDealType>(SessionStorageConsts.dealTypes) || [];\r\n return dealTypes?.find(x => x.name?.toLocaleLowerCase() === dealTypeName?.toLocaleLowerCase()) || {};\r\n}\r\n\r\nexport function getPropsDeaType(dealName: string) {\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(dealName) && PageConstants.CPStrategicDealtype.replace(/\\s+/g,'').toLowerCase()==dealName)\r\n return PageConstants.CPStrategicDealtype;\r\n else if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(dealName) && PageConstants.OTLEDealtype.toLowerCase()==dealName)\r\n return PageConstants.OTLEDealtype;\r\n}\r\n\r\n/**\r\n * Filter and Return Selected ProductType Object\r\n * @returns {IProductType}.\r\n */\r\nexport function getProductType(productTypeName: string): IProductType {\r\n let productTypes: IProductType[] = getEntityDataFromSession<IProductType>(SessionStorageConsts.productTypes) || [];\r\n return productTypes?.find(x => x.productName?.toLocaleLowerCase() === productTypeName?.toLocaleLowerCase()) || { productName: \"\", productId: \"\" };\r\n}\r\n\r\n//Function to validate postal code format. Returns true if valid.\r\nexport function isValidPostalCode(value: string): boolean {\r\n let pattern = new RegExp(/^[a-z0-9][a-z0-9\\- ]{0,10}[a-z0-9]$/i);\r\n if (value) {\r\n return pattern.test(value);\r\n }\r\n return false;\r\n}\r\n// Function to chooseColumns from Grid\r\nexport const populateGridColumns = (gridConfig: IKendoGridProps): IKendoGridProps => {\r\n let selectedColumns = sessionStorage.getItem(SessionStorageConsts.selectedColumns);\r\n if (selectedColumns === null) {\r\n gridConfig = LoadDefaultGridData(gridConfig)\r\n loadSessionData(gridConfig)\r\n } else {\r\n gridConfig = loadSessionData(gridConfig)\r\n }\r\n return gridConfig\r\n}\r\n\r\nconst loadSessionData = (gridConfig: IKendoGridProps) => {\r\n let selectedColumns = sessionStorage.getItem(SessionStorageConsts.selectedColumns);\r\n if (selectedColumns) {\r\n let sessionGridConfigData = JSON.parse(selectedColumns)\r\n let pricingGridColumns = sessionGridConfigData.filter((col: IMultiSelectDropDownSessionProps) => col.gridName === gridConfig.gridName)\r\n if (pricingGridColumns.length !== 0) {\r\n gridConfig.columns = pricingGridColumns[0].selectedColumns\r\n } else {\r\n let defaultSelectedColumns = LoadDefaultGridData(gridConfig);\r\n sessionGridConfigData.push({ gridName: gridConfig.gridName, selectedColumns: defaultSelectedColumns.columns })\r\n sessionStorage.setItem(SessionStorageConsts.selectedColumns, JSON.stringify(sessionGridConfigData))\r\n }\r\n } else {\r\n let defaultSelectedColumns = LoadDefaultGridData(gridConfig)\r\n let dropDownSessionProps: IMultiSelectDropDownSessionProps[] = []\r\n dropDownSessionProps.push({ gridName: gridConfig.gridName, selectedColumns: defaultSelectedColumns.columns })\r\n sessionStorage.setItem(SessionStorageConsts.selectedColumns, JSON.stringify(dropDownSessionProps))\r\n }\r\n return gridConfig;\r\n}\r\n\r\nexport const LoadDefaultGridData = (gridConfig: IKendoGridProps): IKendoGridProps => {\r\n var columns: IKendoGridColumnProps[] = []\r\n gridConfig.columns.filter((col) => col.isDefaultSelected === false).map((element) => {\r\n element.isVisible = false;\r\n columns.push(element)\r\n })\r\n return gridConfig;\r\n}\r\n\r\n//Function to validate postal code format. Returns true if valid.\r\nexport function isValidInterger(value: string): boolean {\r\n let pattern = new RegExp(/^[0-9]{1,10}$/i);\r\n if (value) {\r\n return pattern.test(value);\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Converts a long string of bytes into a readable format e.g KB, MB, GB, TB, YB\r\n * \r\n * @param {Int} num The number of bytes.\r\n */\r\nexport function convertToReadableBytes(bytes: number, decimals: number = 2) {\r\n if (bytes === 0) return '0 Bytes';\r\n const kiloByte = 1024;\r\n const allowedDecimals = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(kiloByte));\r\n return parseFloat((bytes / Math.pow(kiloByte, i)).toFixed(allowedDecimals)) + ' ' + sizes[i];\r\n}\r\n\r\n/**\r\n * Provides functionality to check for the currently logged in user type whether it is an ADR,ADD,DMP or MSStore user\r\n * Based on the role and the country selection, the channel functionality is shown respectively for the user.\r\n * @method \r\n */\r\nexport function getRequestorsChannelFunctionalities(userRole: string, countryName: string) {\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n let internalUser = userRoleDetails?.length > 0 && userRoleDetails[0].userRole;\r\n let userChannelRole = (internalUser === 'MSS' || internalUser === 'MST') ? internalUser : userRole;\r\n\r\n const isSpecialLocationOrWorldwide: SpecialLocationtype = getMPNLocationValue(countryName);\r\n let requestorType = RequestorsRoleType.Invalid;\r\n switch (userChannelRole) {\r\n case 'DMP':\r\n requestorType = RequestorsRoleType.DMP;\r\n break;\r\n case 'ADD':\r\n requestorType = RequestorsRoleType.ADD;\r\n break;\r\n case 'ADR':\r\n requestorType = RequestorsRoleType.ADR;\r\n break;\r\n case 'MST':\r\n case 'MSS':\r\n requestorType = RequestorsRoleType.MSStore;\r\n break;\r\n }\r\n\r\n let channelDisplayFunctionalities: IChannelFunctionalityDisplayState = {\r\n MSStore: (requestorType === RequestorsRoleType.MSStore),\r\n PrimaryResellersOnly: (requestorType & isSpecialLocationOrWorldwide) === ChannelDisplayFunctionalities.PrimaryResellersOnly,\r\n PrimaryAndFinalTierResellers: (requestorType & isSpecialLocationOrWorldwide) === ChannelDisplayFunctionalities.PrimaryAndFinalTierResellers,\r\n PrimaryandAdditionalResellers: (requestorType & isSpecialLocationOrWorldwide) === ChannelDisplayFunctionalities.PrimaryandAdditionalResellers,\r\n AdditionalAndDistributors: (requestorType & isSpecialLocationOrWorldwide) === ChannelDisplayFunctionalities.AdditionalAndDistributors,\r\n FinalTierAndDistributors: (requestorType & isSpecialLocationOrWorldwide) === ChannelDisplayFunctionalities.FinalTierAndDistributors,\r\n MultipleDistributorsOnly: (requestorType & isSpecialLocationOrWorldwide) === ChannelDisplayFunctionalities.MultipleDistributorsOnly,\r\n }\r\n return channelDisplayFunctionalities;\r\n}\r\n\r\n/**\r\n * Provides functionality to get the Partner's country to handle country related scenarios for different personas.\r\n * @method \r\n */\r\nexport function getMPNLocationValue(countryName: string): SpecialLocationtype {\r\n let locationType: any;\r\n\r\n switch (countryName) {\r\n case 'China':\r\n locationType = SpecialLocationtype.China;\r\n break;\r\n case 'Japan':\r\n locationType = SpecialLocationtype.Japan;\r\n break;\r\n default:\r\n locationType = SpecialLocationtype.WorldWide;\r\n break;\r\n }\r\n return locationType;\r\n}\r\n\r\nexport function isMsStoreUser() {\r\n const userRole = getUserRole();\r\n if (userRole.includes(UserSubRole.MSStoreUser)) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n\r\nexport const updateDefaultPageSizesInSession = (gridName: string, pageNumber: number): number => {\r\n let selectedPageSizes = sessionStorage.getItem(SessionStorageConsts.selectedPageSizes);\r\n if (selectedPageSizes) {\r\n let sessionPageSize = JSON.parse(selectedPageSizes)\r\n let pricingPageSize = sessionPageSize.filter((col: IMultiSelectDropDownSessionProps) => col.gridName === gridName)\r\n if (pricingPageSize.length !== 0) {\r\n if (pricingPageSize[0].pageSize === pageNumber) {\r\n pageNumber = pricingPageSize[0].pageSize\r\n } else {\r\n pricingPageSize[0].pageSize = pageNumber\r\n sessionStorage.setItem(SessionStorageConsts.selectedPageSizes, JSON.stringify(sessionPageSize))\r\n }\r\n\r\n } else {\r\n sessionPageSize.push({ gridName: gridName, pageSize: pageNumber })\r\n sessionStorage.setItem(SessionStorageConsts.selectedPageSizes, JSON.stringify(sessionPageSize))\r\n }\r\n } else {\r\n let dropDownSessionProps: IMultiSelectDropDownSessionProps[] = []\r\n dropDownSessionProps.push({ gridName: gridName, pageSize: pageNumber })\r\n sessionStorage.setItem(SessionStorageConsts.selectedPageSizes, JSON.stringify(dropDownSessionProps))\r\n }\r\n return pageNumber;\r\n}\r\n\r\nexport const getPageNumberFromSession = (gridConfig: IKendoGridProps): number => {\r\n let selectedPageSizes = sessionStorage.getItem(SessionStorageConsts.selectedPageSizes);\r\n if (selectedPageSizes) {\r\n let sessionPageSize = JSON.parse(selectedPageSizes)\r\n let pricingPageSize = sessionPageSize.filter((col: IMultiSelectDropDownSessionProps) => col.gridName === gridConfig.gridName)\r\n if (pricingPageSize.length !== 0) {\r\n gridConfig.noOfRecords = updateDefaultPageSizesInSession(gridConfig.gridName, pricingPageSize[0].pageSize)\r\n } else {\r\n gridConfig.noOfRecords = updateDefaultPageSizesInSession(gridConfig.gridName, gridConfig.noOfRecords)\r\n }\r\n } else {\r\n gridConfig.noOfRecords = updateDefaultPageSizesInSession(gridConfig.gridName, gridConfig.noOfRecords)\r\n }\r\n return gridConfig.noOfRecords;\r\n}\r\n\r\n//this method helps to identify if the account item can editable based on pagemode and case status.\r\nexport function isEditableRow(countryId?: string, pageMode?: string, statusCode?: number, accountItem?: IAccount, partnerType?: number) {\r\n var editMode = false;\r\n var isSavedItem = false;\r\n if (accountItem) {\r\n //check if item is already saved and not allow to uncheck if case is not in draft status\r\n isSavedItem = isRowSaved(countryId, partnerType, accountItem);\r\n }\r\n if (pageMode?.toLowerCase() === PageMode.View.toLowerCase()) {\r\n editMode = true;\r\n }\r\n else if (pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() && isSavedItem && statusCode !== OpportunityDealStatusCodes.Draft) {\r\n editMode = true;\r\n }\r\n return editMode;\r\n}\r\n\r\nexport function isRowSaved(countryId?: string, partnerType?: number, accountItem?: any) {\r\n var isSavedItem = false;\r\n var items = [];\r\n items = getsavedContext().opportunityAccounts?.filter(o => o.countryId === countryId) || [];\r\n if (partnerType) {\r\n items = items?.filter(o => o.partnerType === partnerType) || [];\r\n }\r\n const itemIds = items.map((i: any) => i.accounts && i.accounts.length > 0 && i.accounts[0].accountId);\r\n\r\n isSavedItem = accountItem ? itemIds.includes(accountItem.id) : false;\r\n return isSavedItem;\r\n};\r\n\r\nexport function getValuesForCheckboxList(props: GridColumnMenuProps, kendoGridProps: IKendoGridProps): any[] {\r\n let data: any[] = [];\r\n\r\n switch (props.column.field) {\r\n case ApplicationConstants.StatusCodeColumnName:\r\n data = StatusCodeFilterValues.find(x => x.gridName === kendoGridProps.gridName)?.statusValues.map((value: string) => { return { [`${ApplicationConstants.StatusCodeColumnName}`]: value } }) || [];\r\n break;\r\n case ApplicationConstants.ClosureDecisionColumnName:\r\n data = Object.values(OpportunityDealPortalEditStatusNames).map((value: string) => { return { [`${ApplicationConstants.ClosureDecisionColumnName}`]: value } });\r\n break;\r\n default:\r\n data = kendoGridProps.data;\r\n break;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport function getRuleValidationMessage(sessionData: any, fieldType: string, key: string, message: string): string {\r\n let ruleValidationMessage = \"\";\r\n if (sessionData && !_.isEmpty(sessionData) && sessionData[fieldType] && sessionData[fieldType][key]) {\r\n ruleValidationMessage = sessionData[fieldType][key];\r\n }\r\n\r\n return JavaScriptExtensions.isEmptyOrNullOrUndefined(ruleValidationMessage) ? message : ruleValidationMessage;\r\n}\r\n\r\nexport function gridAccessibilityFix() {\r\n //Fixing Accessibility for sortIcons\r\n (function () {\r\n var sortIcons = document.querySelectorAll(\"span[aria-label='Sortable']\");\r\n sortIcons.forEach((element) => {\r\n element.setAttribute(\"role\", \"button\");\r\n });\r\n })();\r\n\r\n //Fixing Accessibility for GridPagerBtns & gridFootercell\r\n (function () {\r\n var pagerBtns = document.getElementsByClassName(\"k-icon\");\r\n for (let i = 0; i < pagerBtns.length; i++) {\r\n pagerBtns[i].setAttribute(\"aria-hidden\", \"true\");\r\n }\r\n document.querySelector(\"[role='columnfooter']\")?.setAttribute('role', 'gridcell');\r\n var gridpager = document.getElementsByClassName(\"k-dropdown-wrap\");\r\n gridpager[0]?.setAttribute('aria-label', getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PagerDropdownAriaLabel\", UIControlsText.PagerDropdownAriaLabel));\r\n var gridpageroptions = document.querySelectorAll(\".k-dropdown-wrap > span\");\r\n gridpageroptions[0]?.setAttribute('role', 'option');\r\n })();\r\n\r\n //fixing Accessibility issue when no rows selected in grid\r\n (function () {\r\n var gridRows = document.getElementsByClassName(\"k-grid-norecords\");\r\n if (gridRows.length > 0) {\r\n gridRows[0].removeAttribute('aria-rowindex');\r\n gridRows[0].setAttribute('role', 'alert');\r\n }\r\n })();\r\n\r\n //Fixing NaN Accessibility Issue\r\n (function () {\r\n var emptyRow = document.querySelector(\"tfoot\");\r\n if (emptyRow !== null) {\r\n emptyRow.innerHTML = \"\";\r\n }\r\n })();\r\n\r\n //fixing Accessibility issue when no rows selected in grid\r\n (function () {\r\n var gridHeaders = document.getElementsByClassName('k-header');\r\n for (let i = 1; i < gridHeaders.length; i++) {\r\n var headerDiv = (gridHeaders[i].firstElementChild?.firstElementChild) as HTMLElement;\r\n headerDiv?.setAttribute('tabindex','0'); \r\n }\r\n })();\r\n\r\n //Accessibility fix for screen reader not announcing current active page\r\n (function () {\r\n var list=document.getElementsByClassName('k-pager-numbers')\r\n var listItems = list[0].getElementsByTagName('li');\r\n for (let i = 0; i < listItems.length; i++) {\r\n var anchor = listItems[i].querySelector(\"a\");\r\n var label=\"Page \"+ (i+1);\r\n if(anchor?.classList.contains(\"k-state-selected\")==true){\r\n label= 'Current active Page is '+(i+1); \r\n }\r\n anchor?.setAttribute('aria-label',label); \r\n }\r\n })();\r\n\r\n //Accessibility fix to remove role for colgroup\r\n (function () {\r\n var colGroup = document.querySelectorAll(\"colgroup\");\r\n colGroup.forEach((element) => {\r\n element.removeAttribute(\"role\");\r\n });\r\n })();\r\n\r\n // Remove invalid aria attributes\r\n (function () {\r\n var footerRow=document.querySelector('[class=\"k-grid-footer-wrap\"] table tfoot tr');\r\n footerRow?.removeAttribute('aria-rowindex');\r\n })();\r\n\r\n //Accessibility fix to give appropriate name to filter button\r\n (function () {\r\n var colHeader = document.querySelectorAll(\"th\");\r\n colHeader.forEach((element) => {\r\n var headerVal = element.querySelector('span[class=\"k-link\"]')?.getAttribute('title');\r\n var filterButton=element.querySelector('div > div');\r\n var filterName= headerVal +' filter';\r\n filterButton?.setAttribute('aria-label',filterName);\r\n });\r\n })();\r\n};\r\n\r\nexport function isRequestorViewing(submitterEmail?: string) {\r\n let loggedInuser = getUserDetails();\r\n if (!isNullOrEmpty(loggedInuser) && submitterEmail != undefined) {\r\n if (loggedInuser.email.toLowerCase() === submitterEmail.toLowerCase()) {\r\n return true;\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return true;\r\n }\r\n}\r\n\r\nexport function isDateNotWithinThreshold(dateValue: string | undefined, dealType: IDealType) {\r\n if(JavaScriptExtensions.isNullOrUndfinedOrEmpty(dateValue)) {\r\n return \"\";\r\n }\r\n var formatedValue = Moment(dateValue).format('YYYY-MM-DD');\r\n let minExpirationDateInDays : any = dealType?.defaultDurationInDays;\r\n let inputExpirationDate = new Date(formatedValue?.toString());\r\n let currentDate = new Date();\r\n var currentDateFormatted = Moment(currentDate).format('YYYY-MM-DD');\r\n let expirationDateThresholdDate = new Date();\r\n expirationDateThresholdDate.setDate(expirationDateThresholdDate.getDate() + minExpirationDateInDays);\r\n \r\n if (currentDateFormatted === formatedValue) {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ExpirationDateShouldNotBeEqualToCurrentDate\", ErrorMessages.ExpirationDateShouldNotBeEqualToCurrentDate);\r\n }\r\n else if(inputExpirationDate > expirationDateThresholdDate) {\r\n let errorMsg = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ExpirationDateBeyondThresholdDate\", ErrorMessages.ExpirationDateBeyondThresholdDate)\r\n .replace('{0}', minExpirationDateInDays);\r\n return errorMsg;\r\n }\r\n} \r\n\r\nexport function isValidEmailMicrosoftDomain(emailValue?: string) {\r\n if(JavaScriptExtensions.isNullOrUndfinedOrEmpty(emailValue)) {\r\n return \"\";\r\n }\r\n\r\n let regexp = new RegExp('^(([a-zA-Z\\-0-9\\.]+@microsoft.com)[,;]*)+$');\r\n\r\n if(emailValue && !regexp.test(emailValue)) {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"EmailShouldBeMicrosoftDomain\", ErrorMessages.EmailShouldBeMicrosoftDomain);\r\n }\r\n}\r\n\r\nexport function IsInternalPricingProgram(dealTypeName?: string) {\r\n if (!isNullOrEmpty(dealTypeName) && (dealTypeName === DealType.CPStrategic || dealTypeName === DealType.OTLE)) {\r\n return true\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport function IsExternalPricingProgram(dealTypeName?: string) {\r\n if (!isNullOrEmpty(dealTypeName) && (dealTypeName === DealType.DealRegistration || dealTypeName === DealType.SpecialPricing)) {\r\n return true\r\n }\r\n\r\n return false\r\n}","/**\r\n * Enum for ErrorCode.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum ErrorCode {\r\n\r\n /**\r\n * Invalid Case Number.\r\n */\r\n InvalidCase = 1,\r\n}","import React from 'react'\r\nimport { IStyle, mergeStyleSets, ActionButton, IIconProps, FontWeights } from 'office-ui-fabric-react';\r\nimport { NotificationListItem, ISearchResult, ISearchSuggestion, CoherenceHeader, CoherencePanelSize } from '@cseo/controls';\r\nimport { FontSizes } from '@cseo/styles';\r\nimport { getUserSession } from './common/util';\r\nimport { SessionStorageConsts } from '../../models/SessionStorageConsts';\r\nimport { UIControlsText } from '../../content/UIControlsText';\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"./common/util\";\r\nimport { MessageTypeText } from \"../../models/MessageTypeText\";\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\ninterface HeaderProps {\r\n onShowMoreResultsCallback?: (searchtext: string, searchResults: ISearchResult[]) => void;\r\n}\r\ntype PivotOption = 'general' | 'releaseNote' | 'criticalNotification';\r\n\r\ninterface HeaderState {\r\n newNotifications: number;\r\n notificationItems: NotificationListItem[];\r\n showDismissAllBool: boolean;\r\n ocvButtonIsFocused: boolean;\r\n dismissOpenedPanel?: boolean;\r\n searchResults: ISearchResult[];\r\n recentSearchTexts: ISearchSuggestion[];\r\n selectedPivot: PivotOption;\r\n userName: string;\r\n emailAddress: string;\r\n}\r\n\r\n// #region Notification Panel\r\nconst initialNotifications: NotificationListItem[] = [];\r\n\r\nconst openItem = (itemKey: string) => {\r\n const items = initialNotifications.filter(notificationItem => notificationItem.itemKey === itemKey);\r\n alert('Open notification: ' + items[0].subjectHeader + (items[0].senderName ? ' from ' + items[0].senderName : ''));\r\n}\r\n// #endregion\r\n\r\nexport class Header extends React.Component<HeaderProps, HeaderState> {\r\n constructor(props: HeaderProps) {\r\n super(props);\r\n this.state = {\r\n newNotifications: 0,\r\n notificationItems: initialNotifications,\r\n showDismissAllBool: false,\r\n ocvButtonIsFocused: false,\r\n dismissOpenedPanel: undefined,\r\n searchResults: [],\r\n recentSearchTexts: [],\r\n selectedPivot: 'general',\r\n userName: '',\r\n emailAddress: ''\r\n };\r\n }\r\n componentDidMount() {\r\n var userDetails = getUserSession()\r\n let fullName = \"\"\r\n let email = \"\"\r\n if (userDetails != null) {\r\n let loggedInUserInfo = JSON.parse(userDetails);\r\n fullName = loggedInUserInfo.firstName + ' ' + loggedInUserInfo.lastName\r\n email = loggedInUserInfo.email\r\n this.setState({ userName: fullName });\r\n this.setState({ emailAddress: email });\r\n }\r\n //Accessibility Fix to Add Heading Level\r\n var pageHeading = document.querySelectorAll(`a[aria-label= '${ getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PageHeaderLabel\", UIControlsText.PageHeaderLabel) }']`);\r\n pageHeading && pageHeading.forEach((element) => {\r\n element.setAttribute(\"role\", \"heading\");\r\n element.setAttribute(\"aria-level\", \"1\");\r\n });\r\n }\r\n\r\n // #region Notification Panel States Private Functions\r\n private _onDismiss = (id: string[]): void => {\r\n this.setState({ showDismissAllBool: true });\r\n };\r\n\r\n private _updateItem = (\r\n itemKey: string,\r\n dStatus: NotificationListItem['displayStatus'],\r\n rStatus?: NotificationListItem['status']\r\n ) => {\r\n const list = [...this.state.notificationItems];\r\n list.map((item) => {\r\n if (item.itemKey === itemKey) {\r\n item.displayStatus = dStatus;\r\n if (rStatus) {\r\n item.status = rStatus;\r\n }\r\n }\r\n });\r\n this.setState({ notificationItems: list });\r\n };\r\n\r\n private _updateItemDisplayStatus = (): void => {\r\n this.setState({ newNotifications: -1 });\r\n };\r\n\r\n private _onUndoDismissAll = () =>\r\n this.setState({ showDismissAllBool: false });\r\n // #endregion\r\n\r\n private _getHeaderMessage = () : JSX.Element | null => {\r\n var message = null\r\n if(process.env.REACT_APP_ENVTYPE !== undefined && process.env.REACT_APP_ENVTYPE === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"TestEnvType\", UIControlsText.TestEnvType)) {\r\n message = <span className={this.headerStyles.root}>{ \" - \" + getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PageHeaderLabelTestEnv\", UIControlsText.PageHeaderLabelTestEnv) }</span>;\r\n }\r\n return message;\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n <CoherenceHeader\r\n headerLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PageHeaderLabel\", UIControlsText.PageHeaderLabel)}\r\n appNameSettings={{\r\n // @ts-ignore\r\n label: <div>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PageHeaderLabel\", UIControlsText.PageHeaderLabel)}{this._getHeaderMessage()}</div>,\r\n linkUrl: process.env.REACT_APP_HOME_PAGE_URI || \"\"\r\n }}\r\n farRightSettings={{\r\n profileSettings: {\r\n fullName: this.state.userName,\r\n emailAddress: this.state.emailAddress,\r\n imageUrl: '',\r\n logOutLink: process.env.REACT_APP_RSLR_LOGOUT_API_URI || \"\",\r\n body: <div />,\r\n onLogOut: (() => this._onLogout())\r\n }\r\n }}\r\n dismissOpenedPanel={this.state.dismissOpenedPanel}\r\n onDismissOpenedPanel={() => {\r\n this.setState({ dismissOpenedPanel: undefined });\r\n }}\r\n styles={{\r\n dividerStyle: {\r\n height: '0px',\r\n marginBottom: '0px',\r\n marginTop: '0px',\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private settingsStyles = mergeStyleSets({\r\n root: {\r\n marginLeft: '-10px',\r\n marginRight: '-10px'\r\n } as IStyle\r\n });\r\n\r\n private headerStyles = mergeStyleSets({\r\n root: {\r\n color: '#FF7F50',\r\n } as IStyle\r\n });\r\n\r\n // #region Help Panel \r\n private helpLinkStyles = mergeStyleSets({\r\n helpLink: {\r\n margin: '8px 0',\r\n display: 'block',\r\n fontSize: FontSizes.size14,\r\n fontWeight: FontWeights.semibold\r\n } as IStyle,\r\n helpList: {\r\n listStyle: 'none',\r\n paddingLeft: '0'\r\n } as IStyle\r\n });\r\n // #endregion\r\n\r\n // #region Settings Panel \r\n private settingsIcon: IIconProps = { iconName: 'Settings' };\r\n\r\n private ringerIcon: IIconProps = { iconName: 'Ringer' };\r\n\r\n private favoriteStarIcon: IIconProps = { iconName: 'FavoriteStar' };\r\n\r\n private touchIcon: IIconProps = { iconName: 'Touch' };\r\n\r\n private settings: JSX.Element = (\r\n <div className={this.settingsStyles.root}>\r\n <ul className={this.helpLinkStyles.helpList}>\r\n <li>\r\n <ActionButton iconProps={this.settingsIcon}>\r\n General\r\n </ActionButton>\r\n </li>\r\n <li>\r\n <ActionButton iconProps={this.ringerIcon}>\r\n Notifications\r\n </ActionButton>\r\n </li>\r\n <li>\r\n <ActionButton iconProps={this.favoriteStarIcon}>\r\n Favorites\r\n </ActionButton>\r\n </li>\r\n <li>\r\n <ActionButton iconProps={this.touchIcon}>\r\n Accessibility\r\n </ActionButton>\r\n </li>\r\n </ul>\r\n </div>\r\n );\r\n\r\n // #endregion\r\n\r\n private _onLogout() {\r\n // Remove user session saved data from sessionStorage\r\n sessionStorage.removeItem(SessionStorageConsts.loggedInUserInfo);\r\n // Remove all saved data from sessionStorage\r\n sessionStorage.clear();\r\n }\r\n // #endregion\r\n}","export default __webpack_public_path__ + \"static/media/Background_Surface_Portfolio_Lineup_Login.4eb2c10b.jpg\";","import { IStyle, IIconStyles, IDatePickerStyles, mergeStyleSets, IButtonStyles, ILabelStyles, labelProperties, ITextFieldStyles, IStyleFunctionOrObject, ITextFieldStyleProps } from 'office-ui-fabric-react';\r\nimport { getScrollBarWidth } from '@cseo/controls';\r\nimport { IDropdownStyles, IBreadcrumbStyles, IStackProps } from '@fluentui/react';\r\nimport { IStackStyles } from \"@fluentui/react\";\r\nimport { mergeStyles } from 'office-ui-fabric-react';\r\nimport Background from '../images/Background_Surface_Portfolio_Lineup_Login.jpg';\r\nimport { navCollapsedWidth } from '@m365-admin/nav';\r\nimport zIndex from '@mui/material/styles/zIndex';\r\n\r\nconst scrollablePaneStyles = {\r\n position: \"fixed\",\r\n top: 40,\r\n bottom: 0,\r\n right: 0,\r\n};\r\n\r\nexport const stackStyles: Partial<IStackStyles> = { root: { width: 550, paddingLeft: 8 }, };\r\nexport const viewStackStyles: Partial<IStackStyles> = { root: { width: 550, paddingLeft: 6 }, };\r\nexport const stackGridStyles: Partial<IStackStyles> = { root: { width: 1000 } };\r\nexport const stackGridStyleswithPadding: Partial<IStackStyles> = {\r\n root:\r\n {\r\n padding: \"2px 4px 2px 4px\",\r\n width: \"1000\",\r\n }\r\n};\r\n\r\nexport const stackGridStyleswithBelowPadding: Partial<IStackStyles> = {\r\n root:\r\n {\r\n padding: \"0px 0px 6px 0px\",\r\n }\r\n};\r\n\r\nexport const stackGridStyleswithBorder: Partial<IStackStyles> = {\r\n root: {\r\n border: \"1.5px solid rgba(0, 0, 0, 0.1)\",\r\n borderRadius: \"15px\",\r\n }\r\n};\r\n\r\nexport const stackGridStylesButton: Partial<IStackStyles> = {\r\n root:\r\n {\r\n padding: \"8px 4px 4px 4px\",\r\n width: \"1000\",\r\n }\r\n};\r\n\r\nexport const stackGridStylesLabel: Partial<IStackStyles> = {\r\n root:\r\n {\r\n padding: \"6px 4px 4px 4px\",\r\n width: \"1000\",\r\n }\r\n};\r\n\r\nexport const stackButtonStyles: Partial<IStackStyles> = {\r\n root: {\r\n width: 100,\r\n paddingRight: 16\r\n },\r\n};\r\n\r\nexport const buttonStyles: Partial<IButtonStyles> = {\r\n root: {\r\n minWidth: 0,\r\n padding: '0 4px',\r\n alignSelf: 'stretch',\r\n height: 'auto',\r\n marginTop: 5\r\n },\r\n};\r\n\r\nexport const ActionButtonStyle: Partial<IButtonStyles> = { \r\n root : {\r\n backgroundColor: 'black', \r\n width:'27px',\r\n height: '27px',\r\n borderRadius: '27px',\r\n display: 'inline-block'\r\n }\r\n};\r\n\r\nexport const chooseColumnStyles = {\r\n checkboxStyles: {\r\n root: {\r\n margin: 8,\r\n marginLeft: 12\r\n }\r\n },\r\n};\r\n\r\nlet scrollBarWidth = 0;\r\nlet currentZoomLevel = 0;\r\n\r\nconst calculcateScrollBarWidth = () => {\r\n [scrollBarWidth, currentZoomLevel] = getScrollBarWidth(scrollBarWidth, currentZoomLevel, window.devicePixelRatio);\r\n return scrollBarWidth;\r\n}\r\n\r\nexport const _Styles = mergeStyleSets({\r\n scrollablePaneCollapsed: {\r\n ...scrollablePaneStyles,\r\n left: navCollapsedWidth + calculcateScrollBarWidth() + 10\r\n } as IStyle,\r\n scrollablePaneExpand: {\r\n ...scrollablePaneStyles,\r\n left: 228 + calculcateScrollBarWidth() + 10\r\n } as IStyle,\r\n rootDiv: {\r\n paddingRight: '30px',\r\n paddingLeft: '10px',\r\n paddingTop: '30px',\r\n } as IStyle,\r\n dividerLine: {\r\n width: '100%',\r\n height: '1px',\r\n backgroundColor: 'black',\r\n marginBottom: '20px'\r\n } as IStyle,\r\n rowGap: {\r\n height: '30px'\r\n } as IStyle,\r\n contentStyle: {\r\n textAlign: 'center',\r\n height: '100vh',\r\n backgroundImage: `url(${Background})`,\r\n backgroundPosition: 'center',\r\n backgroundSize:'cover',\r\n backgroundRepeat:'noRepeat',\r\n backgroundClip: 'border-box'\r\n } as IStyle,\r\n homePageStyle: {\r\n marginLeft:'-12px',\r\n textAlign: 'center',\r\n height: '92vh',\r\n backgroundPosition: 'center',\r\n backgroundSize:'cover',\r\n backgroundRepeat:'noRepeat',\r\n backgroundClip: 'border-box',\r\n backgroundColor: \"#F5F5F5\"\r\n } as IStyle,\r\n bannerNotificationStyle: {\r\n position: 'relative',\r\n right: '0px',\r\n left: '0px',\r\n width: '100 %',\r\n backgroundColor: '#FFF19D',\r\n border: '1px solid #DDDDDD',\r\n overflow: 'auto',\r\n padding: '5px',\r\n fontFamily: 'Segoe UI!important',\r\n fontSize: '12px',\r\n margin: '0px',\r\n color: '#000000',\r\n marginLeft: '20px',\r\n marginRight: '20px'\r\n } as IStyle,\r\n bannerNotificationCenter: {\r\n width: '90%',\r\n overflow: 'hidden'\r\n } as IStyle,\r\n bannerNotificationMargin: {\r\n paddingLeft: '20px',\r\n paddingRight: '20px'\r\n } as IStyle,\r\n bannerNotificationHdrLabel: {\r\n fontSize: '11pt',\r\n color: 'red',\r\n fontWeight: 'bold',\r\n marginLeft: '20px',\r\n marginRight: '20px'\r\n } as IStyle,\r\n bannerNotificationLabel: {\r\n fontSize: '10pt',\r\n color: 'red',\r\n marginLeft: '20px',\r\n marginRight: '20px'\r\n } as IStyle,\r\n bannerHeaderFont: {\r\n fontSize: '12pt',\r\n } as IStyle,\r\n DRStyleExpand: {\r\n marginLeft: '15em'\r\n } as IStyle,\r\n DRStyleCollapse: {\r\n marginLeft: '4em'\r\n } as IStyle,\r\n DeleteRow: {\r\n color: 'red'\r\n } as IStyle,\r\n fileAttachment: {\r\n marginTop: '2.5em'\r\n } as IStyle,\r\n legalEntityStyles: {\r\n margin: '27px',\r\n } as IStyle,\r\n legalTextStyles: {\r\n marginTop: '27px'\r\n } as IStyle,\r\n legalSearchTextStyles: {\r\n margin: '0px',\r\n width: '800px'\r\n } as IStyle,\r\n legalLinkStyles: {\r\n margin: '29px',\r\n width: '300px'\r\n } as IStyle,\r\n dropdown: {\r\n borderstyle: 'none !important'\r\n } as IStyle,\r\n\r\n AddButtonStyle: {\r\n margin: '5px 8px 0px 8px',\r\n padding: '2px'\r\n } as IStyle,\r\n DeleteButtonStyle: {\r\n color: 'red',\r\n border: 'none',\r\n width: '20px'\r\n } as IStyle,\r\n AddDealIconStyles: {\r\n border: 'none',\r\n backgroundColor: 'White',\r\n marginLeft: '-20px',\r\n } as IStyle,\r\n LegalEntityLabel: {\r\n padding: '5px 0px 10px 5px'\r\n } as IStyle,\r\n DealTextStyles: {\r\n width: '250px',\r\n margin: '10px'\r\n } as IStyle,\r\n DealLinkStyles: {\r\n marginTop: '36px'\r\n } as IStyle,\r\n DealLabels: {\r\n margin: '5px'\r\n } as IStyle,\r\n DealGrid: {\r\n margin: '10px',\r\n height: 'auto'\r\n } as IStyle,\r\n ChannelGrid: {\r\n margin: '10px',\r\n height: 'auto'\r\n } as IStyle,\r\n ChannelLabels: {\r\n margin: '7px'\r\n } as IStyle,\r\n ChanneltopRow: {\r\n paddingBottom: '20px'\r\n } as IStyle,\r\n ChannelMSCheckbox: {\r\n paddingTop: '20px'\r\n } as IStyle,\r\n GridStyle: {\r\n maxHeight: '750px',\r\n margin: '10px'\r\n } as IStyle,\r\n DealDetailsGrid: {\r\n height: '50px',\r\n width: '100%',\r\n paddingTop: '30px'\r\n } as IStyle,\r\n legalEntityStyles_Upload: {\r\n margin: '0px 0px 10px 10px',\r\n } as IStyle,\r\n DealDetailsGridDiv: {\r\n position: 'absolute',\r\n width: '100%'\r\n } as IStyle,\r\n Dealvolumntext: {\r\n width: '40px'\r\n } as IStyle,\r\n PrimarySelection: {\r\n paddingLeft: '5px',\r\n fontSize: '12px',\r\n fontWeight: 500,\r\n } as IStyle,\r\n SearchBarContainer: {\r\n display: \"flex\",\r\n justifyContent: \"left\",\r\n } as IStyle,\r\n DialogueCheckBox: {\r\n width: '525px'\r\n } as IStyle,\r\n\r\n DashboardButtons: {\r\n display: 'flex'\r\n } as IStyle,\r\n\r\n DashboardBtnText: {\r\n lineHeight: '20px',\r\n textAlign: 'center',\r\n fontSize: '14px'\r\n } as IStyle,\r\n\r\n DashboardIcons: {\r\n fontSize: '16px',\r\n paddingRight: '8px',\r\n color: '#0078D4'\r\n } as IStyle,\r\n\r\n CommandBarButton: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n alignItems: 'center',\r\n padding: '6px 8px',\r\n } as IStyle,\r\n\r\n SpanStyle: {\r\n left: '10%',\r\n padding: '0px'\r\n } as IStyle,\r\n\r\n SplitterStyle: {\r\n height: '70vh'\r\n } as IStyle,\r\n\r\n PrimaryLegalEntityStyle: {\r\n marginBottom: '10px'\r\n } as IStyle,\r\n LegalEntitySearchGrid: {\r\n height: '35vh',\r\n overflow: 'auto',\r\n paddingTop: '5px'\r\n } as IStyle,\r\n DealDetailsSearchGrid: {\r\n height: '45vh',\r\n overflow: 'auto',\r\n } as IStyle,\r\n LegalEntityForm: {\r\n overflow: 'hidden'\r\n } as IStyle,\r\n FooterStyle: {\r\n left: 0,\r\n bottom: 0,\r\n width: '100%',\r\n backgroundColor: '#575352',\r\n color: 'white',\r\n height: '2.5em',\r\n position: 'fixed',\r\n textAlign: 'right',\r\n verticalAlign: 'middle'\r\n } as IStyle,\r\n AnchorSection: {\r\n color: 'white',\r\n textDecorationLine: 'unset',\r\n fontSize: '12px',\r\n padding: '5px',\r\n } as IStyle,\r\n LoginInnerPanel: {\r\n float: 'right',\r\n width: '620px',\r\n marginTop: '180px',\r\n marginRight: '80px',\r\n padding: '0',\r\n paddingLeft: '40px',\r\n paddingTop: '40px',\r\n paddingRight: '40px',\r\n paddingBottom: '30px',\r\n borderRadius: '10px',\r\n backgroundColor: 'rgba(255, 255, 255, 0.1)',\r\n } as IStyle,\r\n LoginOuterPanel: {\r\n overflow: 'auto',\r\n textAlign: 'left',\r\n fontSize: '12px',\r\n } as IStyle,\r\n LoginInnerSign: {\r\n backgroundColor: 'white',\r\n width: '500px',\r\n height: '195px',\r\n marginBottom: '18px',\r\n boxShadow: '1px 2px 2px #888888',\r\n marginRight: '10px',\r\n borderRadius: '6px',\r\n } as IStyle,\r\n LoginInnerSignh2: {\r\n fontWeight: 'bold',\r\n lineHeight: '1.0em',\r\n fontSize: '1.0em',\r\n color: '#004FA3',\r\n padding: '15px 15px 0px 15px',\r\n font: \"100 1.5em/1 'Segoe UI Light','Segoe UI',sans-serif\",\r\n } as IStyle,\r\n LoginInnerSignh4: {\r\n margin: '15px 0 15px 0px',\r\n fontWeight: 'normal',\r\n lineHeight: '1.222em',\r\n fontSize: '.85em',\r\n color: 'black',\r\n padding: '0px 15px 0px 15px',\r\n font: '1.0em/1.2 Segoe UI,Sans-Serif',\r\n } as IStyle,\r\n LoginInnerPanelh1: {\r\n margin: '0px',\r\n padding: '0',\r\n font: \"100 3.5em/1 'Segoe UI Light','Segoe UI',sans-serif\",\r\n color: 'white',\r\n letterSpacing: '-0.025em',\r\n } as IStyle,\r\n LoginInnerPanelh2: {\r\n margin: '15px 0 15px 0px',\r\n padding: '0',\r\n fontWeight: 'normal',\r\n lineHeight: '1.333em',\r\n fontSize: '1.2em',\r\n color: 'wheat',\r\n font: \"100 2.6em/1 'Segoe UI Light','Segoe UI',sans-serif\",\r\n } as IStyle,\r\n LoginTextStyle: {\r\n marginBottom: '20px',\r\n } as IStyle,\r\n SkipTextBoxStyle: {\r\n width: '615px',\r\n } as IStyle,\r\n ViewResellerTextStyle: {\r\n marginTop: '24px',\r\n marginBottom: '16px',\r\n } as IStyle,\r\n emailErrorStyle: {\r\n color: 'red'\r\n } as IStyle,\r\n customLabel: {\r\n padding: '2px',\r\n width: '100%',\r\n fontWeight: 'normal',\r\n } as IStyle,\r\n customLabelHeading: {\r\n padding: '2px',\r\n width: '100%',\r\n fontWeight: 'bold',\r\n } as IStyle,\r\n PaddingCustomer: {\r\n padding: '24px',\r\n } as IStyle,\r\n FontIconDisabled: {\r\n fontSize: '16px',\r\n paddingRight: '8px',\r\n color: '#d3d3d3',\r\n opacity: 0.9,\r\n cursor: \"not-allowed\"\r\n }as IStyle,\r\n});\r\n\r\nexport const DefaultPageStyles = {\r\n defaultDropdownStyles: {\r\n dropdown: { width: 300 },\r\n },\r\n customDropdownStyles: {\r\n dropdown: { width: 250 },\r\n },\r\n threeColumnWidthStyles: {\r\n root: { width: 900 }\r\n },\r\n oneColumnWidthStyles: {\r\n root: { width: 300 }\r\n },\r\n customWidthForStackLabels: {\r\n root: { width: 237 }\r\n },\r\n customWidthStyles: {\r\n root: { width: 200 }\r\n },\r\n customWidthStyleAuto: {\r\n root: { width: \"100%\" }\r\n },\r\n iconStyleColor: {\r\n root: { color: \"white\" , marginLeft:'2px'}\r\n },\r\n redColor: {\r\n root: { color: \"red\" },\r\n },\r\n blackColor: {\r\n root: { color: \"black\" },\r\n },\r\n grayColor: {\r\n root: { color: \"gray\" },\r\n },\r\n oneColumnMinWidthStyles: {\r\n root: { minWidth: 300 }\r\n },\r\n noColumnMinWidthStyles: {\r\n root: { minWidth: 0 }\r\n },\r\n customWidthForDealTeamLabels: {\r\n root: { minWidth: 270 }\r\n },\r\n customWidth190Styles: {\r\n root: { minWidth: 190 }\r\n },\r\n customWidth175Styles: {\r\n root: { minWidth: 175 }\r\n },\r\n customWidth125Styles: {\r\n root: { minWidth: 125 }\r\n },\r\n customWidth70Styles: {\r\n root: { minWidth: 70 }\r\n },\r\n customWidth40Styles: {\r\n root: { minWidth: 40 }\r\n },\r\n paddingTop3px: {\r\n paddingTop: \"3px\"\r\n },\r\n paddingTopLeft: {\r\n paddingTop: \"3px\",\r\n paddingLeft: \"8px\"\r\n },\r\n paddingLeftOnly: {\r\n paddingLeft: \"20px\"\r\n },\r\n iconBlueColor: {\r\n color: 'darkblue',\r\n cursor: \"pointer\"\r\n },\r\n attachmentGridHeight: {\r\n maxHeight: \"120px\"\r\n },\r\n paddingRight10: {\r\n paddingRight: \"10px\"\r\n },\r\n attachementFileNameWidth: {\r\n width: 170,\r\n moreWidth: 250\r\n },\r\n attachementFileSizeWidth: {\r\n width: 150,\r\n moreWidth: 170\r\n },\r\n marginRight: {\r\n marginRight: 5\r\n },\r\n paddingTop8: {\r\n paddingTop: 8\r\n },\r\n paddingBottom16: {\r\n paddingBottom: 16\r\n },\r\n padding8: {\r\n padding: 8\r\n },\r\n ProductSearchWidthStyles: {\r\n root: {\r\n width: 100,\r\n }\r\n },\r\n BGcustomWidthStyles: {\r\n root: { width: 150 }\r\n },\r\n UserPromptBackground:{\r\n root:{\r\n backgroundColor: 'rgb(255, 244, 206)'\r\n }\r\n },\r\n DisplayNone: {\r\n root: { display: 'none' }\r\n }\r\n}\r\n\r\nexport const DeleteButtonIconStyles = {\r\n root: {\r\n color: DefaultPageStyles.redColor.root.color,\r\n height: 20,\r\n lineHeight: 0\r\n }\r\n} as IIconStyles\r\n\r\nexport const DatePickerStyles = {\r\n icon: { lineHeight: 10 },\r\n root: DefaultPageStyles.oneColumnWidthStyles.root\r\n} as IDatePickerStyles;\r\n\r\nexport const BGDatePickerStyles = {\r\n icon: { lineHeight: 16 },\r\n root : DefaultPageStyles.BGcustomWidthStyles.root\r\n} as IDatePickerStyles;\r\n\r\nexport const defaultColumnProps: Partial<IStackProps> = {\r\n tokens: { childrenGap: 15 },\r\n styles: DefaultPageStyles.threeColumnWidthStyles,\r\n};\r\n\r\nexport const DealContactStyles = {\r\n DeleteButton: {\r\n height: '27px',\r\n },\r\n CoOwnerCheckBox: {\r\n paddingTop: \"5px\",\r\n width: \"50px\"\r\n },\r\n}\r\n\r\nexport const CommonStyles = {\r\n blackBorder: {\r\n border: \"1px solid #000\"\r\n },\r\n entityLookupWidth: {\r\n width: \"200px\"\r\n },\r\n DeleteIconMargin: {\r\n marginLeft: 232,\r\n }\r\n}\r\n\r\nexport const EntityLookupStyles = {\r\n textFieldStyles: {\r\n root: {\r\n maxWidth: \"300px\",\r\n display: 'block',\r\n marginBottom: '20px',\r\n height: '40px',\r\n margin: 0\r\n },\r\n },\r\n TextFieldStyle: mergeStyles({\r\n display: 'block',\r\n marginBottom: '20px',\r\n height: '40px'\r\n }),\r\n columnContentStyles: mergeStyles({\r\n color: 'black !important',\r\n padding: 0\r\n }),\r\n}\r\n\r\nexport const reactSelectDropDrownStyles = {\r\n control: (styles?: any) => ({\r\n ...styles,\r\n width: \"250px\",\r\n borderColor: \"black\",\r\n minHeight: \"25px\",\r\n height: \"29px\",\r\n borderRadius: \"0px\",\r\n }),\r\n option: (styles: any, { isFocused, isSelected }: any) => {\r\n return {\r\n ...styles,\r\n backgroundColor: isSelected ? \"blue\" : isFocused ? \"#ebebeb\" : undefined,\r\n };\r\n },\r\n valueContainer: (styles?: any) => ({\r\n ...styles,\r\n margin: \"0 0 29px 3px\",\r\n padding: \"0px\",\r\n fontSize: \"12px\",\r\n fontWeight: \"400\",\r\n width: 250,\r\n height: 29,\r\n overflow: \"hidden\",\r\n }),\r\n multiValue: (styles?: any) => ({\r\n ...styles,\r\n display: \"inline-flex\",\r\n }),\r\n indicatorsContainer: () => ({\r\n margin: \"0 0 24px 3px\",\r\n display: \"inline-flex\",\r\n }),\r\n};\r\n\r\n\r\nexport const AddCasToDashboardStyles: Partial<ITextFieldStyles> = {\r\n root: {\r\n label: {\r\n fontSize: \"14px\",\r\n fontWeight: \"600\",\r\n },\r\n },\r\n};\r\n\r\nexport const selectStyles = {\r\n control: (base: any) => ({\r\n ...base,\r\n fontFamily: \"Segoe UI\",\r\n fontSize: \"12px\",\r\n width: \"200px\",\r\n textAlign: \"left\",\r\n menuPortal: (provided: any) => ({ ...provided, zIndex: 9999 }),\r\n zIndex: 9999\r\n }),\r\n menu: (base: any) => ({\r\n ...base,\r\n fontFamily: \"Segoe UI\",\r\n fontSize: \"12px\",\r\n textAlign: \"left\",\r\n zIndex: 9999\r\n }),\r\n};\r\n\r\nexport const AddCaseOverlayStyles = {\r\n clearButton: {\r\n left: '425px'\r\n },\r\n searchButton: {\r\n left: '450px'\r\n },\r\n textSpacingStyle: {\r\n display: \"flex\"\r\n },\r\n texfieldfontStyle: {\r\n fontSize: \"14px\",\r\n width: '298px'\r\n\r\n },\r\n radioButtonStyle: {\r\n width: \"20px\",\r\n height: \"16px\"\r\n },\r\n proofOfResellerFont: {\r\n root: {\r\n fontSize: \"11px\",\r\n fontWeight: 'inherit !important'\r\n }\r\n } as ILabelStyles,\r\n labelStyle: {\r\n fontSize: \"14px\",\r\n fontWeight: 600,\r\n },\r\n screen2SearchButton: {\r\n left: '545px'\r\n },\r\n};\r\n\r\nexport const ChoiceGroupStyles = {\r\n ChoiceGroupHorizontal: {\r\n flexContainer: { display: \"flex\", alignItems: 'center', gap: '15px' },\r\n },\r\n}\r\n\r\nexport const ButtonStyles = {\r\n borderRadius: '3px',\r\n backgroundColor: 'rgba(0,120,212,1)',\r\n margin: '5px 8px 0px 8px',\r\n padding: '3px',\r\n width: '210px',\r\n fontSize: '.10em'\r\n}\r\n\r\n\r\nexport const HeaderStrip = {\r\n shadow: {\r\n '-webkit-box-shadow': '0 8px 6px -6px black',\r\n '-moz-box-shadow': '0 8px 6px -6px black',\r\n 'box-shadow': '0 8px 6px -6px black',\r\n }\r\n}\r\n\r\nexport const BreadCrumbStyles: IBreadcrumbStyles = {\r\n itemLink: {\r\n fontFamily: 'Segoe UI',\r\n fontStyle: 'normal',\r\n fontWeight: 400,\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: '#605E5C',\r\n marginTop: \"0px\"\r\n },\r\n root: undefined,\r\n list: undefined,\r\n listItem: undefined,\r\n chevron: undefined,\r\n overflow: undefined,\r\n overflowButton: undefined,\r\n item:{\r\n fontSize : '14px',\r\n lineHeight :'20px',\r\n }\r\n}\r\n\r\nexport const HelpAndSupportStyles = {\r\n paddingStyle: {\r\n padding: '30px',\r\n },\r\n contentStyle: {\r\n fontSize: \"24px\",\r\n marginRight: \"25px\",\r\n fontWeight: 400,\r\n },\r\n contentStyleBottomLine: {\r\n fontSize: \"24px\",\r\n marginRight: \"25px\",\r\n 'list-style-type': 'none',\r\n marginBottom:\"30px\"\r\n },\r\n contentStyleBottomLineBlueText: {\r\n fontSize: \"24px\",\r\n marginRight: \"25px\",\r\n 'list-style-type': 'none',\r\n marginBottom:\"30px\",\r\n color: \"#0000FF\"\r\n },\r\n contentStyleBlueText: {\r\n fontSize: \"24px\",\r\n marginRight: \"25px\",\r\n 'list-style-type': 'none',\r\n color: \"#0000FF\",\r\n display: \"flex\",\r\n flexDirection: \"row\" as \"row\"\r\n },\r\n HelpAndSupportHeaderStyles: {\r\n fontSize: \"40px\",\r\n marginRight: \"25px\",\r\n color: \"#274b47\",\r\n fontWeight: 600,\r\n marginBottom:\"60px\"\r\n },\r\n marginLeft: {\r\n marginLeft: \"30px\"\r\n }\r\n\r\n}\r\n\r\nexport const dropdownStyles: Partial<IDropdownStyles> = {\r\n dropdown: { width: 'auto' },\r\n dropdownOptionText: {\r\n fontFamily: 'Segoe UI',\r\n fontStyle: 'normal',\r\n fontWeight: '400',\r\n fontSize: '14px',\r\n lineHeight: '32px',\r\n border: 'none',\r\n color: '#201F1E'\r\n },\r\n caretDown: {\r\n fontSize: \"16px\",\r\n verticalAlign: \"middle\",\r\n },\r\n callout: {\r\n minWidth: \"300px\",\r\n },\r\n title: {\r\n width :\"auto\",\r\n border: 'none',\r\n fontFamily: 'Segoe UI',\r\n fontStyle: 'normal',\r\n fontWeight: '400',\r\n fontSize: '20px',\r\n lineHeight: '32px',\r\n color: '#201F1E'\r\n }\r\n};\r\n\r\nexport const PaperStyle = {\r\n root: {\r\n padding: 10,\r\n margin: 50\r\n }\r\n}\r\nexport const PaperStyle2 = {\r\n paddingTop: 1000,\r\n padding: 500,\r\n margin: 10,\r\n height:20,\r\n}\r\n\r\nexport const ActionButtonStyles: IButtonStyles = {\r\n root: {\r\n backgroundColor: 'inherit',\r\n },\r\n rootDisabled: {\r\n backgroundColor: 'inherit',\r\n },\r\n label: {\r\n fontSize : '14px',\r\n fontWeight: 400\r\n },\r\n labelDisabled: {\r\n fontWeight: 400\r\n },\r\n icon :{\r\n margin : '0 2px',\r\n }\r\n};\r\n\r\nexport const HoverCardStyles = mergeStyleSets({\r\n\r\n hoverText: {\r\n fontWeight: '400',\r\n display: 'inline-block',\r\n padding: 5,\r\n borderRadius: 2,\r\n },\r\n});\r\n\r\nexport const PartnerSearchStyles = mergeStyleSets({\r\n locationIconClass: {\r\n fontSize: 25,\r\n height: 18,\r\n width: 15,\r\n marginRight: 10,\r\n marginTop: 10,\r\n marginLeft: 10,\r\n color: \"blue\"\r\n },\r\n partnerRoleIconClass: {\r\n fontSize: 20,\r\n height: 18,\r\n width: 15,\r\n marginRight: 10,\r\n marginTop: 10,\r\n marginLeft: 10,\r\n color: \"blue\"\r\n },\r\n productGroupIconClass: {\r\n fontSize: 25,\r\n height: 18,\r\n width: 15,\r\n marginRight: 20,\r\n marginTop: 10,\r\n color: \"blue\"\r\n }\r\n})\r\n\r\nexport const MarginStyles = {\r\n marginTop_10: {\r\n marginTop: '10px'\r\n },\r\n marginTop_15: {\r\n marginTop: '15px'\r\n },\r\n marginTop_16: {\r\n marginTop: '16px'\r\n }\r\n}\r\n\r\nexport const expireDialog = {\r\n fontWeight: 400,\r\n fontSize: '14px'\r\n}\r\n\r\nexport const extendDialog = {\r\n fontWeight: 400\r\n}\r\n\r\nexport const textFieldStylesOneColumn = {\r\n root: { width: 300 },\r\n}\r\n\r\nexport const textFieldStylesTwoColumn = {\r\n root: { width: 250 },\r\n}\r\n\r\nexport const extendDialogButtonStyles = {\r\n root: {\r\n margin: 8\r\n }\r\n}\r\n\r\nexport const EnabledToolbarIcons = {\r\n color: '#0078D4'\r\n}\r\n\r\nexport const pageTitleStyles = {\r\n fontSize: \"20px\",\r\n verticalAlign: \"bottom\",\r\n dashboardTitle: {\r\n paddingTop: \"16px\",\r\n width:\"100%\",\r\n },\r\n};\r\n\r\nexport const separatorStyles = {\r\n root: {\r\n fontSize: \"0px\",\r\n padding: \"8px 0 4px 0\",\r\n width: \"100%\",\r\n }\r\n}\r\n\r\n\r\nexport const ModalDialogStyles = {\r\n main:\r\n {\r\n maxWidth: 750,\r\n }\r\n}\r\n\r\n\r\nexport const DashboardHeaderStyle = {\r\n fontSize : \"24px\",\r\n lineHeight : \"32px\",\r\n color : \"#201F1E\",\r\n fontWeight : \"700\",\r\n margin : \"0 4px 0 0\",\r\n \r\n};\r\n\r\nexport const showDiscountButtonStyles = {\r\n root: {\r\n marginTop : \"28px\",\r\n marginBottom:\"8px\"\r\n }\r\n}\r\n\r\nexport const BreadcrumbLinks = {\r\n \r\n}\r\n\r\nexport const RefreshButtonStyles : IButtonStyles = {\r\n root : {\r\n marginLeft : \"4px\"\r\n },\r\n icon :{\r\n transform: \"rotate(90deg)\"\r\n }\r\n};\r\n","import React from \"react\";\r\nimport { useState } from \"react\";\r\nimport { CoherenceNav } from '@cseo/controls';\r\nimport { IRouteDetail } from \"../../models/IRouteDetail\";\r\nimport { getRouteConfig, getUserRole, isNullOrEmpty } from \"./common/util\";\r\nimport { useHistory } from \"react-router\";\r\nimport { INavProps } from \"./props/INavProps\";\r\nimport { ApplicationConstants } from \"../../models/ApplicationConstants\";\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\n\r\nconst LeftMenu: React.FunctionComponent<INavProps> = (props: INavProps) => {\r\n let history = useHistory();\r\n const [routeConfig] = useState<IRouteDetail[]>(getRouteConfig());\r\n const [userRole] = useState<string>(getUserRole());\r\n let script = document.createElement(\"script\");\r\n script.src = process.env.REACT_APP_CHATBOT_URI || \"\"; \r\n document.head.appendChild(script);\r\n let isChatbotEnabled = sessionStorage.getItem(SessionStorageConsts.isChatbotEnabled);\r\n \r\n const processLeftMenu = () => {\r\n let menuItems: any = [];\r\n let routeConfigOptions = routeConfig;\r\n if(isChatbotEnabled !== UIControlsText.YesText){\r\n routeConfigOptions = routeConfig.filter(x => x.menuKey !== ApplicationConstants.Chatbot);\r\n }\r\n routeConfigOptions.filter(x => x.isMenuItem === true).map((configItem: IRouteDetail) => {\r\n if (!isNullOrEmpty(configItem.allowMenuItemUserRoles) && (configItem.allowMenuItemUserRoles.length == 0 || configItem.allowMenuItemUserRoles.some(r => userRole.includes(r)))) {\r\n let eachItem = {\r\n name: configItem.menuName,\r\n key: configItem.menuKey,\r\n href: configItem.menuHref,\r\n icon: configItem.menuIcon,\r\n isHidden: configItem.isMenuHidden,\r\n target: configItem.menuTarget,\r\n isLoadNewTab: configItem.isLoadNewTab,\r\n onClick: (ev?: React.MouseEvent<HTMLElement>, item?: any) => {\r\n if (item.isLoadNewTab) {\r\n redirectRoute(ev, item.href, item.target)\r\n }\r\n else if (item.key === ApplicationConstants.Chatbot) {\r\n loadFDAChat()\r\n }\r\n else {\r\n history.push(item.menuHref)\r\n }\r\n\r\n }\r\n }\r\n menuItems.push(eachItem)\r\n }\r\n });\r\n return menuItems;\r\n }\r\n const redirectRoute = (ev: any, routeLink: string, routeTarget: string): void => {\r\n switch (routeLink) {\r\n case \"process.env.REACT_APP_CLAIMS_REDIRECT_URI\":\r\n window.open(process.env.REACT_APP_CLAIMS_REDIRECT_URI, routeTarget)\r\n break\r\n };\r\n\r\n if (routeLink.indexOf(\"mailto\") !== -1) {\r\n window.open(routeLink, routeTarget)\r\n }\r\n\r\n ev?.preventDefault();\r\n }\r\n\r\n const loadFDAChat = () => {\r\n (window as any).OpenFDA(`hostappid=`+ process.env.REACT_APP_CHATBOT_KEY,undefined);\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n <CoherenceNav\r\n appName={''}\r\n groups={[{\r\n key: 'leftMenu',\r\n links: processLeftMenu()\r\n }]}\r\n onNavCollapsed={props.onNavCollapsed}\r\n />\r\n </React.Fragment>\r\n );\r\n}\r\n\r\nexport default LeftMenu;","import * as React from \"react\";\r\nimport { PrimaryButton } from \"@fluentui/react/lib/Button\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { isNullOrEmpty } from \"./common/util\";\r\nimport { IError } from \"../../models/IError\";\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"./common/util\";\r\nimport { MessageTypeText } from \"../../models/MessageTypeText\";\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nexport const ErrorPage: React.FunctionComponent<IError> = (props: IError) => {\r\n const location = useLocation();\r\n const historyProps: any = location.state;\r\n const backToLogin = (): void => {\r\n // Remove all saved data from sessionStorage\r\n sessionStorage.clear();\r\n window.open(process.env.REACT_APP_RSLR_LOGOUT_API_URI, \"_self\");\r\n }\r\n const showHideBackToLogin = () => {\r\n if (isNullOrEmpty(props.showBackToLogin)) {\r\n return true\r\n }\r\n else {\r\n return props.showBackToLogin\r\n }\r\n }\r\n const showSomethingWrongMessage = () => {\r\n if (isNullOrEmpty(props.showSomethingWrongMessage)) {\r\n return true\r\n }\r\n else {\r\n return props.showSomethingWrongMessage\r\n }\r\n }\r\n return (\r\n <div className=\"text-center mt-3\">\r\n {showSomethingWrongMessage() &&\r\n <h2>{getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"SomeThingWrong\", UIControlsText.SomeThingWrong)}</h2>\r\n }\r\n <br />\r\n <h4>{historyProps?.message}</h4>\r\n <h4>{props?.customMessage}</h4>\r\n <br />\r\n {showHideBackToLogin() &&\r\n <PrimaryButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BackToLogin\", UIControlsText.BackToLogin)}\r\n onClick={backToLogin} title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BackToLogin\", UIControlsText.BackToLogin)} />\r\n }\r\n </div>)\r\n}","import * as React from 'react';\r\nimport { useState } from 'react';\r\nimport { Route, Redirect, RouteProps, useLocation } from 'react-router';\r\nimport { getRouteConfig, getUserRole, getUserSession, isNullOrEmpty, getEntityDataFromSession, getRuleValidationMessage } from '../../components/shared/common/util';\r\nimport { ErrorPage } from '../../components/shared/error';\r\nimport { UIControlsText } from '../../content/UIControlsText';\r\nimport { IRouteDetail } from '../../models/IRouteDetail';\r\nimport { SessionStorageConsts } from '../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\n\r\nconst AuthRoute: React.FC<RouteProps> = ({ component: Component, ...rest }) => {\r\n let isLoggedIn = useState<string>(getUserSession());\r\n const [routeConfig] = useState<IRouteDetail[]>(getRouteConfig());\r\n const [userRole] = useState<string>(getUserRole());\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n let locationObj = useLocation();\r\n if (!Component) return null;\r\n return (\r\n <React.Fragment>\r\n <Route {...rest}\r\n render={() => {\r\n let thisRouteConfig = routeConfig.filter(x => x.menuHref?.trim().toLowerCase() == rest.path);\r\n if (isNullOrEmpty(isLoggedIn[0]) && locationObj && !isNullOrEmpty(locationObj.pathname)) {\r\n sessionStorage.setItem(SessionStorageConsts.userRequestedUrL, locationObj.pathname + locationObj.search);\r\n };\r\n return !isNullOrEmpty(isLoggedIn[0])\r\n ?\r\n thisRouteConfig[0]?.allowRoutingUserRoles != null\r\n && thisRouteConfig[0].allowRoutingUserRoles?.length != 0\r\n && thisRouteConfig[0].allowRoutingUserRoles.some(r => userRole.includes(r)) ?\r\n <Route {...rest} render={props => (<Component {...props} />)} />\r\n : <ErrorPage {...{ customMessage: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"UnauthorizedMessage\", UIControlsText.UnauthorizedMessage), showBackToLogin: false, showSomethingWrongMessage: false }} />\r\n : <Redirect to='/' />\r\n }} />\r\n </React.Fragment>\r\n )\r\n}\r\nexport default AuthRoute;","import * as React from \"react\";\r\nimport { PrimaryButton } from \"@fluentui/react/lib/Button\";\r\nimport { useEffect } from \"react\"\r\nimport { useHistory } from \"react-router\";\r\nimport { _Styles } from '../../content/styles/Page.styles';\r\nimport { AAdAuth } from \"./authentication\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { Stack } from \"office-ui-fabric-react\";\r\nimport { getRuleValidationMessage, getEntityDataFromSession} from '../../components/shared/common/util';\r\nimport { SessionStorageConsts } from '../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nexport const LoginPage: React.FunctionComponent = () => {\r\n var redirectURL:any=\"\";\r\n let history = useHistory();\r\n let rslrAuthUrl = process.env.REACT_APP_RSLR_LOGIN_API_URI || \"\";\r\n useEffect(() => {\r\n redirectURL = window.location.href; \r\n console.log(\"current url:\", redirectURL)\r\n if (redirectURL.includes(\"LoginWithAAD\")) { \r\n history.push(\"/AAdAuth\");\r\n }\r\n });\r\n\r\n function loginRSLR() { \r\n window.location.href = rslrAuthUrl;\r\n }\r\n\r\n return (\r\n <div> \r\n <div className={_Styles.contentStyle}> \r\n <div className={_Styles.LoginOuterPanel}>\r\n <div className={_Styles.LoginInnerPanel}>\r\n <h1 className={_Styles.LoginInnerPanelh1}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Welcome\", UIControlsText.Welcome)}</h1>\r\n <h2 className={_Styles.LoginInnerPanelh2}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MDPP\", UIControlsText.MDPP)}</h2>\r\n <div className={_Styles.LoginInnerSign}>\r\n <h2 className ={_Styles.LoginInnerSignh2}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SigninMessage\", UIControlsText.SigninMessage)}</h2>\r\n <h4 className ={_Styles.LoginInnerSignh4}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"WorkAccountDescription\", UIControlsText.WorkAccountDescription)}\r\n <Stack className={_Styles.LoginTextStyle}>\r\n <i>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"SigninExample\", UIControlsText.SigninExample)}</i> \r\n </Stack>\r\n <Stack className={_Styles.LoginTextStyle}>\r\n <span>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"SigninGuidance\", UIControlsText.SigninGuidance)}<a href=\"https://docs.microsoft.com/en-us/partner-center/azure-active-directory-tenants-and-partner-center\" target=\"_blank\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"ClickHere\", UIControlsText.ClickHere)}</a></span>\r\n </Stack> \r\n <PrimaryButton \r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Signin\", UIControlsText.Signin)}\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Signin\", UIControlsText.Signin)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Signin\", UIControlsText.Signin)}\r\n onClick={loginRSLR} />\r\n </h4> \r\n </div>\r\n </div>\r\n </div>\r\n </div> \r\n </div> \r\n )\r\n}","/* tslint:disable:no-bitwise */\r\n\r\n/**\r\n * Contains methods to help work with GUIDs.\r\n * @class\r\n */\r\nexport class Guid {\r\n\r\n /**\r\n * Generates new Guid.\r\n * @method\r\n * @return {string} A Guid.\r\n */\r\n public static newGuid(): string {\r\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, c => {\r\n let r = Math.random() * 16 | 0;\r\n let v = c === \"x\" ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n /**\r\n * Generates empty Guid.\r\n * @method\r\n * @return {string} A default guid.\r\n */\r\n public static emptyGuid(): string {\r\n return \"00000000-0000-0000-0000-000000000000\"\r\n }\r\n}","import * as React from \"react\";\r\nimport { useHistory } from \"react-router\";\r\nimport { useEffect, useState } from \"react\";\r\nimport fetchJsonp from \"fetch-jsonp\";\r\nimport { _Styles } from '../../content/styles/Page.styles';\r\nimport { Footer } from \"./footer\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { IUserDetail } from \"../../models/IUserDetail\";\r\nimport { IUserRoleDetail } from \"../../models/IUserRoleDetail\";\r\nimport { encryptString, isNullOrEmpty, refreshSessionStorageKey, getEntityDataFromSession, getRuleValidationMessage } from \"../../components/shared/common/util\";\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { Guid } from \"../../infrastructure/Guid\";\r\nimport { ApplicationConstants } from \"../../models/ApplicationConstants\";\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nexport const AAdAuth: React.FunctionComponent = (props) => {\r\n let history = useHistory();\r\n let loggedInUser: IUserDetail;\r\n let RSLR_UserToken_URI: string = process.env.REACT_APP_RSLR_ACCESS_TOKEN || \"\";\r\n\r\n useEffect(() => {\r\n FetchUserDetails();\r\n });\r\n\r\n // Fetching the user token via PC API\r\n function Fetch_UserToken() {\r\n return new Promise((resolve, reject) => {\r\n // Fetching the user token via PC API\r\n fetchJsonp(RSLR_UserToken_URI, { timeout: Number(process.env.REACT_APP_PCAPI_TIMEOUT_MS) })\r\n .then(function (response) {\r\n return response.json();\r\n })\r\n .then(function (authResult) {\r\n if (!isNullOrEmpty(authResult)) {\r\n sessionStorage.setItem(\"userToken\", authResult[\"AccessToken\"]);\r\n sessionStorage.setItem(\"userTokenExpiry\", authResult[\"ExpiresOn\"]); \r\n resolve(authResult);\r\n } else {\r\n history.push({\r\n pathname: '/errorPage',\r\n state: { message: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NotFoundApiError\", UIControlsText.NotFoundApiError) }\r\n });\r\n\r\n reject(new Error('Error fetching API Auth token.'));\r\n }\r\n })\r\n .catch(function (ex) {\r\n console.log('parsing failed', ex);\r\n history.push({\r\n pathname: '/errorPage',\r\n state: { message: ex.toString() }\r\n });\r\n\r\n reject(new Error('Error fetching API Auth token.'));\r\n });\r\n });\r\n }\r\n\r\n function FetchUserDetails() {\r\n var UserDetailsAPI = process.env.REACT_APP_RSLR_USERDETAILS_API_URI || \"\";\r\n var enableAuth = process.env.REACT_APP_AUTHORIZATION_ENABLED === \"true\" || false;\r\n fetchJsonp(UserDetailsAPI, { timeout: Number(process.env.REACT_APP_PCAPI_TIMEOUT_MS) })\r\n .then(function (response) {\r\n return response.json()\r\n }).then(async function (json) {\r\n loggedInUser =\r\n {\r\n email: JSON.parse(json)[\"Email\"],\r\n firstName: JSON.parse(json)[\"FirstName\"],\r\n lastName: JSON.parse(json)[\"LastName\"],\r\n name: JSON.parse(json)[\"Name\"],\r\n puid: JSON.parse(json)[\"PUID\"],\r\n userName: JSON.parse(json)[\"UserName\"],\r\n userRoleDetails: []\r\n };\r\n if (enableAuth) {\r\n await Fetch_UserToken();\r\n }\r\n })\r\n .then(function () {\r\n if (loggedInUser.email.toLowerCase().endsWith(ApplicationConstants.microsoftEmail)) {\r\n FetchUserRoles();\r\n }\r\n else {\r\n if (enableAuth) {\r\n FetchAccountsDetails();\r\n }\r\n else {\r\n FetchAccountsDetailsFromRslr();\r\n }\r\n }\r\n\r\n })\r\n .catch(function (ex) {\r\n console.log('parsing failed', ex)\r\n history.push({\r\n pathname: '/errorPage',\r\n state: { message: ex.toString() }\r\n })\r\n })\r\n }\r\n\r\n // Gets the Org Account Details via NextGen API for External Accounts.\r\n function FetchAccountsDetails() {\r\n nextGenService.getUserAccountDetails(loggedInUser.email).then(async (response) => {\r\n if (!isNullOrEmpty(response)) {\r\n // Get the Org and Loc Details from the response.\r\n if (response.data != null && response.data.length > 0) {\r\n var locationList = response.data;\r\n loggedInUser.organizationId = locationList[0]?.organizationId;\r\n loggedInUser.organizationName = locationList[0]?.organizationName;\r\n locationList.forEach((locationObj: IUserRoleDetail) => {\r\n if (!isNullOrEmpty(locationObj)) {\r\n loggedInUser.userRoleDetails?.push(locationObj);\r\n }\r\n });\r\n FetchUserRoles();\r\n }\r\n else {\r\n history.push({\r\n pathname: '/errorPage',\r\n state: { message: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"OrganizationInfoMissing\", UIControlsText.OrganizationInfoMissing) }\r\n })\r\n }\r\n }\r\n else {\r\n history.push({\r\n pathname: '/errorPage',\r\n state: { message: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"OrganizationInfoMissing\", UIControlsText.OrganizationInfoMissing) }\r\n })\r\n }\r\n }).catch(function (ex: { toString: () => any; }) {\r\n console.log('parsing failed', ex);\r\n history.push({\r\n pathname: '/errorPage',\r\n state: { message: ex.toString() }\r\n })\r\n });\r\n }\r\n\r\n function FetchAccountsDetailsFromRslr() {\r\n var AccountAPI = process.env.REACT_APP_RSLR_ACCOUNT_API_URI || \"\"\r\n fetchJsonp(AccountAPI, { timeout: Number(process.env.REACT_APP_PCAPI_TIMEOUT_MS) })\r\n .then(function (response) {\r\n return response.json()\r\n }).then(function (json) {\r\n let parsedJson = JSON.parse(json);\r\n let Organization = Object.keys(parsedJson);\r\n loggedInUser.organizationId = Organization != null && Organization.length ? Organization[0].split(\"-\")[0].trim() : \"\";\r\n if (!isNullOrEmpty(loggedInUser.organizationId)) {\r\n Object.keys(parsedJson[Organization[0]]).forEach(function (key) {\r\n if (!isNullOrEmpty(key)) {\r\n let eachOrg = {\r\n locationId: key.split(\"-\")[0].trim()\r\n } as IUserRoleDetail\r\n loggedInUser.userRoleDetails?.push(eachOrg);\r\n }\r\n });\r\n FetchUserRoles();\r\n }\r\n else {\r\n history.push({\r\n pathname: '/errorPage',\r\n state: { message: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"OrganizationInfoMissing\", UIControlsText.OrganizationInfoMissing) }\r\n })\r\n }\r\n }).catch(function (ex) {\r\n console.log('parsing failed', ex);\r\n history.push({\r\n pathname: '/errorPage',\r\n state: { message: ex.toString() }\r\n })\r\n })\r\n }\r\n\r\n function FetchUserRoles() {\r\n sessionStorage.setItem(SessionStorageConsts.userEmail, loggedInUser.email);\r\n refreshSessionStorageKey(SessionStorageConsts.correlationId, Guid.newGuid());\r\n\r\n // Next Gen API Call to get the user roles\r\n nextGenService.getUserDetails(loggedInUser).then(async (response) => {\r\n if (!isNullOrEmpty(response.data.userRoleDetails) && !isNullOrEmpty(loggedInUser.userRoleDetails)) {\r\n loggedInUser.userRoleDetails = response.data.userRoleDetails;\r\n sessionStorage.setItem(SessionStorageConsts.loggedInUserInfo, encryptString(JSON.stringify(loggedInUser)));\r\n let userRequestedUrL = sessionStorage.getItem(SessionStorageConsts.userRequestedUrL);\r\n if (!isNullOrEmpty(userRequestedUrL)) {\r\n sessionStorage.removeItem(SessionStorageConsts.userRequestedUrL);\r\n history.push(userRequestedUrL || \"/homePage\");\r\n window.location.reload();\r\n }\r\n else {\r\n history.push(\"/homePage\");\r\n window.location.reload();\r\n }\r\n }\r\n else {\r\n history.push(\"/homePage\");\r\n window.location.reload();\r\n };\r\n }).catch((error) => {\r\n console.log('parsing failed');\r\n history.push({\r\n pathname: '/errorPage',\r\n state: { message: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NotFoundApiError\", UIControlsText.NotFoundApiError) }\r\n })\r\n });\r\n }\r\n\r\n return (\r\n <div>\r\n <div className={_Styles.contentStyle}>\r\n <h3>Fetching account/user details is in-progress</h3>\r\n </div>\r\n </div>\r\n )\r\n}","export default __webpack_public_path__ + \"static/media/Microsoft_Full_Color_reverse_logo.6456fb8f.png\";","import * as React from \"react\";\r\nimport { _Styles } from '../../content/styles/Page.styles';\r\nimport Logo from '../../content/images/Microsoft_Full_Color_reverse_logo.png';\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { getRuleValidationMessage, getEntityDataFromSession} from '../../components/shared/common/util';\r\nimport { SessionStorageConsts } from '../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\n\r\nexport const Footer: React.FunctionComponent = () => {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [buildNumberText, setBuildNumberText] = React.useState<string>(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BuildNumberText\", UIControlsText.BuildNumberText));\r\n const [buildNumber] = React.useState<string>(process.env.REACT_APP_BUILD_NUMBER || \"\");\r\n\r\n return (\r\n <div className={`${_Styles.FooterStyle} page-footer`}>\r\n <img alt=\"Microsoft Logo\" src={Logo} style={{ width: \"103px\", height: \"2.5em\" }} />\r\n <a target=\"_blank\" href=\"mailto:sppsup@microsoft.com\" className={_Styles.AnchorSection}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactUs\", UIControlsText.ContactUs)}</a>\r\n <a target=\"_blank\" href=\"http://go.microsoft.com/fwlink/?LinkId=521839\" className={_Styles.AnchorSection}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PrivacyAndCookies\", UIControlsText.PrivacyAndCookies)}</a>\r\n <a target=\"_blank\" href=\"https://privacy.microsoft.com/en-US/data-privacy-notice\" className={_Styles.AnchorSection}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DataPrivacyLink\", UIControlsText.DataPrivacyLink)}</a>\r\n <a target=\"_blank\" href=\"http://www.microsoft.com/en-us/legal/intellectualproperty/copyright/default.aspx\" className={_Styles.AnchorSection}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"TermsOfUse\", UIControlsText.TermsOfUse)}</a>\r\n <a target=\"_blank\" href=\"https://www.microsoft.com/trademarks\" className={_Styles.AnchorSection}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"TradeMark\", UIControlsText.TradeMark)}</a>\r\n <a href=\"#\"\r\n className={_Styles.AnchorSection}\r\n onClick={(e) => {\r\n setBuildNumberText(buildNumberText === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BuildNumberText\", UIControlsText.BuildNumberText) ? buildNumber : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BuildNumberText\", UIControlsText.BuildNumberText));\r\n }}>{buildNumberText}</a>\r\n <a className={_Styles.AnchorSection}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CopyRightMicrosoft\", UIControlsText.CopyRightMicrosoft)}</a>\r\n </div>\r\n )\r\n}","export default __webpack_public_path__ + \"static/media/HomePage.c697c81b.png\";","import * as React from \"react\";\r\nimport { _Styles } from '../../content/styles/Page.styles';\r\nimport BackGround from '../../content/images/HomePage.png';\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { SessionStorageConsts } from '../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { getEntityDataFromSession, getRuleValidationMessage } from '../../components/shared/common/util';\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\nexport const HomePage: React.FunctionComponent = () => {\r\n const showNotificationBanner: boolean = process.env.REACT_APP_MDPPBANNER_SHOW === 'true';\r\n return (\r\n <div>\r\n <div className={_Styles.homePageStyle}>\r\n {\r\n showNotificationBanner &&\r\n <div className={[_Styles.bannerNotificationStyle, _Styles.bannerNotificationCenter, _Styles.bannerNotificationMargin].join(\" \")}>\r\n <div className={_Styles.bannerNotificationMargin}>\r\n <span className={[_Styles.bannerNotificationCenter, _Styles.bannerHeaderFont].join(\" \")}><b>Important Message</b></span>\r\n <div className={_Styles.bannerNotificationHdrLabel}>Transition Notification Banner on MDPP Portal Homepage:</div>\r\n <div className={_Styles.bannerNotificationLabel}>{UIControlsText.MDPPTransitionBannerNotificationText}</div><br />\r\n </div>\r\n </div>\r\n }\r\n <img src={BackGround} style={{ height: \"100%\", width: \"100%\" }} alt={UIControlsText.HomePageImage} />\r\n </div>\r\n </div>\r\n )\r\n}","import React from \"react\";\r\n\r\nclass ErrorBoundary extends React.Component<{}, { error: any, errorInfo: any }> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { error: null, errorInfo: null };\r\n }\r\n\r\n componentDidCatch(error: any, errorInfo: any) {\r\n // Catch errors in any components below and re-render with error message\r\n this.setState({\r\n error: error,\r\n errorInfo: errorInfo\r\n })\r\n // You can also log error messages to an error reporting service here\r\n }\r\n\r\n render() {\r\n if (this.state.errorInfo) {\r\n // Error path\r\n return (\r\n <div>\r\n <h2>Something went wrong.</h2>\r\n <details style={{ whiteSpace: 'pre-wrap' }}>\r\n {this.state.error && this.state.error.toString()}\r\n <br />\r\n {this.state.errorInfo.componentStack}\r\n </details>\r\n </div>\r\n );\r\n }\r\n // Normally, just render children\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default ErrorBoundary;","/**\r\n * Actions for Cases.\r\n * @constant\r\n */\r\nexport const CaseActionTypes = {\r\n dataLoadingStart: \"dataLoadingStart\",\r\n dataLoadingEnd: \"dataLoadingEnd\",\r\n dealNameInputChanged: \"dealNameInputChanged\",\r\n dealOverviewInputChanged: \"dealOverviewInputChanged\",\r\n dealAdditionalInfoInputChanged: \"dealAdditionalInfoInputChanged\",\r\n productGroupChanged: \"productGroupChanged\",\r\n dealGeoCoverageChanged: \"dealGeoCoverageChanged\",\r\n dealCountryChanged: \"dealCountryChanged\",\r\n dealAffiliationTypeChanged: \"dealAffiliationTypeChanged\",\r\n dealAffiliationTypeOtherChanged: \"dealAffiliationTypeOtherChanged\",\r\n casePivotChanged: \"casePivotChanged\",\r\n channelOverviewInputChanged: \"channelOverviewInputChanged\",\r\n channelDistributorItemsChanged: \"channelDistributorItemsChanged\",\r\n channelJustificationRequiredChanged: \"channelJustificationRequiredChanged\",\r\n channelJustificationInputChanged: \"channelJustificationInputChanged\",\r\n eueftaCountrySelected: \"eueftaCountrySelected\",\r\n dealVerticalChanged: \"dealVerticalChanged\",\r\n dealDetailsExpirationDateJustificationChanged: \"dealDetailsExpirationDateJustificationChanged\",\r\n dealDetailsRequestedExpirationDateChanged: \"dealDetailsRequestedExpirationDateChanged\",\r\n dealDetailsExceptionRequestChanged: \"dealDetailsExceptionRequestChanged\",\r\n dealDetailsContactChanged: \"dealDetailsContactChanged\",\r\n attachmentChanged: \"dealAttachmentChanged\",\r\n channelStructureChanged: \"channelStructureChanged\",\r\n channelAccountChanged: \"channelAccountChanged\",\r\n draftCaseLoaded: \"draftCaseLoaded\",\r\n skipChannelReasonChanged: \"skipChannelReasonChanged\",\r\n dealTypeUpdated: \"dealTypeUpdated\",\r\n saveDraft: \"saveDraft\",\r\n submitCase: \"submitCase\",\r\n submitCaseAsync: \"submitCaseAsync\",\r\n channelAttachmentChanged: \"channelAttachmentChanged\",\r\n selectedLegalEntityChanged: \"selectedLegalEntityChanged\",\r\n selectedProductFamilyChanged: \"selectedProductFamilyChanged\",\r\n missingFieldTab: \"missingFieldTab\",\r\n validationErrors: \"validationErrors\",\r\n errorOccured: \"errorOccured\",\r\n pageModeChanged: \"pageModeChanged\",\r\n totalunitsTransactedChanged: \"totalunitsTransactedChanged\",\r\n debugModeOn: \"debugModeOn\",\r\n ownerInfoChanged: \"ownerInfoChanged\",\r\n channelContactChanged: \"channelContactChanged\",\r\n channelAccountContactChanged: \"channelAccountContactChanged\",\r\n closureDecisionChanged: \"closureDecisionChanged\",\r\n dealStatusCodeChanged: \"dealStatusCodeChanged\",\r\n dealDetailsEmailCCNotificationRecipientsChanged: \"dealDetailsEmailCCNotificationRecipientsChanged\",\r\n dealFieldValueChanged: \"dealFieldValueChanged\",\r\n dealCustomerValueChanged: \"dealCustomerValueChanged\",\r\n dealCustomerDomainChanged: \"dealCustomerDomainChanged\",\r\n rfpRfqPublicTenderValueChanged: \"rfpRfqPublicTenderValueChanged\",\r\n rfpRfqPublicTenderJustificationValueChanged: \"rfpRfqPublicTenderJustificationValueChanged\",\r\n dealAddressValueChanged: \"dealAddressValueChanged\",\r\n pricingProgramSelectionChanged: \"pricingProgramSelectionChanged\",\r\n SelectedDealChanged: \"SelectedDealChanged\",\r\n partnerDetailsChanged: \"partnerDetailsChanged\",\r\n pivotTabData: \"pivotTabData\",\r\n isFinalOrAdditionalResellerSelected: \"isFinalOrAdditionalResellerSelected\",\r\n pricingProgramDealType: \"pricingProgramDealType\"\r\n}","/**\r\n * Enum for Channel Sub-Type.\r\n * @readonly\r\n * @enum {Enum}\r\n */\r\nexport enum ChannelSubType {\r\n /**\r\n * Requester.\r\n */\r\n Requester = 1,\r\n /**\r\n * Co-Owner.\r\n */\r\n CoOwner = 2,\r\n /**\r\n * Direct Sales and Support.\r\n */\r\n DSS = 3,\r\n /**\r\n * Digital Store.\r\n */\r\n DigitalStore = 4,\r\n}","import { Reducer } from \"react\";\r\nimport { IPageState } from \"../../common/state/IPageState\";\r\nimport { CaseActionTypes } from '../../common/reducer/CaseActionTypes';\r\nimport { IInternalPricingProgramActions } from \"./IInternalPricingProgramActions\";\r\nimport { isNullOrEmpty } from \"../../../../components/shared/common/util\";\r\nimport { IDealState } from \"../../common/state/IDealState\";\r\n\r\n/**\r\n * InternalPricingReducer - CP Strategic and OTLE Reducer.\r\n * @function\r\n */\r\nconst InternalPricingReducer: Reducer<IPageState, IInternalPricingProgramActions> =\r\n (state: IPageState, action: IInternalPricingProgramActions) => {\r\n switch (action.type) {\r\n case CaseActionTypes.dataLoadingStart:\r\n return { ...state, dataLoading: true };\r\n\r\n case CaseActionTypes.dataLoadingEnd:\r\n return { ...state, dataLoading: false };\r\n\r\n case CaseActionTypes.debugModeOn:\r\n return { ...state, debugMode: true };\r\n\r\n case CaseActionTypes.casePivotChanged:\r\n return { ...state, selectedPivot: action.selectedPivot };\r\n\r\n case CaseActionTypes.dealGeoCoverageChanged:\r\n return { ...state, isMultiNational: action.boolValue };\r\n\r\n case CaseActionTypes.productGroupChanged:\r\n return { ...state, productGroup: action.productGroupValue };\r\n\r\n case CaseActionTypes.dealCountryChanged:\r\n {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.countries?.key);\r\n newState.opportunityDeals[index].geoCountries = action.countries?.value;\r\n return newState;\r\n }\r\n\r\n case CaseActionTypes.dealAffiliationTypeChanged:\r\n return updateDealDropDownFieldState(state, action, \"affiliationType\");\r\n\r\n case CaseActionTypes.dealAffiliationTypeOtherChanged:\r\n return updateDealTextFieldState(state, action, \"affiliationTypeOthers\");\r\n\r\n case CaseActionTypes.channelOverviewInputChanged:\r\n return updateDealTextFieldState(state, action, \"channelOverview\");\r\n\r\n case CaseActionTypes.channelJustificationRequiredChanged:\r\n {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.dealBoolValue?.key);\r\n newState.opportunityDeals[index].isChannelJustificationRequired = action.dealBoolValue?.value;\r\n return newState;\r\n }\r\n\r\n case CaseActionTypes.channelJustificationInputChanged:\r\n return updateDealTextFieldState(state, action, \"channelJustification\");\r\n\r\n case CaseActionTypes.channelStructureChanged:\r\n return updateDealDropDownFieldState(state, action, \"channelStructure\");\r\n\r\n case CaseActionTypes.dealNameInputChanged:\r\n return updateDealTextFieldState(state, action, \"dealName\");\r\n\r\n case CaseActionTypes.dealOverviewInputChanged:\r\n return updateDealTextFieldState(state, action, \"dealOverview\");\r\n\r\n case CaseActionTypes.dealAdditionalInfoInputChanged:\r\n return updateDealTextFieldState(state, action, \"additionalComments\");\r\n\r\n case CaseActionTypes.dealVerticalChanged:\r\n return updateDealDropDownFieldState(state, action, \"dealVertical\");\r\n\r\n case CaseActionTypes.dealTypeUpdated:\r\n {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.dealTypeValue?.key);\r\n if (newState?.opportunityDeals[index]) {\r\n newState.opportunityDeals[index].dealType = action.dealTypeValue?.value;\r\n }\r\n return newState;\r\n }\r\n\r\n case CaseActionTypes.dealDetailsRequestedExpirationDateChanged:\r\n {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.inputDate?.key);\r\n newState.opportunityDeals[index].expirationDate = action.inputDate?.value;\r\n return newState;\r\n }\r\n\r\n case CaseActionTypes.dealDetailsExpirationDateJustificationChanged:\r\n return updateDealTextFieldState(state, action, \"expirationDateJustification\");\r\n\r\n case CaseActionTypes.dealDetailsExceptionRequestChanged:\r\n return updateDealTextFieldState(state, action, \"exceptionRequest\");\r\n\r\n case CaseActionTypes.attachmentChanged:\r\n return { ...state, attachments: action.attachments };\r\n\r\n case CaseActionTypes.dealDetailsContactChanged:\r\n {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.dealContacts?.key);\r\n newState.opportunityDeals[index].dealContacts = action.dealContacts?.value;\r\n return newState;\r\n }\r\n\r\n case CaseActionTypes.channelAccountChanged:\r\n return { ...state, opportunityAccounts: action.opportunityAccounts };\r\n\r\n case CaseActionTypes.selectedLegalEntityChanged:\r\n {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.dealCustomers?.key);\r\n if (index >= 0)\r\n newState.opportunityDeals[index].dealCustomers = action.dealCustomers?.value;\r\n return newState\r\n }\r\n\r\n case CaseActionTypes.selectedProductFamilyChanged: {\r\n {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.products?.key);\r\n if (index >= 0)\r\n newState.opportunityDeals[index].products = action.products?.value;\r\n return newState;\r\n }\r\n }\r\n case CaseActionTypes.pageModeChanged:\r\n return { ...state, pageMode: action.pageMode };\r\n\r\n case CaseActionTypes.draftCaseLoaded:\r\n {\r\n let newState = { ...state };\r\n newState = Object.assign(newState, action.case as IPageState);;\r\n return newState;\r\n }\r\n\r\n case CaseActionTypes.skipChannelReasonChanged:\r\n return updateDealTextFieldState(state, action, \"skipChannelReason\");\r\n\r\n case CaseActionTypes.saveDraft:\r\n return { ...state, saveDraft: action.boolValue };\r\n\r\n case CaseActionTypes.submitCase:\r\n return { ...state, submitCase: action.boolValue };\r\n\r\n case CaseActionTypes.submitCaseAsync:\r\n return { ...state, submitCaseAsync: action.boolValue };\r\n\r\n case CaseActionTypes.totalunitsTransactedChanged:\r\n {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.dealVolume?.key);\r\n if (index >= 0)\r\n newState.opportunityDeals[index].dealVolume = action.dealVolume?.value;\r\n return newState;\r\n }\r\n case CaseActionTypes.missingFieldTab: {\r\n return { ...state, missingTabs: action.inputArray }\r\n }\r\n case CaseActionTypes.validationErrors: {\r\n return { ...state, errors: action.inputArray }\r\n }\r\n case CaseActionTypes.errorOccured: {\r\n return { ...state, errorCode: action.inputNumber }\r\n }\r\n case CaseActionTypes.ownerInfoChanged:\r\n return { ...state, isNotCaseOwner: action.isNotCaseOwner };\r\n\r\n case CaseActionTypes.channelContactChanged:\r\n return { ...state, opportunityChannelContacts: action.channelContacts };\r\n\r\n case CaseActionTypes.dealCustomerValueChanged:\r\n return updateDealCustomerState(state, action);\r\n \r\n case CaseActionTypes.channelAccountContactChanged:\r\n return {\r\n ...state,\r\n opportunityChannelContacts: action.opportunityChannel?.channelContacts,\r\n opportunityAccounts: action.opportunityChannel?.opportunityAccounts\r\n };\r\n\r\n case CaseActionTypes.closureDecisionChanged:\r\n {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.closureDecision?.key);\r\n if (index >= 0) {\r\n newState.opportunityDeals[index].closureDecision = action.closureDecision?.value;\r\n }\r\n return newState\r\n }\r\n }\r\n\r\n return state;\r\n }\r\n\r\n/**\r\n * update Deal Text Field State.\r\n * @param {IPageState} state state object\r\n * @param {IInternalPricingProgramActions} action action object\r\n * @param {string} fieldName field to be changed\r\n */\r\nconst updateDealTextFieldState = (state: IPageState, action: IInternalPricingProgramActions, fieldName: string): IPageState => {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.dealInputValue?.key);\r\n (newState.opportunityDeals[index] as any)[fieldName] = action.dealInputValue?.value\r\n return newState;\r\n}\r\n\r\n/**\r\n * update Deal Customer State.\r\n * @param {IPageState} state state object\r\n * @param {IInternalPricingProgramActions} action action object\r\n */\r\nconst updateDealCustomerState = (state: IPageState, action: IInternalPricingProgramActions): IPageState => {\r\n let newState = { ...state };\r\n if (action && !isNullOrEmpty(action.dealInputControlValue)) {\r\n let dealCustomer: any = action.dealInputControlValue;\r\n var opportunityDeals = newState.opportunityDeals.filter(t => isNullOrEmpty(action?.dealInputControlValue?.id) || t.id === action?.dealInputControlValue?.id);\r\n if (opportunityDeals) {\r\n opportunityDeals.forEach((deal?: IDealState) => {\r\n deal?.dealCustomers?.forEach(x => (x as any)[dealCustomer.key] = dealCustomer.value)\r\n });\r\n }\r\n }\r\n\r\n return newState;\r\n}\r\n\r\n/**\r\n * update Deal Dropdown Field State.\r\n * @param {IPageState} state state object\r\n * @param {IInternalPricingProgramActions} action action object\r\n * @param {string} fieldName field to be changed\r\n */\r\nconst updateDealDropDownFieldState = (state: IPageState, action: IInternalPricingProgramActions, fieldName: string): IPageState => {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.dealDropDownValue?.key);\r\n (newState.opportunityDeals[index] as any)[fieldName] = action.dealDropDownValue?.value;\r\n return newState;\r\n}\r\n\r\nexport default InternalPricingReducer;","/**\r\n * Provides functionality related to Array process\r\n * @class \r\n */\r\nexport class ArrayExtensions {\r\n /**\r\n * Merge the two arrays.\r\n * @method\r\n * @param inputArray1 {[]} The input array 1.\r\n * @param inputArray2 {[]} The input array 2.\r\n * @returns {[]} Merged Array.\r\n */\r\n public static mergeArrays<T>(inputArray1: T[], inputArray2: T[]): T[] {\r\n let jointArray: T[] = []\r\n let arrays = [inputArray1, inputArray2];\r\n\r\n arrays.forEach(array => {\r\n jointArray = [...jointArray, ...array]\r\n })\r\n const uniqueArray = jointArray.filter((item, index) => jointArray.indexOf(item) === index)\r\n\r\n return uniqueArray as T[];\r\n }\r\n\r\n /**\r\n * remove the undefined value from arrays.\r\n * @method\r\n * @param inputArray {[]} The input array.\r\n * @returns {[]} New Array.\r\n */\r\n public static removeundefinedfromArray<T>(inputArray: T[]): T[] {\r\n let newArray: T[] = []\r\n\r\n newArray = inputArray.filter(n=>n!==undefined);\r\n\r\n return newArray; \r\n }\r\n}","import { PartnerType } from \"./PartnerType\";\r\n\r\n/**\r\n * Label for Partner Type.\r\n * @readonly\r\n * @type {Map<number, string>}\r\n */\r\n export const PartnerTypeLabel: Map<number, string> = new Map<number, string>([\r\n [PartnerType.ADD, 'ADD'],\r\n [PartnerType.ADR, 'ADR'],\r\n [PartnerType.DMP, 'DMP'],\r\n ]);\r\n\r\n /**\r\n * Label for Partner Type Text.\r\n * @readonly\r\n * @type {Map<number, string>}\r\n */\r\n export const PartnerTypeName: Map<number, string> = new Map<number, string>([\r\n [PartnerType.ADD, 'Authorized Device Distributor'],\r\n [PartnerType.ADR, 'Authorized Device Reseller'],\r\n [PartnerType.DMP, 'Distributor Managed Partner'],\r\n]);","import {\r\n DefaultPalette,\r\n IStackItemStyles,\r\n IStackStyles,\r\n IStackTokens,\r\n} from \"@fluentui/react\";\r\nimport { getDistinctUserRole, getLoggedinUserRoleDetails, getStatusNameByCode, isMsStoreUser, isValidEmail, sortArrayData, getEntityDataFromSession, getRuleValidationMessage, getUserRole, getDealVolumes, isNullOrEmpty, IsInternalPricingProgram, IsExternalPricingProgram, getDealClosureDecisionNameByCode } from \"../../../components/shared/common/util\";\r\nimport { ArrayExtensions } from \"../../../infrastructure/ArrayExtensions\";\r\nimport { JavaScriptExtensions } from \"../../../infrastructure/JavaScriptExtensions\";\r\nimport { ICountry } from \"../../../models/ICountry\";\r\nimport { ApplicationConstants } from \"../../../models/ApplicationConstants\";\r\nimport { SessionStorageConsts } from \"../../../models/SessionStorageConsts\";\r\nimport { IPivotTab } from \"../../../models/IPivotTab\";\r\nimport { IDealQuantityThresholds } from \"../../../models/IDealQuantityThresholds\";\r\nimport { IDealState } from \"../common/state/IDealState\";\r\nimport { ErrorMessages } from \"../../../content/ErrorMessages\";\r\nimport { IPartnerDetails } from \"../../../models/IPartnerDetails\";\r\nimport { IPageState } from \"../common/state/IPageState\";\r\nimport { ChannelSubType } from \"../../../models/ChannelSubType\";\r\nimport { UserRole } from \"../../../models/UserRole\";\r\nimport { PartnerTypeLabel } from \"../../../models/PartnerTypeLabel\";\r\nimport { IProductType } from \"../../../models/IProductType\";\r\nimport { PageMode } from \"../../../models/PageMode\";\r\nimport { OpportunityDealStatusCodes } from \"../../../models/OpportunityDealStatusCodes\";\r\nimport _ from \"lodash\";\r\nimport { IOpportunityAccount } from \"../../../models/IOpportunityAccount\";\r\nimport { OpportunityDealStatusNames } from \"../../../models/OpportunityDealStatusNames\";\r\nimport { UIControlsText } from \"../../../content/UIControlsText\";\r\nimport { UserSubRole } from \"../../../models/UserSubRole\";\r\nimport { PartnerType } from \"../../../models/PartnerType\";\r\nimport { IOpportunityDealDetails } from \"../../../models/IOpportunityDealDetails\";\r\nimport { IChannelFunctionalityDisplayState } from \"../../shared/ComponentTypes/IChannelFunctionalityDisplayState\";\r\nimport { IAccount } from \"../../../models/IAccount\";\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { DealType } from \"../../../models/DealType\";\r\nimport { OpportunityDealClosureDecisionName } from \"../../../models/OpportunityDealClosureDecisionName\";\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nexport const onPivotChange = (item: any): void => {\r\n console.log(\"Tab changed...\");\r\n};\r\n\r\nexport const stackContainerStyles: IStackStyles = {\r\n root: {\r\n background: DefaultPalette.whiteTranslucent40,\r\n color: DefaultPalette.white,\r\n paddingBottom: 5,\r\n paddingRight: 5\r\n },\r\n};\r\n\r\nexport const stackContainerStylesShift: IStackStyles = {\r\n root: {\r\n background: DefaultPalette.whiteTranslucent40,\r\n color: DefaultPalette.white,\r\n paddingBottom: 5,\r\n paddingLeft: 14,\r\n },\r\n};\r\n\r\nexport const stackItemStyles: IStackItemStyles = {\r\n root: {\r\n background: DefaultPalette.whiteTranslucent40,\r\n color: DefaultPalette.white,\r\n padding: 5\r\n },\r\n};\r\n\r\nexport const stackItemCustomerStyles: IStackItemStyles = {\r\n root: {\r\n background: DefaultPalette.whiteTranslucent40,\r\n color: DefaultPalette.white,\r\n padding: 2,\r\n },\r\n};\r\nexport const viewStackItemCustomerStyles: IStackItemStyles = {\r\n root: {\r\n background: DefaultPalette.whiteTranslucent40,\r\n color: DefaultPalette.white,\r\n padding: 5,\r\n },\r\n};\r\n\r\n// Tokens definition\r\nexport const smallAlignmentTokens: IStackTokens = {\r\n childrenGap: 2,\r\n padding: 2,\r\n};\r\n\r\nexport const itemAlignmentsStackTokens: IStackTokens = {\r\n childrenGap: 5,\r\n padding: 10,\r\n};\r\n\r\nexport const itemAlignmentsStackTokens10: IStackTokens = {\r\n childrenGap: 15,\r\n padding: 20,\r\n};\r\n\r\nexport const stackStyles: IStackStyles = {\r\n root: {\r\n background: DefaultPalette.white,\r\n },\r\n};\r\n\r\n//Get Text Field required error message\r\nexport const getTextFieldRequiredErrorMessage = (errorMessage: string) => (value: string): string => {\r\n return JavaScriptExtensions.isEmptyOrNullOrUndefined(value) ? errorMessage : '';\r\n}\r\n\r\n// Get regional countries, if selected country is based of EU/EFTA or MEA region\r\nexport function getRegionalCountries(allCountries: ICountry[], selectedGeoCountries: ICountry[]) {\r\n let countries = allCountries?.filter(x => selectedGeoCountries && selectedGeoCountries?.filter(y => y.countryId == x.countryId).length > 0);\r\n\r\n if (countries && countries.length > 0) {\r\n let countriesList: ICountry[] = [];\r\n // Handle EU/EFTA region\r\n let isEueftaCountrySelected = countries.some(x => x.isEUEFTA);\r\n if (isEueftaCountrySelected) {\r\n let eueftaCountries = allCountries?.filter(x => x.isEUEFTA) || [];\r\n let resellerCountries: any = [...countries];\r\n\r\n if (eueftaCountries && eueftaCountries.length > 0) {\r\n resellerCountries = ArrayExtensions.mergeArrays(resellerCountries, eueftaCountries);\r\n }\r\n countriesList = sortArrayData(resellerCountries, 'name', 'countryName');\r\n return countriesList;\r\n }\r\n\r\n // Handle MEA region for Distributors -- If not Saudi Arabia/ Egypt / South Africa then select UAE\r\n let isMEARegionSelected = countries.some(x => x.region === ApplicationConstants.MiddleEastRegion);\r\n if (isMEARegionSelected \r\n && countries[0].countryName !== ApplicationConstants.SaudiArabia \r\n && countries[0].countryName !== ApplicationConstants.Egypt\r\n && countries[0].countryName !== ApplicationConstants.SouthAfrica) {\r\n let uaeCountry = allCountries?.filter(x => x.countryName === ApplicationConstants.UAE) || [];\r\n if (uaeCountry) {\r\n return uaeCountry;\r\n }\r\n }\r\n return countries;\r\n }\r\n}\r\n\r\n//TODO: TEMP Config. Will be read from config file or CRM\r\nexport const channelConfig = {\r\n Config: {\r\n PrimaryResellerCount: 1,\r\n }\r\n}\r\n\r\nexport const setErrorsDataIntoContext = (pivotTabsData: IPivotTab[], value: string, errorMessage: string, targetPropertyId: string, tabName: string) => {\r\n var pivotTab = pivotTabsData?.find(t => t.tabName === tabName);\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(value)) {\r\n pivotTab?.errors?.delete(targetPropertyId);\r\n }\r\n else {\r\n pivotTab?.errors?.set(targetPropertyId, errorMessage);\r\n }\r\n}\r\n\r\n//taking minimum threshold value in the multiple deal scenario\r\n//taking minimum threshold value in the multiple deal scenario\r\nexport const getDealQuantityThreshold = (opportunityDeals: IDealState[], productGroupName: string, selectedOptyDealCaseNumber: string, pageMode: string): number => {\r\n let quantityThreshold: number = -1;\r\n const draftDeal = opportunityDeals.find((t: IDealState) => t.statusCode !== OpportunityDealStatusCodes.Draft);\r\n let countryName = (opportunityDeals && opportunityDeals[0]?.dealCustomers && opportunityDeals[0]?.dealCustomers[0]?.country) || \"\";\r\n if (pageMode === PageMode.Edit && !JavaScriptExtensions.isNullOrUndfinedOrEmpty(draftDeal)) {\r\n const optyDeal = opportunityDeals.find((t: IDealState) => t.name === selectedOptyDealCaseNumber);\r\n let countryName = (optyDeal && optyDeal?.dealCustomers && optyDeal?.dealCustomers[0]?.country) || \"\";\r\n const dealVolumeConfig = getDealVolumes(optyDeal?.dealType?.name || \"\", productGroupName || \"\", optyDeal?.dealVertical, countryName)\r\n return !isNullOrEmpty(dealVolumeConfig) ? dealVolumeConfig?.minimumUnitsCommitted || 0 : quantityThreshold;\r\n }\r\n else {\r\n opportunityDeals?.forEach((optyDeal: IDealState) => {\r\n let countryName = (optyDeal && optyDeal?.dealCustomers && optyDeal?.dealCustomers[0]?.country) || \"\";\r\n const dealVolumeConfig = getDealVolumes(optyDeal?.dealType?.name || \"\", productGroupName || \"\", optyDeal?.dealVertical, countryName)\r\n let selectedDealTypeThreshold = JavaScriptExtensions.isNullOrUndfinedOrEmpty(dealVolumeConfig) ? quantityThreshold : dealVolumeConfig?.minimumUnitsCommitted;\r\n /**Max value to be considered as threshold value fo DR+SP - feature 10271293 **/\r\n if (quantityThreshold < (selectedDealTypeThreshold || 0)) {\r\n quantityThreshold = selectedDealTypeThreshold || 0;\r\n }\r\n });\r\n }\r\n\r\n return quantityThreshold;\r\n}\r\n\r\nexport const getDealQuantityThresholdValue = (opportunityDeals: IDealState[], productGroupId: string, dealType: string): number => {\r\n let quantityThreshold: number = -1;\r\n let productGroupName: string = \"\";\r\n let countryName = (opportunityDeals && opportunityDeals[0]?.geoCountries && opportunityDeals[0]?.geoCountries[0]?.countryName) || \"\";\r\n \r\n if(opportunityDeals?.length == 0 || JavaScriptExtensions.isNullOrUndfinedOrEmpty(productGroupId) || JavaScriptExtensions.isNullOrUndfinedOrEmpty(dealType)) {\r\n return quantityThreshold;\r\n }\r\n\r\n let productTypes : IProductType[] = [];\r\n let productTypesInSession = sessionStorage.getItem(SessionStorageConsts.productTypes);\r\n if (productTypesInSession !== null) {\r\n productTypes = JSON.parse(productTypesInSession);\r\n let productTypeSelected : IProductType[] = productTypes.filter(p => p.productId == productGroupId);\r\n productGroupName = productTypeSelected[0]?.productName\r\n }\r\n\r\n const selectedConfig = getDealVolumes(dealType || \"\", productGroupName || \"\", opportunityDeals[0]?.dealVertical, countryName);\r\n\r\n if(JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedConfig)) {\r\n return quantityThreshold;\r\n }\r\n\r\n let selectedDealTypeThreshold : any = selectedConfig?.minimumUnitsCommitted;\r\n return selectedDealTypeThreshold;\r\n}\r\n\r\n\r\n\r\n// Get MSStore Email TextField ErrorMessage.\r\nexport const validateMSStoreEmailErrorMessage = (value: string): string => {\r\n let message = '';\r\n if (!value) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredMSStoreSellerEmail\", ErrorMessages.RequiredMSStoreSellerEmail);\r\n }\r\n else if (!isValidEmail(value)) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"InvalidMSStoreSellerEmail\", ErrorMessages.InvalidMSStoreSellerEmail);\r\n }\r\n else if (value.indexOf(\"@\") !== -1 && value.indexOf(ApplicationConstants.microsoftEmail) === -1) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"InvalidMicrosoftMSStoreSellerEmail\", ErrorMessages.InvalidMicrosoftMSStoreSellerEmail);\r\n }\r\n\r\n return message;\r\n};\r\n\r\nexport const setPartnerDetails = (pageContext: IPageState, productTypes: IProductType[], countries: ICountry[]): IPartnerDetails => {\r\n let partnerdetails: IPartnerDetails = {} as IPartnerDetails;\r\n let productGroupName = '';\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(pageContext.productGroup)) {\r\n productGroupName = productTypes.find(p => p.productId === pageContext.productGroup)?.productName || \"\";\r\n }\r\n partnerdetails.productGroupName = productGroupName;\r\n partnerdetails.productGroupId = pageContext.productGroup;\r\n var requester = pageContext.opportunityAccounts?.find(acc => acc.channelSubType === ChannelSubType.Requester);\r\n if (isMsStoreUser()) {\r\n partnerdetails.userRole = UserRole.MSStore;\r\n var geoCountry = pageContext?.opportunityDeals && pageContext?.opportunityDeals[0] && pageContext?.opportunityDeals[0].geoCountries &&\r\n pageContext?.opportunityDeals[0].geoCountries[0];\r\n partnerdetails.countryName = geoCountry?.countryName || \"\";\r\n partnerdetails.countryId = geoCountry?.countryId || \"\";\r\n }\r\n else if (requester && requester.accounts) {\r\n var RoleValue = PartnerTypeLabel.get(requester?.partnerType || 0) || \"\";\r\n //dispatch partner details\r\n partnerdetails.mpnLocation = requester.accounts[0].locationId;\r\n partnerdetails.countryName = countries.find(t => t.countryId === requester?.countryId)?.countryName;\r\n partnerdetails.countryId = requester?.countryId;\r\n partnerdetails.organizationId = requester.accounts[0].organizationId;\r\n partnerdetails.userRole = RoleValue;\r\n }\r\n else {\r\n partnerdetails.userRole = getUserRole();\r\n }\r\n\r\n return partnerdetails;\r\n}\r\n\r\nexport const isMultiDeal = (pageContext: IPageState): boolean => {\r\n let dealTypes: string[] = [];\r\n pageContext.opportunityDeals?.forEach(t => dealTypes.push(t?.dealType?.name || \"\"));\r\n return _.uniq(dealTypes)?.length > 1;\r\n}\r\n\r\nexport const isCaseContainsDealType = (pageContext: IPageState, dealTypeName: string): boolean => {\r\n var dealType = pageContext.opportunityDeals?.filter(t => t?.dealType?.name === dealTypeName);\r\n return dealType?.length > 0;\r\n}\r\n\r\n// to show action menu on edit screen\r\nexport const showActionMenuHelper = (pageContext: IPageState, oppDeal: IDealState, requester?: IOpportunityAccount): IOpportunityDealDetails => {\r\n //start: show action menu in view form object\r\n let oppDealDetails: IOpportunityDealDetails = {} as IOpportunityDealDetails\r\n oppDealDetails.id = oppDeal.id || \"\";\r\n if (pageContext.opportunityAccounts) {\r\n oppDealDetails.opportunityAccounts = pageContext.opportunityAccounts;\r\n oppDealDetails.dealContacts = oppDeal.dealContacts;\r\n oppDealDetails.submitterDetails = pageContext.submitterDetails;\r\n }\r\n oppDealDetails.isLocalEmpowerment = oppDeal.isLocalEmpowerment || false;\r\n oppDealDetails.dealName = oppDeal.dealName || \"\";\r\n oppDealDetails.dealType = oppDeal.dealType || {};\r\n oppDealDetails.id = oppDeal.id || \"\"\r\n oppDealDetails.customerCountry = \"\"\r\n\r\n var statusName = getStatusNameByCode(oppDeal?.statusCode);\r\n if (statusName === OpportunityDealStatusNames.Approved && oppDeal?.expirationDate && new Date(oppDeal?.expirationDate) < new Date()) {\r\n oppDealDetails.statusCodeName = OpportunityDealStatusNames.Expired\r\n } else {\r\n oppDealDetails.statusCodeName = statusName\r\n }\r\n\r\n if (oppDeal?.statusCode) {\r\n oppDealDetails.statusCode = oppDeal?.statusCode;\r\n }\r\n\r\n if (oppDeal?.dealCustomers && oppDeal.dealCustomers.length > 0) {\r\n oppDealDetails.customerCountry = oppDeal.dealCustomers[0].country || \"\"\r\n }\r\n\r\n var closureDecisionName = getDealClosureDecisionNameByCode(oppDeal?.closureDecision);\r\n oppDealDetails.closureDecisionString = closureDecisionName;\r\n oppDealDetails.userType = getUserType(oppDealDetails);\r\n oppDealDetails.opportunityName = pageContext.name || \"\";\r\n oppDealDetails.caseStartDate = oppDeal.caseStartDate;\r\n oppDealDetails.dealExtensionCount = oppDeal.dealExtensionCount || 0\r\n oppDealDetails.unitsTransactedOnDeal = oppDeal.unitsTransactedOnDeal || 0\r\n oppDealDetails.unitsTransactedHardware = oppDeal.unitsTransactedHardware || 0\r\n oppDealDetails.unitsCommitted = oppDeal.dealVolume || 0\r\n oppDealDetails.dealVolume = oppDeal.dealVolume || 0\r\n oppDealDetails.dealVertical = oppDeal.dealVertical || \"\"\r\n oppDealDetails.productType = oppDeal.productType || \"\"\r\n oppDealDetails.relatedDeal = oppDeal.relatedDeal\r\n\r\n if (oppDeal.expirationDate) {\r\n oppDealDetails.expirationDate = new Date(oppDeal?.expirationDate)\r\n } else {\r\n oppDealDetails.expirationDate = undefined;\r\n }\r\n\r\n if (pageContext.opportunityDeals && pageContext.opportunityDeals.length > 0) {\r\n // set renewal eligibility\r\n var currentDeal = pageContext.opportunityDeals.find(d => d?.id === oppDeal?.id)\r\n if (currentDeal && currentDeal.statusCode === OpportunityDealStatusCodes.Approved) {\r\n if (JavaScriptExtensions.isEmptyGuid(currentDeal?.relatedDeal)) {\r\n oppDealDetails.isRenewalEligible = true\r\n } else {\r\n let relatedDeal = pageContext.opportunityDeals.find(d => d?.id === currentDeal?.relatedDeal)\r\n if (relatedDeal && relatedDeal.statusCode === OpportunityDealStatusCodes.Expired) {\r\n currentDeal.isRenewalEligible = true\r\n } else {\r\n currentDeal.isRenewalEligible = false\r\n }\r\n }\r\n }\r\n\r\n // set revert eligibility\r\n if (pageContext.opportunityDeals?.length === 1) {\r\n let deal = pageContext.opportunityDeals[0]\r\n if (deal?.statusCode === OpportunityDealStatusCodes.Unassigned && oppDealDetails?.id === deal?.id) {\r\n oppDealDetails.isRevertEligible = true\r\n }\r\n }\r\n\r\n if (pageContext.opportunityDeals?.length === 2) {\r\n let deal1 = pageContext.opportunityDeals[0]\r\n let deal2 = pageContext.opportunityDeals[1]\r\n\r\n if (deal1?.statusCode === OpportunityDealStatusCodes.Unassigned && deal2?.statusCode === OpportunityDealStatusCodes.Unassigned) {\r\n if (deal1?.id === oppDealDetails?.id || deal2?.id === oppDealDetails?.id) {\r\n oppDealDetails.isRevertEligible = true\r\n }\r\n }\r\n }\r\n }\r\n\r\n return oppDealDetails;\r\n}\r\n\r\nexport const getSelectedDealDetails = (oppDealdetails: IOpportunityDealDetails, oppDeal: IDealState): any => {\r\n var selectedData: any = oppDealdetails;\r\n selectedData.name = oppDeal.name;\r\n var ISToffSet = 330;\r\n var offset = ISToffSet * 60 * 1000;\r\n var caseStartDate = new Date(oppDeal.caseStartDate || \"\" + offset);\r\n if (caseStartDate) {\r\n selectedData.caseStartDate = caseStartDate;\r\n }\r\n\r\n return selectedData;\r\n}\r\n\r\nexport const initialChannelDisplayOnEdit = (pageContext: IPageState, initialChannelDisplay: IChannelFunctionalityDisplayState): IChannelFunctionalityDisplayState => {\r\n initialChannelDisplay.MultipleDistributorsOnly = true;\r\n initialChannelDisplay.PrimaryResellersOnly = true;\r\n return initialChannelDisplay;\r\n}\r\n\r\nexport const selectCountryBasedOnRegion = (endCustomerCountryId: string, accountCountryId: string, countries: ICountry[], type: PartnerType | undefined): string => {\r\n const selectedCountry = countries.find(t => t.countryId === endCustomerCountryId);\r\n let countryId: string = \"\";\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedCountry) && selectedCountry?.region?.toLowerCase() === ApplicationConstants.MiddleEastRegion.toLowerCase()\r\n && selectedCountry.countryName !== ApplicationConstants.SaudiArabia\r\n && selectedCountry.countryName !== ApplicationConstants.Egypt\r\n && selectedCountry.countryName !== ApplicationConstants.SouthAfrica && PartnerType.ADD === type) {\r\n countryId = countries.find(t => t.countryName === ApplicationConstants.UAE)?.countryId || \"\";\r\n }\r\n else if (PartnerType.MsStore === type || PartnerType.AdditionalTierReseller === type\r\n || PartnerType.FinalTierReseller === type) {\r\n countryId = endCustomerCountryId;\r\n }\r\n\r\n return JavaScriptExtensions.isEmptyOrNullOrUndefined(countryId) ? endCustomerCountryId : countryId;\r\n}\r\n\r\nexport const replaceMEToUAEForDistributors = (countries: ICountry[]): IAccount[] => {\r\n var distributors = getEntityDataFromSession<IAccount>(SessionStorageConsts.distributors);\r\n let uaeCountry = countries?.find(x => x.countryName === ApplicationConstants.UAE);\r\n let middleEastCountry = countries?.find(x => x.countryName === ApplicationConstants.MiddleEastCountry);\r\n distributors.forEach(t => {\r\n if (t.countryId === middleEastCountry?.countryId) {\r\n t.countryId = uaeCountry?.countryId;\r\n t.countryName = uaeCountry?.countryName;\r\n }\r\n })\r\n return distributors;\r\n}\r\n\r\nexport function getUserType(oppDealDetails: IOpportunityDealDetails): string[] {\r\n var userTypes: string[] = [];\r\n userTypes.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Default\", UIControlsText.Default))\r\n const loggedInUserEmail = sessionStorage.getItem(SessionStorageConsts.userEmail);\r\n const loggedInUserRoleDetails = getLoggedinUserRoleDetails();\r\n\r\n if (oppDealDetails.dealType != null && IsInternalPricingProgram(oppDealDetails.dealType.name)) {\r\n if (!isNullOrEmpty(oppDealDetails.closureDecisionString) && oppDealDetails.closureDecisionString.toLocaleLowerCase() === OpportunityDealClosureDecisionName.EditPendingReview.toLocaleLowerCase()) {\r\n return userTypes\r\n }\r\n\r\n if (oppDealDetails.submitterDetails != null && oppDealDetails.submitterDetails?.email != null && oppDealDetails.submitterDetails.email.toLocaleLowerCase() === loggedInUserEmail?.toLocaleLowerCase()) {\r\n userTypes.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Requester\", UIControlsText.Requester))\r\n }\r\n\r\n if (IsInternalPricingProgram(oppDealDetails.dealType.name) &&\r\n oppDealDetails.dealContacts != null && oppDealDetails.dealContacts.filter((c: any) => c.isCoOwner && c.email.toLocaleLowerCase() === loggedInUserEmail?.toLocaleLowerCase()).length > 0) {\r\n userTypes.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CoOwner\", UIControlsText.CoOwnerText))\r\n }\r\n }\r\n else if (oppDealDetails.dealType != null && IsExternalPricingProgram(oppDealDetails.dealType.name)) {\r\n if (loggedInUserRoleDetails.filter((t: any) => t?.userRole !== UserRole.MSSeller).length > 0 && !oppDealDetails.isLocalEmpowerment) {\r\n var loggedInUserAccountIds = [... new Set(loggedInUserRoleDetails.map((a: any) => a.accountId))]\r\n var loggedInUserOppAccounts = oppDealDetails.opportunityAccounts.filter(oppAcc => oppAcc.accounts != null && loggedInUserAccountIds.includes(oppAcc.accounts[0].accountId));\r\n var coOwnerDetails = oppDealDetails.opportunityAccounts.filter(oppAcc => oppAcc.channelSubType === ChannelSubType.CoOwner && !oppAcc.accounts?.filter(acc => loggedInUserAccountIds.includes(acc.accountId)));\r\n\r\n if ((oppDealDetails.statusCode === OpportunityDealStatusCodes.Draft || loggedInUserRoleDetails.filter((x: any) => x.userSubRole === UserSubRole.MSStoreUser.toString() || x.UserSubRole === UserSubRole.MSStoreUser.toString()).length > 0) &&\r\n oppDealDetails.submitterDetails !== null && oppDealDetails.submitterDetails?.email !== null && oppDealDetails.submitterDetails?.email.toLocaleLowerCase() === loggedInUserEmail?.toLocaleLowerCase()) {\r\n userTypes.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Requester\", UIControlsText.Requester))\r\n }\r\n else if (loggedInUserOppAccounts != null && loggedInUserOppAccounts.length > 0) {\r\n if (loggedInUserRoleDetails.filter((x: any) => x.userSubRole === UserSubRole.ADD).length > 0 && (oppDealDetails.statusCode === OpportunityDealStatusCodes.Approved\r\n || oppDealDetails.statusCode === OpportunityDealStatusCodes.Expired)) {\r\n if (coOwnerDetails.filter((oppAccount: any) => oppAccount.channelSubType === ChannelSubType.CoOwner).length > 0) {\r\n userTypes.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Default\", UIControlsText.Default))\r\n }\r\n else if (loggedInUserOppAccounts.filter((oppAccount: any) => oppAccount.channelSubType === ChannelSubType.CoOwner).length > 0) {\r\n userTypes.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CoOwner\", UIControlsText.CoOwnerText))\r\n }\r\n else if (loggedInUserOppAccounts.filter((oppAccount: any) => oppAccount.channelSubType === ChannelSubType.Requester && oppAccount.isRequesterIsOwner).length > 0) {\r\n userTypes.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Requester\", UIControlsText.Requester))\r\n }\r\n }\r\n else if (loggedInUserRoleDetails.filter((x: any) => x.userSubRole === UserSubRole.ADR || x.userSubRole === UserSubRole.DMP).length > 0\r\n && (oppDealDetails.statusCode === OpportunityDealStatusCodes.Approved || oppDealDetails.statusCode === OpportunityDealStatusCodes.Expired)) {\r\n userTypes.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Requester\", UIControlsText.Requester))\r\n }\r\n else if (oppDealDetails.statusCode === OpportunityDealStatusCodes.Unassigned || oppDealDetails.statusCode === OpportunityDealStatusCodes.Incomplete || oppDealDetails.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview) {\r\n if (loggedInUserOppAccounts.filter((oppAccount: any) => oppAccount.channelSubType === ChannelSubType.Requester).length > 0) {\r\n userTypes.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Requester\", UIControlsText.Requester))\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return userTypes;\r\n}","import React, { useEffect, useReducer, useState } from 'react';\r\nimport { useContext } from 'react';\r\nimport { UIControlsText } from '../../../../content/UIControlsText';\r\nimport { Guid } from '../../../../infrastructure/Guid';\r\nimport { ErrorCode } from '../../../../models/ErrorCode';\r\nimport { ApplicationConstants } from '../../../../models/ApplicationConstants';\r\nimport { OpportunityDealStatusCodes } from '../../../../models/OpportunityDealStatusCodes';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { nextGenService } from '../../../../services/NextGenService';\r\nimport { PageConstants } from '../../../pageconstants/Constants';\r\nimport { CaseActionTypes } from '../../common/reducer/CaseActionTypes';\r\nimport { IPageState } from '../../common/state/IPageState';\r\nimport InternalPricingProgramReducer from \"../reducer/InternalPricingReducer\";\r\nimport { IInternalPricingContext } from './IInternalPricingContext';\r\nimport { PageMode } from '../../../../models/PageMode';\r\nimport { getURLParamValue, isNullOrEmpty, getLoggedinUserRoleDetails, getUserSession, getOwnerInfo, intializeSessionConstants, getDealType, getProductType, getRuleValidationMessage, getEntityDataFromSession, getPropsDeaType } from '../../../../components/shared/common/util';\r\nimport { IUserRoleDetail } from '../../../../models/IUserRoleDetail';\r\nimport { LocalStorageConsts } from '../../../../models/LocalStorageConsts';\r\nimport { IAttachment } from '../../../../models/IAttachment';\r\nimport { IOpportunityChannelContact } from '../../../../models/IOpportunityChannelContact';\r\nimport { IOpportunityAccount } from '../../../../models/IOpportunityAccount';\r\nimport { IAccount } from '../../../../models/IAccount';\r\nimport { CustomerType } from '../../../../models/CustomerType';\r\nimport { Spinner, Stack } from '@fluentui/react';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { IProductFamily } from '../../../../models/IProductFamily';\r\nimport { getDealQuantityThresholdValue } from '../../PricingProgramForm/PricingProgramFormUtils';\r\nimport { IProductType } from '../../../../models/IProductType';\r\nimport { JavaScriptExtensions } from '../../../../infrastructure/JavaScriptExtensions';\r\n\r\n\r\nconst InternalPricingContext = React.createContext<IInternalPricingContext>({} as IInternalPricingContext);\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nlet internalPricingProgramDealId = Guid.newGuid();\r\nconst caseInitialState: IPageState = {\r\n id: Guid.newGuid(),\r\n dataLoading: true,\r\n selectedPivot: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n submitterDetails: JSON.parse(getUserSession() || \"{}\"),\r\n pageMode: PageMode.Create,\r\n opportunityDeals: [{ id: internalPricingProgramDealId, statusCode: OpportunityDealStatusCodes.Draft, submitterDetails: JSON.parse(getUserSession() || \"{}\") }]\r\n};\r\n\r\n/**\r\n * InternalPricingProvider - CP and OTLE programs provider.\r\n * @function\r\n */\r\nexport function InternalPricingProvider(props: any) {\r\n const [internalPricingContextState, internalPricingContextDispatch] = useReducer(InternalPricingProgramReducer, caseInitialState);\r\n const contextValue = { internalPricingContextState, internalPricingContextDispatch };\r\n const [isSessionDataLoadComplete, setIsSessionDataLoadComplete] = useState<boolean>(true);\r\n const propDealType = getPropsDeaType(props.dealtype) || '';\r\n \r\n useEffect(() => {\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n async function getOpportunity() {\r\n if (oppNumber && oppNumber.length > 0) {\r\n if (!isNullOrEmpty(userRoleDetails)) {\r\n var opportunity = await Promise.resolve(nextGenService.getOpportunity(oppNumber, userRoleDetails, pageMode || \"\"));\r\n if (opportunity.status === 200) {\r\n setLocalStoreOpportunity(opportunity.data);\r\n sessionStorage.setItem(SessionStorageConsts.opportunityProductType, JSON.stringify(opportunity.data.productGroup));\r\n const dealQuantityThresholdForDealType : number = getDealQuantityThresholdValue(internalPricingContextState.opportunityDeals, opportunity.data.productGroup|| \"\", opportunity.data.opportunityDeals[0].dealType?.name || \"\");\r\n sessionStorage.setItem(SessionStorageConsts.dealQuantityThresholdConfigs, dealQuantityThresholdForDealType.toString());\r\n internalPricingProgramDealId = (opportunity.data && opportunity.data.opportunityDeals[0].id) || Guid.newGuid();\r\n //add submitter details at opp deal from logged in user\r\n opportunity.data.opportunityDeals[0].submitterDetails = JSON.parse(getUserSession() || \"{}\");\r\n //on draft oppurtunity, savedraft flag returns as true, because of this on edit mode request re-submit automatically. so reseting flag to false\r\n if (opportunity.data.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Draft) {\r\n opportunity.data.saveDraft = false;\r\n }\r\n opportunity.data.pageMode = pageMode?.toString();\r\n\r\n var loggeinUser = getOwnerInfo();\r\n if (loggeinUser !== getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Owner\", UIControlsText.Owner) && pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.ownerInfoChanged, isNotCaseOwner: true });\r\n } else {\r\n internalPricingContextDispatch({ type: CaseActionTypes.draftCaseLoaded, case: { ...opportunity?.data, selectedPivot: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText) } });\r\n }\r\n internalPricingContextDispatch({ type: CaseActionTypes.dataLoadingEnd });\r\n }\r\n }\r\n }\r\n }\r\n const oppNumber = getURLParamValue(ApplicationConstants.OpportunityNumberParamName);\r\n const debugMode = getURLParamValue(ApplicationConstants.DebugParam);\r\n const pageMode = oppNumber && oppNumber.length > 0 ?\r\n isNullOrEmpty(sessionStorage.getItem(SessionStorageConsts.pageMode)) ? PageMode.View : sessionStorage.getItem(SessionStorageConsts.pageMode) : PageMode.Create;\r\n\r\n internalPricingContextDispatch({ type: CaseActionTypes.pageModeChanged, pageMode: pageMode || \"\" });\r\n if (!isNullOrEmpty(userRoleDetails)) {\r\n try {\r\n intializeSessionConstants().then(res1 => {\r\n setIsSessionDataLoadComplete(true);\r\n let internalPricingDealType = getDealType(propDealType);\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealTypeUpdated, dealTypeValue: { key: internalPricingProgramDealId, value: internalPricingDealType } });\r\n let cpStrategicProductType = getProductType(PageConstants.DefaultProductType);\r\n if (cpStrategicProductType) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.productGroupChanged, productGroupValue: cpStrategicProductType.productId });\r\n }\r\n\r\n if (oppNumber && oppNumber.length > 0) {\r\n getOpportunity();\r\n }\r\n else {\r\n localStorage.removeItem(LocalStorageConsts.savedOpportunity);\r\n sessionStorage.removeItem(SessionStorageConsts.opportunityProductType);\r\n }\r\n });\r\n }\r\n catch (error: any) {\r\n if (error && error.response && error.response.status === 404) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.errorOccured, inputNumber: ErrorCode.InvalidCase });\r\n }\r\n }\r\n finally {\r\n if (pageMode === PageMode.Create) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dataLoadingEnd });\r\n }\r\n internalPricingContextDispatch({ type: CaseActionTypes.pageModeChanged, pageMode: pageMode || \"\" });\r\n if (debugMode && debugMode.toLocaleLowerCase() === \"true\") {\r\n internalPricingContextDispatch({ type: CaseActionTypes.debugModeOn });\r\n }\r\n }\r\n }\r\n else {\r\n setIsSessionDataLoadComplete(true);\r\n }\r\n }, []);\r\n\r\n // Avoid storing dealcustomers/products/attachments/contacts in local storage, Maintain only in Context Object.\r\n // Apply deep copy so that main Opportunity object is not changed...\r\n const setLocalStoreOpportunity = (Opportunity: IPageState) => {\r\n let caseOpportunity = JSON.parse(JSON.stringify(Opportunity));\r\n //keep only attachmentid to compare on delete action\r\n var attachments = Opportunity.attachments?.map((attachment: any) => {\r\n return {\r\n id: attachment.id,\r\n } as IAttachment\r\n });\r\n //keeping only id fields to compare and add action on draft\r\n var channelContacts = Opportunity.opportunityChannelContacts?.map((contact: any) => {\r\n return {\r\n accountId: contact.accountId,\r\n channelContactEmails: contact.channelContactEmails\r\n } as IOpportunityChannelContact\r\n });\r\n //to keep only required opp Account related ids\r\n var oppAccount = Opportunity.opportunityAccounts?.map((account: any) => {\r\n return {\r\n id: account.id,\r\n action: account.action,\r\n countryId: account.countryId,\r\n partnerType: account.partnerType,\r\n accounts: account.accounts?.map((acc: any) => {\r\n return {\r\n accountId: acc.accountId,\r\n action:acc.action\r\n } as IAccount\r\n }),\r\n partnerAccounts: account.partnerAccounts\r\n } as IOpportunityAccount\r\n });\r\n\r\n var oppProducts = Opportunity.opportunityDeals[0].products?.map((item: any) => {\r\n return {\r\n id: item.id,\r\n countryId: item.countryId,\r\n productFamilyId: item.productFamilyId,\r\n productFamilyCode: item.productFamilyCode,\r\n name: item.name,\r\n businessUnitId: item.businessUnitId,\r\n quantity: item.quantity,\r\n } as IProductFamily\r\n });\r\n //primary customer is used in export excel so keeping only primary row here\r\n var primaryCustomer = caseOpportunity.opportunityDeals[0].dealCustomers?.filter((primary: any) => primary.customerType === CustomerType.Primary);\r\n caseOpportunity.opportunityAccounts = oppAccount;\r\n caseOpportunity.attachments = attachments;\r\n caseOpportunity.opportunityChannelContacts = channelContacts;\r\n caseOpportunity.opportunityDeals[0].dealCustomers = primaryCustomer;\r\n caseOpportunity.opportunityDeals[0].products = oppProducts;\r\n localStorage.setItem(LocalStorageConsts.savedOpportunity, JSON.stringify(caseOpportunity))\r\n }\r\n return (\r\n <>\r\n {!isSessionDataLoadComplete &&\r\n <Stack>\r\n <Spinner role=\"alert\" aria-live=\"assertive\" aria-busy=\"true\" label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingMCL\", UIControlsText.LoadingMCL)} \r\n //styles={PageStyles.spinnerLoadingIcon}\r\n />\r\n </Stack>\r\n }\r\n <InternalPricingContext.Provider value={contextValue}>\r\n {isSessionDataLoadComplete && props.children}\r\n </InternalPricingContext.Provider>\r\n </>\r\n \r\n );\r\n}\r\n\r\n/**\r\n * CP Strategic and OTLE Context custom hook.\r\n * @function\r\n * @returns {IInternalPricingContext}\r\n */\r\nexport function useInternalPricingContext(): IInternalPricingContext {\r\n return useContext(InternalPricingContext)\r\n}","/**\r\n * Enum for GridSelectionType.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum GridSelectionType {\r\n\r\n /**\r\n * single value.\r\n */\r\n Single = 1,\r\n\r\n /**\r\n * multiple value.\r\n */\r\n Mulitple = 2,\r\n}","import { ICellRenderProps } from \"./ICellRenderProps\"\r\nimport { IRowRenderProps } from \"./IRowRenderProps\"\r\nimport * as React from 'react';\r\nimport { isNullOrEmpty } from \"../common/util\";\r\n//used to render kendo grid cells as editable cell\r\nexport const CellRender = (props: ICellRenderProps) => {\r\n const dataItem = props.originalProps.dataItem;\r\n const cellField = props.originalProps.field || \"\";\r\n const inEditField = dataItem[props.editField || ''];\r\n const additionalProps = cellField && cellField === inEditField ?\r\n {\r\n ref: (td: any) => {\r\n const input = td && td.querySelector('input');\r\n const activeElement = document.activeElement;\r\n\r\n if (!input ||\r\n !activeElement ||\r\n input === activeElement ||\r\n !activeElement.contains(input)) {\r\n return;\r\n }\r\n console.log(input);\r\n if (input.type === 'checkbox') {\r\n input.focus();\r\n input.title = \"chktitle\";\r\n } else {\r\n input.select();\r\n }\r\n }\r\n } : {\r\n onClick: () => { props.enterEdit(dataItem, cellField); }\r\n };\r\n\r\n const clonedProps: any = { ...props.td.props, ...additionalProps };\r\n return React.cloneElement(props.td, clonedProps, props.td.props.children);\r\n}\r\n//used to render kendo grid row as editable \r\nexport const RowRender = (props: IRowRenderProps) => {\r\n let hasInEdit = props.originalProps?.dataItem?.inEdit;\r\n const trProps = {\r\n ...props.tr.props,\r\n onBlur: () => {\r\n if (!isNullOrEmpty(hasInEdit)) { props.exitEdit(); }\r\n }\r\n };\r\n return React.cloneElement(props.tr, { ...trProps }, props.tr.props.children);\r\n}","import { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport { IDropdownFilterCellProps } from \"./IDropdownFilterCellProps\";\r\nimport { UIControlsText } from \"../../../content/UIControlsText\";\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"../../../components/shared/common/util\";\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings)\r\n/**\r\n * DropdownFilterCell component.\r\n * @function component\r\n */\r\nexport const DropdownFilterCell = (props: IDropdownFilterCellProps) => {\r\n let hasValue: any = (value: any) => Boolean(value && value !== props.defaultItem);\r\n\r\n const onChange = (event: DropDownListChangeEvent) => {\r\n hasValue = hasValue(event.target.value);\r\n props.onChange({\r\n value: hasValue ? event.target.value : '',\r\n operator: hasValue ? 'eq' : '',\r\n syntheticEvent: event.syntheticEvent\r\n });\r\n }\r\n\r\n const onClearButtonClick = (event: any) => {\r\n event.preventDefault();\r\n props.onChange({\r\n value: '',\r\n operator: '',\r\n syntheticEvent: event\r\n });\r\n }\r\n return (\r\n <div className=\"k-filtercell\">\r\n <DropDownList\r\n data={props.data}\r\n onChange={onChange}\r\n value={props.value || props.defaultItem}\r\n defaultItem={props.defaultItem}\r\n />\r\n <button\r\n className=\"k-button k-button-icon k-clear-button-visible\"\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ClearAll\", UIControlsText.ClearAll)}\r\n disabled={!hasValue(props.value)}\r\n onClick={onClearButtonClick}\r\n >\r\n <span className=\"k-icon k-i-filter-clear\" />\r\n </button>\r\n </div>\r\n );\r\n}","/**\r\n * Enum for StateCode.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum StateCode {\r\n\r\n /**\r\n * Active value.\r\n */\r\n Active = 0,\r\n\r\n /**\r\n * InActive value.\r\n */\r\n InActive = 1\r\n\r\n}","/**\r\n * Enum for MenuOption.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum MenuOption {\r\n /**\r\n * Revert value.\r\n */\r\n Revert = 1,\r\n\r\n /**\r\n * Expire value.\r\n */\r\n Expire = 2,\r\n\r\n /**\r\n * Delete value.\r\n */\r\n Delete = 3,\r\n\r\n /**\r\n * CpStrategicLetters value.\r\n */\r\n Letters = 4,\r\n\r\n}","/**\r\n * Css Class Constants.\r\n * @constant \r\n */\r\nexport const CssClassConstants = {\r\n AddItemButtonClass: \"add-item\",\r\n AddItemIconName: \"AddTo\",\r\n AddIconName:\"Add\",\r\n DeleteIconName: \"Delete\",\r\n SearchIconName: \"Search\",\r\n ChannelAccounts: \"channel-accounts\",\r\n ViewIconName: \"View\",\r\n CPStrategicLetters: \"Attach\",\r\n EditIconName: \"Edit\",\r\n UndoIconName: \"Undo\",\r\n ChooseColumnIconName: \"ColumnOptions\",\r\n IncidentTriangleIconName: \"IncidentTriangle\",\r\n MoreVerticalIconName: \"MoreVertical\",\r\n CirclePlusIconName: \"CirclePlus\",\r\n DownloadIconName: \"Download\",\r\n FilterIconName: \"Filter\",\r\n AddCaseOverlayStylesClearButton: \"AddCaseOverlayStylesClearButton\",\r\n AddCaseOverlayStylesSearchButton: \"AddCaseOverlayStylesSearchButton\",\r\n AddCaseOverlaySingleSearchButton: \"AddCaseOverlaySingleSearchButton\",\r\n DealCountryDropdownId: \"dealcountrydropdown\",\r\n NotAvailableTextMargin: \"notAvailableTextMargin\",\r\n ResellerDistributorULClass: \"names-list\",\r\n ResellerDistributorListClass: \"names-li-item\",\r\n ChannelGridCellContentAlign: \"channel-grid-cell-content-align\",\r\n ActiveClass: \"active\",\r\n ResetIconName: \"Undo\",\r\n ExtendIconName: \"Clock\",\r\n ExpireIconName: \"IncidentTriangle\",\r\n RenewIconName: \"RepeatAll\",\r\n CopyIconName: \"Copy\",\r\n CustomerIcon: \"AccountManagementIcon\",\r\n BackButtonClass: \"Back\",\r\n NextButtonClass: \"Forward\",\r\n CustomerSearchBoxContainer: \"customerSearchBoxContainer\",\r\n AddToCasePanelClass: \"add-to-case-panel\",\r\n KendoRightToLeftClass: \"k-rtl\",\r\n DirectionRightToLeftClass: \"rtl\",\r\n KendoButtonLinkClass: \"k-button-link\",\r\n AddToCaseResellerGridClass: \"gridStyle\",\r\n AddToCaseResellerRadioClass: \"reseller-radio\",\r\n customerFilter: \"customer-filter\",\r\n partnerDetailCase: \"partner-case-detail\",\r\n AddToCaseButtonClass: \"add-to-case-button\",\r\n backgroundColorWhite: \"backgroundColorWhite\",\r\n PanelBarMaxWidth: \"panelbar-wrapper\",\r\n RefreshIconName: \"Refresh\"\r\n}","import { getTheme, IDocumentCardPreviewProps, mergeStyleSets } from \"@fluentui/react\";\r\nimport { FontWeights } from \"office-ui-fabric-react\";\r\n\r\n/**\r\n * Page Style Channel contacts Submission.\r\n * @constant\r\n */\r\nexport const PageStyles = {\r\n disabledTabs: {\r\n opacity: 0.5,\r\n cursor: \"default\",\r\n },\r\n missingFieldTabs: {\r\n borderBottom: \"solid 3px red\",\r\n },\r\n commandButtonStyles: {\r\n root: { marginTop: 20 },\r\n },\r\n commandButtonPadding: {\r\n root: { marginRight: 8, marginTop: 10 },\r\n },\r\n labelStyles: {\r\n root: { marginTop: 10 },\r\n },\r\n dropdownStyles: {\r\n dropdown: { width: 300 },\r\n title: {\r\n color: '#171717',\r\n fontSize: '11px',\r\n height: '32px',\r\n padding: '0px 28px 28px 8px',\r\n },\r\n errorMessage: {\r\n width: 295\r\n }\r\n },\r\n bgdropdownStyles: {\r\n dropdown: { width: 230 },\r\n title: {\r\n color: '#171717',\r\n fontSize: '11px',\r\n height: '32px',\r\n padding: '0px 28px 28px 8px',\r\n },\r\n errorMessage: {\r\n width: 295\r\n }\r\n },\r\n bgSKUStyles: {\r\n header1: {\r\n fontSize: \"12px\",\r\n fontWeight: 600,\r\n lineHeight: \"20px\",\r\n border: \"none\",\r\n width: \"100px\"\r\n },\r\n paddingLeft250: {\r\n paddingLeft: \"250px\"\r\n },\r\n header2: {\r\n fontSize: \"12px\",\r\n fontWeight: 600,\r\n lineHeight: \"20px\",\r\n border: \"none\",\r\n },\r\n productNames: {\r\n fontSize: \"12px\",\r\n lineHeight: \"20px\",\r\n },\r\n },\r\n dropdownStylesTwoColumn: {\r\n dropdown: { width: 400 },\r\n },\r\n PaneldropdownStyles: {\r\n dropdown: { width: 165 },\r\n },\r\n addItemButtonStyles: {\r\n height: \"25px\",\r\n width: \"150px\",\r\n padding: 0,\r\n },\r\n addResellerAlignement: {\r\n height: \"25px\",\r\n width: \"150px\",\r\n padding: 0,\r\n marginTop: 0,\r\n marginBottom: 15,\r\n },\r\n innerHtmlMinWidth: {\r\n root: { minWidth: 250, maxWidth: 350 },\r\n },\r\n textFieldStylesWidth550: {\r\n root: { width: 550 },\r\n },\r\n textFieldStylesOneColumn: {\r\n root: { width: 300 },\r\n },\r\n textFieldStylesTwoColumn: {\r\n root: { width: 250 },\r\n },\r\n textFieldStylesFourColumn: {\r\n root: { width: 140 },\r\n },\r\n textFieldStylesWidth146: {\r\n root: { width: 146 },\r\n },\r\n textFieldStylesReadOnlyWidth146: {\r\n root: { width: 146 },\r\n fieldGroup: { backgroundColor: \"#f3f2f1\" }\r\n },\r\n textFieldStylesReadOnlyWidth250: {\r\n root: { width: 250 }\r\n },\r\n textFieldStylesWidth92: {\r\n root: { width: 92 },\r\n errorMessage: { width: 300 },\r\n },\r\n textFieldPanelWidth: {\r\n root: { width: 514 },\r\n },\r\n multiLineTextWidth: {\r\n root: { width: 350 },\r\n },\r\n\r\n dealContactAddButton: {\r\n height: \"25px\",\r\n width: \"150px\",\r\n padding: 0,\r\n },\r\n ErrorMessageStyles: {\r\n paddingBottom: \"30px\",\r\n },\r\n missingFieldHighlight: {\r\n border: \"solid 1px red\",\r\n },\r\n sectionHeading: {\r\n fontSize: \"15px\",\r\n borderBottom: \"2px solid #0063B1\",\r\n },\r\n sectionDivider: {\r\n margin: \"10px 30px 10px 0px\",\r\n borderTop: \"1px solid #d3d3d3\",\r\n width: \"100%\",\r\n },\r\n epcLabelWidth: {\r\n width: \"26px\",\r\n },\r\n warningMessageWidth: {\r\n width: \"100px\",\r\n },\r\n openPanelButtonStyles: {\r\n width: \"180px\",\r\n border: \"1px solid #000\",\r\n maxHeight: \"25px\",\r\n },\r\n distributorDropdownStyles: {\r\n dropdown: { width: 185 },\r\n },\r\n panelButton: {\r\n margin: '20px 0 0 10px',\r\n cursor: 'pointer'\r\n },\r\n panelButtonNoCursor: {\r\n margin: '20px 0 0 10px',\r\n },\r\n panelButtonStyle: {\r\n margin: '0 0 0 10px',\r\n cursor: 'pointer'\r\n },\r\n buttonStyles: {\r\n borderRadius: '3px',\r\n margin: '5px 8px 0px 8px',\r\n padding: '3px',\r\n width: '150px',\r\n fontSize: '.10em'\r\n },\r\n buttonStylesLong: {\r\n borderRadius: '3px',\r\n margin: '5px 8px 0px 8px',\r\n padding: '3px',\r\n width: '180px',\r\n fontSize: '.10em'\r\n },\r\n paddingTop10px: {\r\n paddingTop: \"10px\"\r\n },\r\n paddingTop8px: {\r\n paddingTop: \"8px\"\r\n },\r\n paddingTop20px: {\r\n paddingTop: \"20px\"\r\n },\r\n completedSolidIconStyle: {\r\n fontSize: 70,\r\n height: 70,\r\n width: 70\r\n },\r\n greenColor: {\r\n color: 'green'\r\n },\r\n successCaseColor: {\r\n color: \"#0070c0\",\r\n fontWeight: \"bold\",\r\n fontSize: 15\r\n },\r\n successBlackColor: {\r\n color: \"black\",\r\n fontWeight: \"bold\",\r\n fontSize: 15\r\n },\r\n ThankyouFontSize: {\r\n fontSize: 15\r\n },\r\n warningBackGroundColor: {\r\n content: { backgroundColor: \"#fff4ce\" }\r\n },\r\n searchStyles: {\r\n dropdown: { width: 140 },\r\n },\r\n successDraftPadding: {\r\n root: { padding: \"0px 100px 0 100px\" }\r\n },\r\n spinnerLoadingIcon: {\r\n root: {\r\n position: \"fixed\" as \"fixed\",\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0,\r\n background: \"rgba(0, 0, 0, 0.1)\",\r\n zIndex: 99999999,\r\n }\r\n },\r\n pivotTabError: {\r\n color: \"red\",\r\n fontWeight: \"bold\"\r\n },\r\n pivotTabNormal: {\r\n color: \"black\",\r\n fontWeight: \"bold\"\r\n },\r\n pivotTabDisabled: {\r\n opacity: 0.5,\r\n cursor: \"default\",\r\n fontWeight: \"bold\"\r\n },\r\n paddingBottom15: {\r\n paddingBottom: '15px'\r\n }\r\n};\r\n\r\nexport const OpportunityDetailsStyles = {\r\n DeleteButton: {\r\n height: \"27px\",\r\n paddingTop: \"30px\",\r\n },\r\n HorizontalChoiceGroup: {\r\n flexContainer: { display: \"flex\", justifyContent: \"space-between\" },\r\n },\r\n};\r\n\r\nexport const DealDetailsStyles = {\r\n dealRegistrationColWidth: {\r\n width: \"300px\",\r\n },\r\n dealRegistrationVolumeWidth: {\r\n width: \"179px\",\r\n marginTop: \"4px\",\r\n marginLeft: \"5px\",\r\n },\r\n dealRegistratioLabelWidth: {\r\n width: \"36px\",\r\n },\r\n quantityTextBoxWidth: {\r\n width: \"35px\",\r\n height: \"20px\",\r\n },\r\n monthsTextWidth: {\r\n width: \"60px\",\r\n paddingTop: \"10px\",\r\n paddingLeft: \"5px\",\r\n },\r\n radioButtonStyle: {\r\n padding: \"4px 10px 0px 5px\",\r\n },\r\n stackStylesWidth: {\r\n width: \"auto\",\r\n paddingTop: \"7px\",\r\n },\r\n textboxLabelPadding: {\r\n paddingTop: \"28px\",\r\n },\r\n marginTopStyle: {\r\n marginTop: \"10px\",\r\n },\r\n marginLeftStyle: {\r\n marginLeft: \"18px\",\r\n },\r\n marginLeft10: {\r\n marginLeft: \"10px\",\r\n },\r\n marginLeftFontSize: {\r\n marginLeft: \"10px\",\r\n fontSize: \"12px\"\r\n },\r\n fontSize12: {\r\n fontSize: \"12px\"\r\n },\r\n checkBoxLabelFontStyle: {\r\n fontSize: \"12px\",\r\n },\r\n sectionDivider: {\r\n margin: \"15px 30px 10px 0px\",\r\n borderTop: \"1px solid #d3d3d3\",\r\n },\r\n backGroundColor: {\r\n backgroundColor: \"#EDEBE9\",\r\n width: \"40%\",\r\n paddingBottom: \"7px\",\r\n },\r\n backgroundColorWhite: {\r\n backgroundColor: \"white\",\r\n },\r\n horizontalChoiceGroupSingleColumn: {\r\n flexContainer: { display: \"flex\" },\r\n root: { width: 300 },\r\n },\r\n horizontalChoiceGroupSmallColumn: {\r\n flexContainer: { display: \"flex\" },\r\n root: { width: 200 },\r\n },\r\n horizontalChoiceGroup: {\r\n flexContainer: { display: \"flex\" },\r\n },\r\n backGroundColorGreyWithPadding: {\r\n root: {\r\n backgroundColor: \"#f3f2f1\",\r\n margin: \"0px 40px 0px 7px\",\r\n padding: \"5px\"\r\n },\r\n },\r\n backGroundColorGrey: {\r\n backgroundColor: \"#f3f2f1\",\r\n },\r\n borderWidth: {\r\n borderWidth: 0\r\n },\r\n labelFontStyle: {\r\n fontWeight: 400\r\n },\r\n dealVolumeWidth: {\r\n width: \"300px\",\r\n paddingTop: \"5px\"\r\n },\r\n dealVolumeWidthPaddingTop: {\r\n width: \"300px\",\r\n paddingTop: \"5px\"\r\n },\r\n textBoxWidth: {\r\n width: \"60px\"\r\n },\r\n customerWarningMessageWidth: {\r\n text: { width: \"600px\" }\r\n }\r\n};\r\n\r\nexport const hovercardClassNames = mergeStyleSets({\r\n\r\n expandedCard: {\r\n padding: '16px 24px',\r\n },\r\n});","//MenuItems and Dialogue Component\r\nimport React from \"react\";\r\nimport { IContextualMenuProps } from \"@fluentui/react/lib/ContextualMenu\";\r\nimport { IconButton, DefaultButton, PrimaryButton } from \"@fluentui/react/lib/Button\";\r\nimport { useConst } from \"@fluentui/react-hooks\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { Checkbox, Stack, IStackTokens, TextField, Spinner } from \"@fluentui/react\";\r\nimport { _Styles, stackStyles, stackButtonStyles, stackGridStyles } from \"../../../content/styles/Page.styles\";\r\nimport { nextGenService } from '../../../services/NextGenService'\r\nimport { UIControlsText } from '../../../content/UIControlsText'\r\nimport { OpportunityDealStatusCodes } from '../../../models/OpportunityDealStatusCodes'\r\nimport { VerticalMenuProps } from \"./VerticalMenuProps\";\r\nimport { StateCode } from \"../../../models/StateCode\";\r\nimport { MenuOption } from \"../../../models/MenuOption\";\r\nimport { CssClassConstants } from \"../../../content/CssClassConstants\";\r\nimport { PageMode } from \"../../../models/PageMode\";\r\nimport { SessionStorageConsts } from \"../../../models/SessionStorageConsts\";\r\nimport { PageStyles } from \"../../../pages/pricingprogram/common/content/Page.Styles\";\r\nimport NextGenKendoGrid from \"../grid/nextgenkendogrid\";\r\nimport { IGridProps } from \"../grid/IGridProps\";\r\nimport { downloadDatabyInputFormat, getLoggedinUserRoleDetails, getUserSession, readGridConfig } from \"../common/util\";\r\nimport { GridType } from \"../../../models/GridType\";\r\nimport { getUserRole } from \"../common/util\";\r\nimport {ApplicationConstants} from\"../../../models/ApplicationConstants\"\r\nimport { IUserRoleDetail } from \"../../../models/IUserRoleDetail\";\r\nimport { UserSubRole } from \"../../../models/UserSubRole\";\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"../common/util\";\r\nimport { MessageTypeText } from \"../../../models/MessageTypeText\";\r\nimport { IDealRevertRequest } from \"../../../models/IDealRevertRequest\";\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nconst stackTokens: IStackTokens = { childrenGap: 24 };\r\nconst stackButtonTokens: IStackTokens = { childrenGap: 16 };\r\nexport const MenuItems: React.FunctionComponent<VerticalMenuProps> = (configData) => {\r\n // Reading data from CaseManagement component\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n const [cpStrategicLettersConfig, setcpStrategicLettersConfig] =\r\n React.useState<IGridProps>(readGridConfig(GridType.CPStrategicLetters));\r\n const { dashBoardConfig, dashBoardData, selectedData } = configData;\r\n const [hideDialog, setHideDialog] = React.useState<boolean>(false);\r\n const [showMessageDialog, setShowMessageDialog] = React.useState<boolean>(false);\r\n const [checkedOption, setCheckedOption] = React.useState<number>(0);\r\n const [disabled, setDisabled] = React.useState(true);\r\n const [userCountries] = React.useState<string>(userRoleDetails.filter(country => country.countryId && country.countryId !== null && country.countryId !== \"\").map(function (userRoleDetail) { return userRoleDetail.countryId }).join(','));\r\n const [userAccounts] = React.useState<string>(userRoleDetails.filter(accounts => accounts.accountId && accounts.accountId !== null && accounts.accountId !== \"\").map(function (userRoleDetail) { return userRoleDetail.accountId }).join(','));\r\n const [isSubmitWorking, setIsSubmitWorking] = React.useState<boolean>(false);\r\n const [message, setMessage] = React.useState<string>(\"\");\r\n\r\n const decisionLetterVisible = (): boolean => {\r\n var isvisible = false;\r\n\r\n if (userRoleDetails[0].userSubRole === UserSubRole.MSStoreUser) {\r\n isvisible = true;\r\n }\r\n else if ((userRoleDetails[0].userSubRole === UserSubRole.ADD || userRoleDetails[0].userSubRole === UserSubRole.ADR || userRoleDetails[0].userSubRole === UserSubRole.DMP)\r\n && userCountries !== \"\" && userAccounts !== \"\") {\r\n isvisible = true\r\n }\r\n return isvisible;\r\n }\r\n const [userRoles] = React.useState<string>(getUserRole());\r\n const [decisionLetterDownloading, setDecisionLetterDownloading] = React.useState<boolean>(false);\r\n let url=window.location.href\r\n\r\n var userDetails=getUserSession()\r\n let fullName=\"\"\r\n let email=\"\"\r\n if (userDetails != null) {\r\n let loggedInUserInfo = JSON.parse(userDetails);\r\n fullName=loggedInUserInfo.firstName +','+ loggedInUserInfo.lastName\r\n email=loggedInUserInfo.email\r\n }\r\n \r\n // redirect to case submission view mode.\r\n const viewDetails = () => {\r\n window.location.href = \"/managecase/cpstrategic?oppNumber=\" + selectedData.opportunityName\r\n sessionStorage.setItem(SessionStorageConsts.pageMode, PageMode.View);\r\n };\r\n //redirect to case submission edit mode.\r\n const editCase = () => {\r\n window.location.href = \"/managecase/cpstrategic?oppNumber=\" + selectedData.opportunityName\r\n sessionStorage.setItem(SessionStorageConsts.pageMode, PageMode.Edit);\r\n };\r\n\r\n // Methods for Showing Dialogue Component\r\n const revertDialogue = () => {\r\n setCheckedOption(MenuOption.Revert);\r\n setHideDialog(true);\r\n };\r\n const expireDialogue = () => {\r\n setCheckedOption(MenuOption.Expire);\r\n setHideDialog(true);\r\n };\r\n const deleteDialogue = () => {\r\n setCheckedOption(MenuOption.Delete);\r\n setHideDialog(true);\r\n };\r\n const lettersDialogue = async () => {\r\n var userRole=getUserRole();\r\n var userSubRole = userRole.split(\",\");\r\n setCheckedOption(MenuOption.Letters);\r\n let response = await nextGenService.getCPStrategicLettersByOpportunityDealId(selectedData.id,userSubRole[0] )\r\n if(response.data.length!==0){\r\n let cpStrategicConfig = { ...cpStrategicLettersConfig };\r\n cpStrategicConfig.kendoGridProps.data = response.data;\r\n cpStrategicConfig.kendoGridProps.totalRecords = response.data.length;\r\n setcpStrategicLettersConfig({ ...cpStrategicConfig });\r\n }\r\n setHideDialog(true);\r\n };\r\n //Method to download case decision letter on context menu click\r\n const decisionLetterDownload = async () => {\r\n try {\r\n setDecisionLetterDownloading(true);\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n const userSession = getUserSession();\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n let roles = userRoles.split(\",\");\r\n let filter: any\r\n var filters: { field: any; operator: string; value: any; }[] = []\r\n filters.push(\r\n {\r\n \"field\": \"name\",\r\n \"operator\": \"eq\",\r\n \"value\": selectedData.name\r\n },\r\n )\r\n filter = {\r\n logic: \"and\", filters: [\r\n {\r\n \"logic\": \"or\",\r\n \"filters\": filters\r\n }\r\n ]\r\n };\r\n const dashboardRequest = {\r\n accountsIds: userRoleDetails.map(function (userRoleDetail: IUserRoleDetail) { return userRoleDetail.accountId }).join(','),\r\n userRoles: roles.join(\",\"),\r\n email: loggedInUserInfo.email,\r\n tpiDs: [],\r\n filter: filter,\r\n pageNumber: 1,\r\n recordsToFetch: 1000,\r\n };\r\n console.log('menuItem', selectedData);\r\n let response = await nextGenService.getCaseLetters(selectedData.id, userRoleDetails, selectedData.dealType?.name, dashboardRequest)\r\n var FileName = \"Case Decision - \" + selectedData.opportunityName + \".pdf\";\r\n downloadDatabyInputFormat(FileName, response);\r\n setDecisionLetterDownloading(false);\r\n } catch (error) {\r\n setDecisionLetterDownloading(false);\r\n }\r\n }\r\n const submitData = () => {\r\n if (checkedOption === MenuOption.Revert) {\r\n setDisabled(true);\r\n return submitRevert();\r\n } else if (checkedOption === MenuOption.Expire) {\r\n setDisabled(true);\r\n return submitExpire();\r\n } else if (checkedOption === MenuOption.Delete) {\r\n setDisabled(true);\r\n return submitDelete();\r\n }\r\n };\r\n const closeMainDialogAndShowMessage = () =>{\r\n setShowMessageDialog(false);\r\n window.location.href = url;\r\n };\r\n const submitRevert = async () => {\r\n setIsSubmitWorking(true);\r\n setMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RevertInProgress\", UIControlsText.RevertInProgress));\r\n try {\r\n const revertRequest: IDealRevertRequest = {\r\n opportunityNumber: selectedData.opportunityName,\r\n opportunityDealId: selectedData.id,\r\n dealTypeName: selectedData.dealType?.name,\r\n fullName: fullName,\r\n email: email\r\n };\r\n\r\n await nextGenService.revertOpportunityDealStatus(revertRequest);\r\n setShowMessageDialog(true);\r\n setIsSubmitWorking(false);\r\n setHideDialog(false);\r\n setDisabled(true);\r\n } catch (error: any) {\r\n setMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RevertError\", UIControlsText.RevertError));\r\n setDisabled(false);\r\n }\r\n };\r\n\r\n const submitExpire = async () => {\r\n await nextGenService.setOpportunityDealStatus(selectedData.id, StateCode.Active, OpportunityDealStatusCodes.ForcedExpire,fullName,email)\r\n setHideDialog(false);\r\n setDisabled(true);\r\n window.location.href = url;\r\n };\r\n const submitDelete = async () => {\r\n await nextGenService.setOpportunityDealStatus(selectedData.id, StateCode.Active, OpportunityDealStatusCodes.Cancelled,fullName,email)\r\n setHideDialog(false);\r\n setDisabled(true);\r\n window.location.href = url;\r\n };\r\n\r\n // CheckBox OnChange Method\r\n const checkBoxOnChange = (e: any) => {\r\n if (e === true) {\r\n setDisabled(false);\r\n } else {\r\n setDisabled(true);\r\n }\r\n };\r\n //Rendering MenuItems Based On Status and UserRole\r\n let menuItems: any = []\r\n if (\r\n dashBoardConfig?.allowCaseView[0].userRoles?.some((r: any) => userRoles.includes(r)) &&\r\n dashBoardConfig?.allowCaseView[0].statusValues?.indexOf(\r\n dashBoardData.dataItem.statusCodeName\r\n ) !== -1\r\n ) {\r\n menuItems.push({\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ViewCaseText\", UIControlsText.ViewCaseText),\r\n iconProps: { iconName: CssClassConstants.ViewIconName },\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ViewCaseText\", UIControlsText.ViewCaseText),\r\n onClick: viewDetails,\r\n ariarole: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ViewCaseText\", UIControlsText.ViewCaseText)\r\n });\r\n }\r\n if (\r\n dashBoardConfig?.allowCaseEdit[0].userRoles?.some((r: any) => userRoles.includes(r)) &&\r\n dashBoardConfig?.allowCaseEdit[0].statusValues?.indexOf(\r\n dashBoardData.dataItem?.statusCodeName\r\n ) !== -1 && dashBoardConfig?.allowCaseEdit[0].permissions?.indexOf(\r\n dashBoardData?.dataItem?.accessType?.find((x: string) => x === \"Edit\")\r\n ) !== -1 && (selectedData.closureDecisionString!==ApplicationConstants.EditPendingReview)\r\n ) {\r\n menuItems.push({\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EditCaseText\", UIControlsText.EditCaseText),\r\n iconProps: { iconName: CssClassConstants.EditIconName },\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EditCaseText\", UIControlsText.EditCaseText),\r\n onClick: editCase,\r\n ariarole: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EditCaseText\", UIControlsText.EditCaseText)\r\n });\r\n }\r\n if (\r\n dashBoardConfig?.allowCaseRevert[0].userRoles?.some((r: any) => userRoles.includes(r)) &&\r\n dashBoardConfig?.allowCaseRevert[0].statusValues?.indexOf(\r\n dashBoardData.dataItem.statusCodeName\r\n ) !== -1\r\n ) {\r\n menuItems.push({\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RevertCaseText\", UIControlsText.RevertCaseText),\r\n iconProps: { iconName: CssClassConstants.UndoIconName },\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RevertCaseText\", UIControlsText.RevertCaseText),\r\n onClick: revertDialogue,\r\n ariarole: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RevertCaseText\", UIControlsText.RevertCaseText)\r\n });\r\n }\r\n if (\r\n dashBoardConfig?.allowCaseDelete[0].userRoles?.some((r: any) => userRoles.includes(r)) &&\r\n dashBoardConfig?.allowCaseDelete[0].statusValues?.indexOf(\r\n dashBoardData.dataItem.statusCodeName\r\n ) !== -1\r\n ) {\r\n menuItems.push({\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeleteCaseText\", UIControlsText.DeleteCaseText),\r\n iconProps: { iconName: CssClassConstants.DeleteIconName },\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeleteCaseText\", UIControlsText.DeleteCaseText),\r\n onClick: deleteDialogue,\r\n ariarole: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeleteCaseText\", UIControlsText.DeleteCaseText)\r\n });\r\n }\r\n if (\r\n dashBoardConfig?.allowCaseExpire[0].userRoles?.some((r: any) => userRoles.includes(r)) &&\r\n dashBoardConfig?.allowCaseExpire[0].statusValues?.indexOf(\r\n dashBoardData.dataItem.statusCodeName\r\n ) !== -1\r\n ) {\r\n menuItems.push({\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpireCaseText\", UIControlsText.ExpireCaseText),\r\n iconProps: { iconName: CssClassConstants.IncidentTriangleIconName },\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpireCaseText\", UIControlsText.ExpireCaseText),\r\n onClick: expireDialogue,\r\n ariarole: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpireCaseText\", UIControlsText.ExpireCaseText)\r\n });\r\n }\r\n if (\r\n dashBoardConfig?.allowCaseLetters[0].userRoles?.some((r: any) => userRoles.includes(r)) &&\r\n dashBoardConfig?.allowCaseLetters[0].statusValues?.indexOf(\r\n dashBoardData.dataItem.statusCodeName\r\n ) !== -1\r\n ) {\r\n menuItems.push({\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CPStrategicLetters\", UIControlsText.CPStrategicLetters),\r\n iconProps: { iconName: CssClassConstants.CPStrategicLetters },\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CPStrategicLetters\", UIControlsText.CPStrategicLetters),\r\n onClick: lettersDialogue,\r\n ariarole: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CPStrategicLetters\", UIControlsText.CPStrategicLetters)\r\n });\r\n }\r\n if (\r\n dashBoardConfig?.allowCaseDecisionLetter[0].userRoles?.some((r: any) => userRoles.includes(r)) &&\r\n dashBoardConfig?.allowCaseDecisionLetter[0].statusValues?.indexOf(\r\n dashBoardData.dataItem.statusCodeName\r\n ) !== -1 && decisionLetterVisible()\r\n ) {\r\n menuItems.push({\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CPCaseDecisionLetter\", UIControlsText.CPCaseDecisionLetter),\r\n iconProps: { iconName: CssClassConstants.DownloadIconName },\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CPCaseDecisionLetter\", UIControlsText.CPCaseDecisionLetter),\r\n onClick: decisionLetterDownload,\r\n ariarole: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CPCaseDecisionLetter\", UIControlsText.CPCaseDecisionLetter)\r\n });\r\n }\r\n const rowMenuProps = useConst<IContextualMenuProps>(() => ({\r\n shouldFocusOnMount: true,\r\n items: menuItems,\r\n }));\r\n\r\n // Rendering CheckBox Based on Selected Menu Option\r\n const renderLabel =\r\n checkedOption === MenuOption.Revert\r\n ? getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"RevertCheckBoxLabel\", UIControlsText.RevertCheckBoxLabel)\r\n : checkedOption === MenuOption.Expire\r\n ? getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"ExpireCheckBoxLabel\", UIControlsText.ExpireCheckBoxLabel)\r\n : getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"DeleteCheckBoxLabel\", UIControlsText.DeleteCheckBoxLabel);\r\n // Dialogue Submit Button\r\n const dialogueSubmitButtonText =\r\n checkedOption === MenuOption.Expire\r\n ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpireSubmit\", UIControlsText.ExpireSubmit)\r\n : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitText\", UIControlsText.SubmitText)\r\n //Dialogue CancelButton \r\n const dialogueCancelButtonText =\r\n checkedOption === MenuOption.Expire\r\n ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpireCancel\", UIControlsText.ExpireCancel)\r\n : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)\r\n // Rendering CheckBox Based on Selected Menu Option\r\n const CheckBox = (\r\n <Checkbox\r\n ariaLabel={renderLabel}\r\n className={_Styles.DialogueCheckBox}\r\n label={renderLabel}\r\n onChange={(e, selectedOption) => {\r\n checkBoxOnChange(selectedOption);\r\n }}\r\n />\r\n );\r\n return (\r\n <>\r\n {/* MenuItems */}\r\n <IconButton\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MoreActionsText\", UIControlsText.MoreActionsText)}\r\n menuIconProps={{ iconName: CssClassConstants.MoreVerticalIconName }}\r\n menuProps={rowMenuProps}\r\n />\r\n {decisionLetterDownloading &&\r\n <div>\r\n <Spinner />\r\n </div>\r\n }\r\n {/* Dialogue */}\r\n {showMessageDialog && (\r\n <Dialog style={_Styles} onClose={closeMainDialogAndShowMessage}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RevertCaseMessage\", UIControlsText.RevertCaseMessage)}\r\n <DialogActionsBar>\r\n <Stack horizontal horizontalAlign=\"end\" tokens={stackButtonTokens} styles={stackButtonStyles}>\r\n <Stack>\r\n <DefaultButton\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n onClick={() => {\r\n closeMainDialogAndShowMessage();\r\n }}\r\n />\r\n </Stack>\r\n </Stack>\r\n </DialogActionsBar>\r\n </Dialog>\r\n )}\r\n {hideDialog && (\r\n <Dialog style={_Styles} onClose={() => {\r\n setHideDialog(false);\r\n }} >\r\n <Stack styles={stackStyles}>\r\n <>\r\n {checkedOption === MenuOption.Revert && <h4> {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RevertOption\", UIControlsText.RevertOption)}</h4>}\r\n {checkedOption === MenuOption.Expire && <h4> {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpireOption\", UIControlsText.ExpireOption)}</h4>}\r\n {checkedOption === MenuOption.Delete && <h4> {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeleteOption\", UIControlsText.DeleteOption)}</h4>}\r\n {checkedOption === MenuOption.Letters && <h4> {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CPStrategicLetters\", UIControlsText.CPStrategicLetters)} - <h5>{selectedData.opportunityName}</h5> </h4>}\r\n </>\r\n </Stack>\r\n {checkedOption !== MenuOption.Letters ? (<>\r\n <Stack horizontal={false} tokens={stackTokens} styles={stackStyles}>\r\n <Stack horizontal tokens={stackTokens}>\r\n <Stack>\r\n <TextField\r\n styles={PageStyles.textFieldStylesTwoColumn}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseIdText\", UIControlsText.CaseIdText)}\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseIdText\", UIControlsText.CaseIdText)}\r\n readOnly\r\n value={selectedData.opportunityName}\r\n />\r\n </Stack>\r\n <Stack>\r\n <TextField\r\n styles={PageStyles.textFieldStylesTwoColumn}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"StatusText\", UIControlsText.StatusText)}\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"StatusText\", UIControlsText.StatusText)}\r\n readOnly\r\n value={selectedData.statusCodeName}\r\n />\r\n </Stack>\r\n </Stack>\r\n <Stack>{CheckBox}</Stack>\r\n </Stack>\r\n <DialogActionsBar>\r\n {isSubmitWorking &&\r\n <Stack>\r\n <div className=\"revertMessage\">\r\n {message}\r\n </div>\r\n </Stack>\r\n }\r\n <Stack horizontal horizontalAlign=\"end\" tokens={stackButtonTokens} styles={stackButtonStyles}>\r\n <PrimaryButton\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitCaseButtonTitle\", UIControlsText.SubmitCaseButtonTitle)}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitText\", UIControlsText.SubmitText)}\r\n text={dialogueSubmitButtonText}\r\n onClick={submitData}\r\n disabled={disabled}\r\n />\r\n <DefaultButton\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelCaseButtonTitle\", UIControlsText.CancelCaseButtonTitle)}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n text={dialogueCancelButtonText}\r\n onClick={() => {\r\n setHideDialog(false);\r\n }}\r\n />\r\n </Stack>\r\n </DialogActionsBar>\r\n </>) :\r\n <>\r\n <Stack horizontal tokens={stackTokens} styles={stackGridStyles}>\r\n <NextGenKendoGrid\r\n {...{\r\n kendoGridProps: { ...cpStrategicLettersConfig.kendoGridProps }\r\n }}\r\n />\r\n </Stack>\r\n\r\n <DialogActionsBar>\r\n <Stack horizontal tokens={stackTokens} styles={stackButtonStyles}>\r\n <PrimaryButton\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n onClick={() => {\r\n setHideDialog(false);\r\n }}\r\n />\r\n </Stack>\r\n </DialogActionsBar>\r\n\r\n </>}\r\n </Dialog>\r\n )}\r\n </>\r\n );\r\n};\r\n","import { useCallback, useEffect, useState } from \"react\";\r\nimport { GridColumn, GridColumnMenuProps } from \"@progress/kendo-react-grid\";\r\nimport { useLocation } from \"react-router\";\r\n\r\nimport { FontIcon, Link } from \"@fluentui/react\";\r\nimport { filter, forEach } from \"lodash\";\r\nimport NextGenKendoGrid from \"../components/shared/grid/nextgenkendogrid\";\r\nimport { FilterMenu } from \"../components/shared/grid/gridfilter\";\r\nimport { GridColumnMenuFilterBaseProps } from \"@progress/kendo-react-grid/dist/npm/interfaces/GridColumnMenuFilterBaseProps\";\r\nimport { Grid } from \"@fluentui/react-northstar\";\r\n\r\n//constants used in accessibility fixes\r\nexport const PageNames = {\r\n Dashboard: \"Dashboard\",\r\n NewCaseSubmission: \"New Case Submission\",\r\n Discount: \"Discount\",\r\n};\r\n\r\n// Custom Hook Intended to Facilitate Column Filter Menu Close and Focus Handling\r\nexport function useFilterMenuEscCloseAndFocus(props?: GridColumnMenuProps) {\r\n let filterMenuContainerSelector = \".k-grid-columnmenu-popup\";\r\n\r\n const escapeFilterMenuHandler = useCallback(\r\n (event) => {\r\n if (event.key === \"Escape\") {\r\n let isFocusOnfilterMenuDropdown = document.querySelector(':focus')?.classList.contains('k-dropdown-wrap');\r\n if (!isFocusOnfilterMenuDropdown && props?.onCloseMenu) {\r\n props.onCloseMenu();\r\n }\r\n } else if (event.key === \"Tab\") {\r\n let filterMenuContainer = document.querySelector(\r\n filterMenuContainerSelector\r\n );\r\n let primaryFilterButtonDisabledArray = Array.from(\r\n document.querySelectorAll(\"button.k-button[disabled]\")\r\n );\r\n let primaryFilterButtonDisabled = primaryFilterButtonDisabledArray\r\n ? (primaryFilterButtonDisabledArray[0] as HTMLButtonElement)\r\n : undefined;\r\n let filterMenuButtons = Array.from(\r\n document.querySelectorAll(\"button.k-button\")\r\n );\r\n let hasFilterMenuButtons =\r\n filterMenuButtons?.length === 2 &&\r\n filterMenuButtons[0] &&\r\n filterMenuButtons[1];\r\n if (\r\n hasFilterMenuButtons &&\r\n ((primaryFilterButtonDisabled &&\r\n event.target === filterMenuButtons[0]) ||\r\n (!primaryFilterButtonDisabled &&\r\n event.target === filterMenuButtons[1]))\r\n ) {\r\n (filterMenuContainer as HTMLDivElement).focus();\r\n }\r\n }\r\n },\r\n [props]\r\n );\r\n\r\n useEffect(() => {\r\n if (props) {\r\n document\r\n .querySelector(filterMenuContainerSelector)\r\n ?.addEventListener(\"keydown\", escapeFilterMenuHandler);\r\n\r\n return () => {\r\n document\r\n .querySelector(filterMenuContainerSelector)\r\n ?.removeEventListener(\"keydown\", escapeFilterMenuHandler);\r\n };\r\n }\r\n }, [props, escapeFilterMenuHandler]);\r\n}\r\n\r\n// useToHandleStateAndSetFocusBetweenChannelGridLinksAndViewReseller\r\nexport function useToHandleGlassFravcr() {\r\n let location = useLocation<any>();\r\n let whereTo = location?.state?.mdppAccessibilityNavigation;\r\n\r\n let pivot = undefined;\r\n if (\r\n whereTo === \"back to channel tab\" &&\r\n location.pathname.includes(\"/managecase/cpstrategic\")\r\n ) {\r\n pivot = \"Channel\";\r\n }\r\n\r\n return pivot;\r\n}\r\n\r\nexport function useToHandleSettingViewResellerNavState(): string | undefined {\r\n let location = useLocation<any>();\r\n let currentPath = location.pathname;\r\n\r\n if (currentPath.includes(\"/managecase/cpstrategic\")) {\r\n return \"from channel tab grid link\";\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nexport function useToSetFocusOnResellerNameLinkFocus() {\r\n let currentLocation = useLocation<any>();\r\n let currentLocationStateLinkId =\r\n \"#\" + currentLocation.state?.mdppAccessibilityLinkId;\r\n\r\n useEffect(() => {\r\n if (currentLocationStateLinkId) {\r\n (\r\n document.querySelector(currentLocationStateLinkId) as HTMLElement\r\n )?.focus();\r\n\r\n let locationState = currentLocation.state;\r\n let locationNav = locationState?.mdppAccessibilityNavigation;\r\n\r\n if (locationNav && locationNav === \"back to channel tab\") {\r\n currentLocation.state.mdppAccessibilityNavigation = \"on channel tab\";\r\n }\r\n }\r\n }, []);\r\n}\r\n\r\nexport function MdppAccessibilityLink({\r\n ...rest\r\n}: {} & React.ComponentPropsWithoutRef<typeof Link>) {\r\n useToSetFocusOnResellerNameLinkFocus();\r\n return <Link {...rest}></Link>;\r\n}\r\n\r\n//Accessibility - set Focus to Header in View Resellers component\r\nexport function useToSetFocusToHeader() {\r\n useEffect(() => {\r\n var heading = document.querySelector(\"h1\");\r\n heading?.focus();\r\n });\r\n}\r\n\r\n//Accessibility - enable validation message to be announced by screen readers\r\nexport function useToAddRoleAlert() {\r\n useEffect(() => {\r\n var messageBox = document.querySelector(\".ms-MessageBar-text\");\r\n messageBox?.setAttribute(\"role\", \"alert\");\r\n });\r\n}\r\n\r\n//Accessibility - enable Loading message to be announced by screen readers\r\nexport function useToSetRoleToLoadingMessage() {\r\n useEffect(() => {\r\n var loadingMessageSpinner = document.querySelector(\".ms-Spinner-label\");\r\n loadingMessageSpinner?.setAttribute(\"role\", \"alert\");\r\n });\r\n}\r\n\r\n//Function to modify page title based on the active Page\r\nfunction setTitle(currentTitle: string) {\r\n var setDocumentTitle = \"NextGen Pricing Portal \" + currentTitle;\r\n var currentDocumentTitle = document.querySelector(\"head title\");\r\n if (currentDocumentTitle != null) {\r\n currentDocumentTitle.innerHTML = setDocumentTitle;\r\n }\r\n}\r\n\r\n//Accessibility Fix for screen readers to announce dashboard and new case submissionpage title correctly\r\nexport function useToSetPageTitle(page: string) {\r\n useEffect(() => {\r\n var currentPage = document.querySelectorAll(\r\n \".ms-Link.ms-Breadcrumb-itemLink div div\"\r\n );\r\n if (page == \"Discount\") {\r\n var currentPageTitle = currentPage[0]?.innerHTML;\r\n } else {\r\n var currentPageTitle = currentPage[1]?.innerHTML;\r\n }\r\n setTitle(currentPageTitle);\r\n });\r\n}\r\n\r\n//Accessibility Fix for screen readers to announce Health and Support Page title correctly\r\nexport function useToSetSupportPageTitle() {\r\n useEffect(() => {\r\n var currentPage = document.querySelectorAll(\".DRStyleExpand-197 div div\");\r\n var currentPageTitle = currentPage[0]?.innerHTML;\r\n setTitle(currentPageTitle);\r\n });\r\n}\r\n\r\n/**\r\n * Accessibility fix adding role to grid column filter button\r\n * @function useToRemoveInvaidChildRole\r\n * @description This function removes the invalid role attribute\r\n * (Element has children which are not allowed: [role=navigation], button[aria-disabled], button[tabindex], [role=group]) from the child element of the grid\r\n * valid child elements can have the following aria attributes:\r\n * (\"role=row\",\"role=rowgroup\",\"role=gridcell\",\"role=columnheader\",\"role=rowheader\",\"aria-colindex\",\"aria-rowindex\",\"aria-selected\",\"aria-level\",\"aria-expanded\")\r\n * and role[listbox] (Element has children which are not allowed: span[aria-hidden])\r\n * This fixes an accessibility issue reported by Accessibility Insights for Web 2.40.0 (axe-core 4.7.2).\r\n * @see WCAG 1.3.1: Ensures elements with an ARIA role that require child roles contain them (.k-grid)\r\n * @see https://accessibilityinsights.io/info-examples/web/aria-required-children)\r\n */\r\nexport function useToRemoveInvalidChildRole() {\r\n useEffect(() => {\r\n var grid = document.querySelector(\".k-grid\");\r\n\r\n var listboxes = document.querySelectorAll(\"[role=listbox]\");\r\n let observers: MutationObserver[] = [];\r\n listboxes?.forEach((listbox) => {\r\n listbox.setAttribute(\"role\", \"combobox\");\r\n listbox.querySelectorAll(\"span.k-input[role=option]\").forEach((span) => {\r\n span.setAttribute(\"aria-label\", \"option\");\r\n\r\n const callback = function (mutationsList: any[], observer: any) {\r\n for (const mutation of mutationsList) {\r\n if (\r\n mutation.type === \"attributes\" &&\r\n span.getAttribute(\"role\") === \"option\"\r\n ) {\r\n span.setAttribute(\"role\", \"textbox\");\r\n }\r\n }\r\n };\r\n\r\n // observer will be used to observe the span element for any changes in the role attribute\r\n // if the role attribute is changed to option, it will be changed back to textbox\r\n // this is to fix the accessibility issue reported by Accessibility Insights for Web 2.40.0 (axe-core 4.7.2)\r\n // the disconnect is not being used on the observer because there's one or more scripts that change the span role back to option\r\n // the observer should be garbage collected\r\n const observer = new MutationObserver(callback);\r\n observer.observe(span, { attributes: true });\r\n observers.push(observer);\r\n });\r\n });\r\n\r\n return () => { \r\n forEach(observers, (observer) => {\r\n observer.disconnect();\r\n });\r\n }\r\n }, []);\r\n}\r\n\r\n/**\r\n * Accessibility fix adding role to grid column filter button\r\n * @function useToAddRoleToGridColumnFilterButton\r\n * @description This function adds a role attribute of 'button' to the parent element of each grid column filter icon,\r\n * to ensure that ARIA attributes are allowed for an element's role.\r\n * This fixes an accessibility issue reported by Accessibility Insights for Web 2.40.0 (axe-core 4.7.2).\r\n * @see WCAG 4.1.2: Ensures ARIA attributes are allowed for an element's role (div[aria-label=\"null filter\"])\r\n * @see https://accessibilityinsights.io/info-examples/web/aria-allowed-attr\r\n */\r\nexport function useToAddRoleToGridColumnFilterButton(){\r\n useEffect(() => {\r\n \r\n var gridColumnFilterButton = document.querySelectorAll('.k-icon.k-i-more-vertical');\r\n gridColumnFilterButton.forEach((gridColumnFilterButton) => {\r\n gridColumnFilterButton.parentElement?.setAttribute('role','button');\r\n });\r\n }, []);\r\n} \r\n\r\n/*\r\n* Accessibility fix to remove invalid role attributes from the child elements of the grid\r\n* @function useToFixGridAriaRequiredChildren\r\n* @description This function removes the invalid role attribute\r\n* (Element has children which are not allowed: [role=navigation], button[aria-disabled], button[tabindex], [role=group]) from the child element of the grid\r\n* valid child elements can have the following aria attributes:\r\n* (\"role=row\",\"role=rowgroup\",\"role=gridcell\",\"role=columnheader\",\"role=rowheader\",\"aria-colindex\",\"aria-rowindex\",\"aria-selected\",\"aria-level\",\"aria-expanded\")\r\n* and role[listbox] (Element has children which are not allowed: span[aria-hidden])\r\n* This fixes an accessibility issue reported by Accessibility Insights for Web 2.40.0 (axe-core 4.7.2).\r\n* @see WCAG 1.3.1: Ensures elements with an ARIA role that require child roles contain them (.k-grid)\r\n*/\r\nexport function useToFixGridAriaRequiredChildren(gridContainerId: string){\r\n useEffect(() => {\r\n let gridContainer = document.querySelector(gridContainerId);\r\n var grid = document.querySelector('.k-grid');\r\n var gridPager = grid?.querySelectorAll(\".k-grid .k-grid-pager\");\r\n gridPager?.forEach((pager) => {\r\n let removedPager = grid?.removeChild(pager);\r\n gridContainer?.appendChild(removedPager as Node);\r\n });\r\n\r\n }, []);\r\n}\r\n\r\n/**\r\n * Ensures all ARIA attributes have valid values (tr[aria-rowindex=\"NaN\"])\r\n * @function useToFixAriaAttributes\r\n * @description This function fixes an accessibility issue where the ARIA attribute value is invalid (aria-rowindex=\"NaN\") for the specified element path (tr[aria-rowindex=\"NaN\"]). The function sets the ARIA attribute value to a valid value.\r\n * @see WCAG 4.1.2: Ensures all ARIA attributes have valid values (https://www.w3.org/WAI/WCAG21/Understanding/aria-valid-attr-value.html)\r\n * @see https://accessibilityinsights.io/info-examples/web/aria-valid-attr-value\r\n */\r\nexport function useToFixAriaRowIndexNan() {\r\n\r\n function removeAriaRowIndex(element: Element) {\r\n if (element) {\r\n element.removeAttribute(\"aria-rowindex\");\r\n }\r\n }\r\n \r\n useEffect(() => {\r\n let nanRowIndexes = document.querySelectorAll(\"tr[aria-rowindex]\");\r\n let observers: MutationObserver[] = [];\r\n forEach(nanRowIndexes, (element, i) => {\r\n // once for each element\r\n removeAriaRowIndex(element);\r\n const mutationHandler = () => {\r\n // again in case another script readds the attribute\r\n removeAriaRowIndex(element);\r\n }\r\n\r\n const observer = new MutationObserver(mutationHandler);\r\n observer.observe(element, { attributes: true });\r\n observers.push(observer);\r\n });\r\n \r\n return () => { \r\n forEach(observers, (observer) => {\r\n observer.disconnect();\r\n });\r\n }\r\n });\r\n}\r\n\r\n/*\r\n* Accessibility fix for case action buttons at reflow resolution\r\n* @function useToShowActionButtonTextOnHoverOrFocusInReflow\r\n* @description This function hides the action button icons and shows the action button text on hover or focus in reflow resolution\r\n* This fixes an accessibility issue reported by manual testing.\r\n*/\r\nexport function useToShowActionButtonTextOnHoverOrFocusInReflow() {\r\n useEffect(() => {\r\n let actionButtons = document.querySelectorAll(\".ms-Stack button.ms-Button--commandBar\");\r\n let actionButtonText = document.querySelectorAll(\".ms-Stack button.ms-Button--commandBar span span\");\r\n let actionButtonIcons = document.querySelectorAll(\".ms-Stack button.ms-Button--commandBar span i\");\r\n\r\n let hideHandler = (event: Event) => {\r\n if(window.matchMedia(\"(width < 1281px)\").matches){\r\n let hideAll = (ele: Element) => {\r\n let htmlEle = ele as HTMLElement;\r\n htmlEle.style.display = 'none';\r\n }\r\n \r\n // hide each of the button icons\r\n actionButtonIcons.forEach(hideAll);\r\n \r\n // show the current button's text\r\n let currentButton = event.currentTarget as HTMLElement;\r\n let currentButtonText = currentButton?.querySelector(\"span span\") as HTMLElement;\r\n currentButtonText.style.display = 'block';\r\n }\r\n }\r\n\r\n let removeDisplayProperty = (element: Element) => {\r\n let htmlElement = element as HTMLElement;\r\n htmlElement.style.removeProperty(\"display\");\r\n }\r\n\r\n let focusSlashMouseOutHandler = () => {\r\n actionButtonText.forEach(removeDisplayProperty);\r\n actionButtonIcons.forEach(removeDisplayProperty);\r\n }\r\n\r\n let focusSlashMouseInHandler = (element: any) => {\r\n hideHandler(element);\r\n }\r\n \r\n actionButtons.forEach((actionButton) => {\r\n actionButton.addEventListener(\"mouseover\", focusSlashMouseInHandler);\r\n actionButton.addEventListener(\"focusin\", focusSlashMouseInHandler);\r\n actionButton.addEventListener(\"mouseout\", focusSlashMouseOutHandler);\r\n actionButton.addEventListener(\"focusout\", focusSlashMouseOutHandler);\r\n });\r\n }, []);\r\n}\r\n\r\n/*\r\n* @function MdppAccessibilityPanelGrid\r\n* @description This function returns a NextGenKendoGrid component with the accessibility fixes applied\r\n*/\r\nexport function MdppAccessibilityPanelGrid({...rest}: {} & React.ComponentPropsWithoutRef<typeof NextGenKendoGrid>) {\r\n useToFixAriaRowIndexNan();\r\n useToEnsureTabIndexSetForGridFilterButton();\r\n return <NextGenKendoGrid {...rest}></NextGenKendoGrid>;\r\n}\r\n\r\n/*\r\n* Accessibility - replacing the action button on the view and edit case pages.\r\n* @function cardHeaderIcon\r\n* @description This function returns a div with the specified icon name\r\n*/\r\nexport const cardHeaderIcon = (iconName: string, ariaLabel: string, id: string = iconName) : JSX.Element => {\r\n return <div style={{display:'inline-block', borderRadius:'27px', height:'27px', backgroundColor:'black', width:'27px', color: 'white', textAlign: 'center', verticalAlign:'center'}}>\r\n <FontIcon id={id} iconName={iconName} aria-label={ariaLabel} />\r\n </div>\r\n}\r\n\r\n/*\r\n* Accessibility fix to ensure tabindex is set for grid column filter button\r\n* @function useToEnsureTabIndexSetForGridFilterButton\r\n* @description This function ensures tabindex is set for grid column filter button\r\n*/\r\nexport function useToEnsureTabIndexSetForGridFilterButton() {\r\n useEffect(() => {\r\n let gridColumnFilters = document.querySelectorAll(\r\n \".k-icon.k-i-more-vertical\"\r\n );\r\n \r\n const observer = new MutationObserver((mutationsList, observer) => {\r\n [...gridColumnFilters].filter((filter) => \r\n !(filter.parentNode as Element).hasAttribute(\"tabindex\")\r\n ).forEach((gridFilterButton) => {\r\n gridFilterButton?.parentElement?.setAttribute(\"tabindex\", \"0\");\r\n });\r\n });\r\n\r\n observer.observe(document.body, { attributes: true });\r\n \r\n return () => {\r\n observer.disconnect();\r\n }\r\n }, []);\r\n}\r\n\r\n/*\r\n* Accessibility fix to ensure tabindex is set for the panel bar li elements\r\n* @function useToOverridePanelBarTabIndex\r\n* @description This function ensures proper tab navigation for the panel bar li elements\r\n*/\r\nexport function useToOverridePanelBarTabIndex(){\r\n useEffect(() => {\r\n\r\n const observer = new MutationObserver((mutationsList, observer) => {\r\n let panelBars = document.querySelectorAll(\".k-panelbar\");\r\n \r\n if(panelBars.length === 1){\r\n let panelBarElements = panelBars[0].querySelectorAll(\".k-panelbar .k-panelbar-header\");\r\n (panelBars[0] as HTMLElement).setAttribute(\"tabindex\", \"-1\");\r\n panelBarElements.forEach( (liEle) => {\r\n let li = liEle as HTMLElement;\r\n li.setAttribute(\"tabindex\", \"0\");\r\n });\r\n }\r\n });\r\n\r\n observer.observe(document.body, { attributes: true });\r\n\r\n return () => {\r\n observer.disconnect();\r\n }\r\n }, []);\r\n}\r\n\r\nexport function useToHandleOpenColumnMenuOnKeyboardEnter() {\r\n const filterButtonEnterHandler = useCallback((event: Event) => {\r\n if((event as KeyboardEvent).key === \"Enter\"){\r\n event.preventDefault();\r\n event.target && (event.target as HTMLElement).click();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n let filterButtons = document.querySelectorAll('[role=\"columnheader\"] [role=\"button\"][aria-label*=\"filter\"]');\r\n filterButtons.forEach((filterButton) => {\r\n filterButton.addEventListener(\"keydown\", filterButtonEnterHandler);\r\n });\r\n }, []);\r\n\r\n return () => {\r\n let filterButtons = document.querySelectorAll('[role=\"columnheader\"] [role=\"button\"][aria-label*=\"filter\"]');\r\n filterButtons.forEach((filterButton) => {\r\n filterButton.removeEventListener(\"keydown\", filterButtonEnterHandler);\r\n });\r\n }\r\n}","import {useEffect} from \"react\";\r\nimport { GridColumnMenuFilter, GridColumnMenuCheckboxFilter, GridColumnMenuProps } from \"@progress/kendo-react-grid\";\r\nimport { useFilterMenuEscCloseAndFocus } from \"../../../hooks/accessiblity-hooks\";\r\nimport { rootFilterOrDefault } from \"@progress/kendo-react-grid/dist/npm/columnMenu/GridColumnMenuFilter\";\r\nimport { CompositeFilterDescriptor, isCompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\n\r\n//method to show filter in grid column as context menu\r\nexport const FilterMenu = (props: GridColumnMenuProps) => {\r\n /*\r\n * Accessibility - Focus filter menu icon on focus out\r\n */\r\n useFilterMenuEscCloseAndFocus(props);\r\n\r\n return (\r\n <div className=\"k-animation-container\">\r\n <GridColumnMenuFilter {...props} expanded={true}/>\r\n </div>\r\n );\r\n};\r\n\r\n//method to show filter in grid column as context menu with checkbox selection\r\nexport const FilterMenuCheckboxFilter = (props: GridColumnMenuProps, data: any[]) => {\r\n return (\r\n <div>\r\n <GridColumnMenuCheckboxFilter\r\n {...props}\r\n data={data || []}\r\n expanded={true}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport const FilterGroupByField = (field: string, filter: any) => {\r\n var rootFilter = rootFilterOrDefault(filter);\r\n var compositeFilters = rootFilter.filters\r\n .filter(function (f) {\r\n if (isCompositeFilterDescriptor(f)) {\r\n return f.filters &&\r\n f.filters.length &&\r\n f.filters.length >= 1 &&\r\n !f.filters.find(function (nf) { return isCompositeFilterDescriptor(nf) || nf.field !== field; });\r\n }\r\n return false;\r\n });\r\n return compositeFilters[0] || null;\r\n};\r\n\r\nexport const IsFilterActive = (field: string, filter: CompositeFilterDescriptor | undefined) => {\r\n return !!FilterGroupByField(field, filter);\r\n};","import { useState, useCallback, useEffect } from \"react\";\r\nimport {Grid, GridColumn, GridSelectionChangeEvent, GridHeaderSelectionChangeEvent,\r\n getSelectedState, GridPageChangeEvent, GridSortChangeEvent\r\n \r\n} from \"@progress/kendo-react-grid\";\r\nimport { orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { getter } from \"@progress/kendo-react-common\";\r\nimport * as React from \"react\";\r\nimport { IPageState } from \"./IPageState\"\r\nimport { GridSelectionType } from \"./SelectionType\";\r\nimport { _Styles } from \"../../../content/styles/Page.styles\";\r\nimport { IGridChildProps } from \"./IGridChildProps\";\r\n\r\n/**\r\n * NextGenKendoGrid Component.\r\n * @function component\r\n */\r\nconst NextGenKendoChildGrid: React.FunctionComponent<IGridChildProps> = (props: IGridChildProps) => {\r\n const detailIdGetter = getter(props.parent.kendoGridProps.dataItemKey === \"undefined\" ? \"id\" : props.parent.kendoGridProps.dataItemKey);\r\n const [detailSelectedCheckState, setDetailSelectedCheckState] = useState<{ [id: string]: boolean | number[]; }>({});\r\n const detailGridInitialSort: Array<SortDescriptor> = [{ field: (props.parent.kendoGridProps.detailGrid?.initialSortField || \"id\"), dir: \"asc\" }];\r\n const [detailsort, setDetailSort] = useState(detailGridInitialSort);\r\n const initialDataStateChildGrid: IPageState = { skip: 0, take: props.parent.kendoGridProps.detailGrid?.noOfRecords };\r\n const [childGridPage, setChildGridPage] = useState<IPageState>(initialDataStateChildGrid);\r\n const [childGriddata, setChildGridData] = useState<any[]>([]);\r\n useEffect(() => {\r\n if (props.childGridData) {\r\n setChildGridData(props.childGridData);\r\n }\r\n }, [props.childGridData])\r\n\r\n useEffect(() => {\r\n if (props.defaultChildGridSelectionstate) {\r\n setDetailSelectedCheckState(props.defaultChildGridSelectionstate);\r\n }\r\n }, [props.defaultChildGridSelectionstate])\r\n //--event for checkbox header selection in the product search child grid: when header checked all the child checkbox will be checked\r\n const onDetailGridHeaderSelectionChange = useCallback(\r\n (event: GridHeaderSelectionChangeEvent) => {\r\n const checkboxElement: any = event.syntheticEvent.target\r\n const checked = checkboxElement.checked;\r\n let newSelectedState: any = {} = detailSelectedCheckState;\r\n var data = props.parent.kendoGridProps.selectAllRows ? childGriddata : event.dataItems;\r\n data.forEach(item => {\r\n newSelectedState[detailIdGetter(item)] = checked;\r\n });\r\n setDetailSelectedCheckState(newSelectedState);\r\n props.parent.onDetailRowSelectionCallBack?.(newSelectedState, event.dataItems);\r\n }, [detailSelectedCheckState]);\r\n //event to trigger on change of checkbox in the grid\r\n const onDetailGridSelectionChange = useCallback(\r\n (event: GridSelectionChangeEvent) => {\r\n const checkboxElement: any = event.syntheticEvent.target\r\n const checked = checkboxElement.checked;\r\n let newSelectedState: any = {} = detailSelectedCheckState;\r\n newSelectedState[detailIdGetter(event.dataItem)] = checked;\r\n setDetailSelectedCheckState(newSelectedState);\r\n props.parent.onDetailRowSelectionCallBack?.(newSelectedState, event.dataItems);\r\n },\r\n [detailSelectedCheckState]\r\n );\r\n const onPageChangeChildGrid = (event: GridPageChangeEvent) => {\r\n setChildGridPage(event.page);\r\n };\r\n return (\r\n <React.Fragment>\r\n <Grid data={orderBy(childGriddata, detailsort)?.map((item: any) =>\r\n ({ ...item, [props.parent.kendoGridProps.detailGrid.selectedField]: detailSelectedCheckState[detailIdGetter(item)] })).slice\r\n (childGridPage.skip, childGridPage.take + childGridPage.skip)}\r\n skip={childGridPage.skip}\r\n take={childGridPage.take}\r\n selectedField={props.parent.kendoGridProps.detailGrid.selectedField}\r\n dataItemKey={props.parent.kendoGridProps.detailGrid.dataItemKey}\r\n selectable={{\r\n enabled: true, drag: false, cell: false,\r\n mode: props.parent.kendoGridProps.detailGrid.selectionType === GridSelectionType.Mulitple ? 'multiple' : 'single',\r\n }}\r\n resizable={props.parent.kendoGridProps.detailGrid.resizable}\r\n sortable={props.parent.kendoGridProps.detailGrid.sortable}\r\n total={childGriddata?.length}\r\n pageable={props.parent.kendoGridProps.detailGrid.pageable}\r\n filterable={props.parent.kendoGridProps.detailGrid.filterable}\r\n onSelectionChange={onDetailGridSelectionChange}\r\n onHeaderSelectionChange={onDetailGridHeaderSelectionChange}\r\n onPageChange={onPageChangeChildGrid}\r\n onSortChange={(e: GridSortChangeEvent) => { setDetailSort(e.sort); }}\r\n >\r\n {props.parent.kendoGridProps.detailGrid.actionTypes?.showSelectAllCheckboxGridAction &&\r\n <GridColumn field={props.parent.kendoGridProps.detailGrid.selectedField}\r\n headerSelectionValue={\r\n props.childGridData.findIndex((item: any) => !detailSelectedCheckState[detailIdGetter(item)]) === -1\r\n }\r\n filterable={false} />\r\n }\r\n {props.parent.kendoGridProps.detailGrid.columns.map((col) => {\r\n if (col.isVisible)\r\n return <GridColumn\r\n key={col.key} field={col.apiField} title={col.columnTitle} width={col.width}\r\n editable={col.isEditable} sortable={col.allowSorting} filterable={col.allowFilter}\r\n editor={col.editorType} className={col.cssClass}\r\n />\r\n })}\r\n </Grid>\r\n </React.Fragment>\r\n )\r\n}\r\nexport default NextGenKendoChildGrid;\r\n","import { useState, useCallback, useEffect } from \"react\";\r\nimport {\r\n Grid, GridColumn, GridItemChangeEvent, GridCellProps, GridSelectionChangeEvent, GridHeaderSelectionChangeEvent,\r\n getSelectedState, GridPageChangeEvent, GridRowProps, GridFooterCellProps, GridSortChangeEvent, GridExpandChangeEvent,\r\n GridDetailRowProps, GridFilterChangeEvent, GridHeaderCellProps, GridToolbar, GridRowClickEvent, GridDataStateChangeEvent, GridGroupChangeEvent, GridFilterCell, GridColumnMenuFilter, GridNoRecords\r\n} from \"@progress/kendo-react-grid\";\r\nimport { orderBy, SortDescriptor, filterBy, CompositeFilterDescriptor, GroupDescriptor } from \"@progress/kendo-data-query\";\r\nimport { getter } from \"@progress/kendo-react-common\";\r\nimport { CellRender, RowRender } from \"./gridrenderers\";\r\nimport { DropdownFilterCell } from \"./dropDownFilterCell\";\r\nimport { IGridProps } from \"./IGridProps\"\r\nimport * as React from \"react\";\r\nimport { IPageState } from \"./IPageState\"\r\nimport { GridSelectionType } from \"./SelectionType\";\r\nimport { FontIcon, PrimaryButton } from \"@fluentui/react\";\r\nimport { _Styles } from \"../../../content/styles/Page.styles\";\r\nimport { IKendoGridColumnProps } from \"./IKendoGridColumnProps\";\r\nimport { ApplicationConstants } from \"../../../models/ApplicationConstants\";\r\nimport { MenuItems } from \"../verticalmenu/menuItems\";\r\nimport { JavaScriptExtensions } from \"../../../infrastructure/JavaScriptExtensions\";\r\nimport { FilterMenu } from \"./gridfilter\";\r\nimport { CssClassConstants } from \"../../../content/CssClassConstants\";\r\nimport { UIControlsText } from \"../../../content/UIControlsText\";\r\nimport { addExportExcelHeader, getUserRole, isNullOrEmpty, gridAccessibilityFix } from \"../common/util\";\r\nimport { ExcelExport, ExcelExportColumn, ExcelExportColumnGroup } from \"@progress/kendo-react-excel-export\";\r\nimport moment from \"moment\";\r\nimport { GridType } from \"../../../models/GridType\";\r\nimport NextGenKendoChildGrid from \"./nextgenkendochildgrid\";\r\nimport { IGridChildProps } from \"./IGridChildProps\";\r\nimport { DealType } from \"../../../models/DealType\";\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"../../../components/shared/common/util\";\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\nimport { useToAddRoleToGridColumnFilterButton, useToEnsureTabIndexSetForGridFilterButton, useToFixGridAriaRequiredChildren, useToHandleOpenColumnMenuOnKeyboardEnter } from \"../../../hooks/accessiblity-hooks\";\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings)\r\n/**\r\n * NextGenKendoGrid Component.\r\n * @function component\r\n */\r\nconst NextGenKendoGrid: React.FunctionComponent<IGridProps> = (props: IGridProps) => {\r\n const idGetter = getter(props.kendoGridProps.dataItemKey);\r\n const [selectedCheckState, setSelectedCheckState] = useState<{ [id: string]: boolean | number[]; }>({});\r\n const [detailSelectedCheckState, setDetailSelectedCheckState] = useState<{ [id: string]: boolean | number[]; }>({});\r\n const initialSort: Array<SortDescriptor> = [{ field: props.kendoGridProps.initialSortField, dir: \"asc\" }];\r\n const [sort, setSort] = useState(initialSort);\r\n const [editField, setEditField] = useState<string | undefined>(undefined);\r\n const [griddata, setGridData] = useState<any[]>([]);\r\n const [gridCount, setGridCount] = useState<number>(props.kendoGridProps.totalRecords);\r\n const initialDataState: IPageState = { skip: 0, take: props.kendoGridProps.noOfRecords };\r\n const [page, setPage] = useState<IPageState>(initialDataState);\r\n const initialFilter: CompositeFilterDescriptor = { logic: \"and\", filters: [] }\r\n const [filter, setFilter] = useState(initialFilter);\r\n const [gridWidth, setGridWidth] = useState(\"auto\");\r\n const [userRoles] = useState<string>(getUserRole());\r\n const [toggleText, setToggleExpandCollapse] = useState<string>(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandAll\", UIControlsText.ExpandAll));\r\n var date = moment()\r\n .utcOffset('+05:30')\r\n .format('MM-DD-YYYY');\r\n\r\n useEffect(() => {\r\n props.resetPaginationToDefault && setPage(props.resetPaginationToDefault)\r\n }, [props.resetPaginationToDefault])\r\n\r\n useEffect(() => {\r\n (function(){\r\n var gridCheckbox = document.querySelectorAll('.k-checkbox');\r\n gridCheckbox.forEach((element) => {\r\n element.setAttribute('aria-label', 'checkbox');\r\n });\r\n })();\r\n })\r\n\r\n //listening the props change and reset griddata state\r\n useEffect(() => {\r\n if (props.kendoGridProps.defaultMainGridSelectionstate) {\r\n setSelectedCheckState(props.kendoGridProps.defaultMainGridSelectionstate);\r\n }\r\n SetGridWidth();\r\n if (!props.showFilterTextBox) {\r\n setFilter(initialFilter);\r\n setGridData(props.kendoGridProps.data);\r\n } else {\r\n setGridData(filterBy(props.kendoGridProps.data || [], filter));\r\n }\r\n setGridCount(isNullOrEmpty(props.kendoGridProps.totalRecords) ? props.kendoGridProps.data?.length : props.kendoGridProps.totalRecords);\r\n window.addEventListener('resize', SetGridWidth);\r\n setToggleExpandCollapse(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandAll\", UIControlsText.ExpandAll));\r\n }, [props.kendoGridProps.data, props.kendoGridProps.defaultMainGridSelectionstate])\r\n\r\n useEffect(() => {\r\n if (props.kendoGridProps.defaultDetailGridSelectionstate) {\r\n setDetailSelectedCheckState(props.kendoGridProps.defaultDetailGridSelectionstate);\r\n }\r\n }, [props.kendoGridProps.defaultDetailGridSelectionstate]);\r\n\r\n //Fixing Accessibility for noRecords, sortIcons, GridPagerBtns & gridFootercell\r\n useEffect(() => {\r\n gridAccessibilityFix();\r\n });\r\n\r\n //customize the cell to render of selected legal grid\r\n const customCellRender: any = (td: React.ReactElement<HTMLTableCellElement>, props: GridCellProps) => (\r\n <CellRender originalProps={props} td={td} enterEdit={enterEditonSelectedData} editField={editField} />\r\n );\r\n //customize the row to render of selected legal grid\r\n const customRowRender: any = (tr: React.ReactElement<HTMLTableRowElement>, props: GridRowProps) => {\r\n return (\r\n <RowRender originalProps={props} tr={tr} exitEdit={exitEditonSelectedData} editField={editField} />\r\n )\r\n };\r\n //Editable cell creation on selecte Legals - on typing editable cell update value from user\r\n const onItemChange = (e: GridItemChangeEvent) => {\r\n let field = e.field || \"\";\r\n let intValue = 0\r\n let colProps = props.kendoGridProps.columns.filter((col: IKendoGridColumnProps) => {\r\n if (col.apiField === field)\r\n return col.editorType;\r\n })[0] as IKendoGridColumnProps;\r\n if (colProps) {\r\n if (colProps.editorType === ApplicationConstants.NumericEditorType && e.value < 0) {\r\n return;\r\n }\r\n }\r\n intValue = Math.floor(e.value)\r\n e.dataItem[field] = intValue;\r\n let newData = griddata.map((item: any) => {\r\n if (item.id === e.dataItem.id) {\r\n item[field] = intValue;\r\n }\r\n return item;\r\n });\r\n props.kendoGridProps.data = [...newData];\r\n setGridData(newData);\r\n };\r\n //--event for checkbox header selection in the search grid: when header checked all the child checkbox will be checked\r\n const onHeaderSelectionChange = useCallback(\r\n (event: GridHeaderSelectionChangeEvent) => {\r\n if (props.disableSelectAllCheckbox) {\r\n return;\r\n }\r\n const checkboxElement: any = event.syntheticEvent.target\r\n const checked = checkboxElement.checked;\r\n const newSelectedState: any = {};\r\n event.dataItems.forEach(item => {\r\n newSelectedState[idGetter(item)] = checked;\r\n });\r\n setSelectedCheckState(newSelectedState);\r\n props.onRowSelectionCallBack?.(newSelectedState);\r\n }, []);\r\n //event to trigger on change of checkbox in the grid\r\n const onSelectionChange = useCallback(\r\n (event: GridSelectionChangeEvent) => {\r\n if (event.dataItem.editMode) {\r\n return;\r\n }\r\n const newSelectedState = getSelectedState({\r\n event,\r\n selectedState: selectedCheckState,\r\n dataItemKey: props.kendoGridProps.dataItemKey,\r\n });\r\n setSelectedCheckState(newSelectedState);\r\n //to enable check uncheck based on config, when multiple\r\n if (event.syntheticEvent !== undefined) {\r\n const checkboxElement: any = event.syntheticEvent.target\r\n const checked = checkboxElement.checked;\r\n if (props.kendoGridProps.selectionType === GridSelectionType.Single) {\r\n event.dataItems.forEach(item => {\r\n if (event.dataItem[props.kendoGridProps.dataItemKey] === item[props.kendoGridProps.dataItemKey]) {\r\n newSelectedState[idGetter(item)] = checked\r\n } else {\r\n newSelectedState[idGetter(item)] = false;\r\n }\r\n });\r\n props.onPrimarySelectionCallBack?.(event.dataItem, checked);\r\n }\r\n }\r\n props.onRowSelectionCallBack?.(newSelectedState);\r\n },\r\n [selectedCheckState]\r\n )\r\n //--- Start of hierarchal grid ---//\r\n const expandChange = (event: GridExpandChangeEvent) => {\r\n event.dataItem.expanded = event.value;\r\n setGridData([...griddata]);\r\n\r\n if (!event.value || event.dataItem.details) {\r\n return;\r\n }\r\n //populate data here on expand\r\n let data: any = griddata.slice();\r\n let index = data.findIndex((row: any) => row[props.kendoGridProps.groupByColumn] === event.dataItem[props.kendoGridProps.groupByColumn]);\r\n data[index].details = props.kendoGridProps.masterData?.filter((item: any) => item[props.kendoGridProps.groupByColumn] === event.dataItem[props.kendoGridProps.groupByColumn]);//sub grid value goes here\r\n setGridData(data);\r\n };\r\n\r\n const DetailComponent = useCallback(\r\n (childprops: GridDetailRowProps) => {\r\n var childData = childprops.dataItem.details ? childprops.dataItem.details : [];\r\n let childGridProps: IGridChildProps = {\r\n parent: props,\r\n childGridData: childData,\r\n defaultChildGridSelectionstate: detailSelectedCheckState\r\n }\r\n return (\r\n <React.Fragment>\r\n <NextGenKendoChildGrid {...{ ...childGridProps }} />\r\n </React.Fragment>\r\n );\r\n }, [detailSelectedCheckState]\r\n );\r\n //--- End of hierarchal grid ---//\r\n //event to trigger on page change on pagination\r\n const pageChange = (event: GridPageChangeEvent) => {\r\n props.onPageChange?.(event);\r\n setPage(event.page);\r\n };\r\n\r\n //--Start of Inline Edit Grid Functionality --//\r\n //on click of row enable editing\r\n const enterEditonSelectedData = (dataItem: any, field: string) => {\r\n if(field.match('unitsCommitted')){\r\n const newData = griddata.map((item: any) => ({\r\n ...item,\r\n inEdit: item.id === dataItem.id ? field : undefined,\r\n }));\r\n setGridData(newData);\r\n setEditField(field);\r\n }\r\n else if(dataItem.hasOwnProperty('isUploadedRecord')){\r\n if(dataItem.isUploadedRecord){\r\n const newData = griddata.map((item: any) => ({\r\n ...item,\r\n inEdit: item.id === dataItem.id ? field : undefined,\r\n }));\r\n setGridData(newData);\r\n setEditField(field);\r\n }\r\n }\r\n else{\r\n const newData = griddata.map((item: any) => ({\r\n ...item,\r\n inEdit: item.id === dataItem.id ? field : undefined,\r\n }));\r\n setGridData(newData);\r\n setEditField(field);\r\n }\r\n };\r\n \r\n const exitEditonSelectedData = () => {\r\n let editedItem = griddata.filter((item: any) => (item.inEdit != undefined));\r\n\r\n if (props.kendoGridProps.editField) {\r\n const newData = griddata.map((item: any) => ({ ...item, inEdit: undefined }));\r\n setGridData(newData);\r\n setEditField(undefined);\r\n }\r\n props.onEditCallBack?.(editedItem[0]);\r\n };\r\n //--End of Inline Edit Grid Functionality --//\r\n\r\n //--Start of Delete Row in Grid Functionality --//\r\n const gridDeleteCell = (props: GridCellProps) => (<DeleteCell {...props} remove={removeSelectedRow} />);\r\n //method to render delete icon in grid component\r\n const DeleteCell = (props: { editField?: any; remove?: any; dataItem?: any }) => {\r\n const { dataItem } = props;\r\n return dataItem.editMode ? (<td className=\"k-command-cell\" role=\"gridcell\"></td>) : (\r\n <td >\r\n <FontIcon aria-label={CssClassConstants.DeleteIconName} iconName={CssClassConstants.DeleteIconName} className={_Styles.DeleteRow} onClick={() =>\r\n props.remove(dataItem)\r\n }>\r\n </FontIcon>\r\n </td>\r\n );\r\n };\r\n //callback method for removing selected row from grid on delete button click\r\n const removeSelectedRow = (deletedRowData: any) => {\r\n if (!deletedRowData.editMode) {\r\n const newList = griddata.filter((item) => item.id !== deletedRowData.id);\r\n props.kendoGridProps.data = [...newList];\r\n setGridData([...newList]);\r\n if (props.onDeleteCallBack) {\r\n props.onDeleteCallBack(deletedRowData, newList);\r\n }\r\n }\r\n };\r\n //--End of Delete Row in Grid Functionality --//\r\n // --Start of Download Row in Grid Functionality--//\r\n const gridDownloadCell = (props: GridCellProps) => (<DownloadCell {...props} />);\r\n const DownloadCell = (props: { editField?: any; download?: any; dataItem?: any }) => {\r\n const { dataItem } = props;\r\n var gridContent = \"data:application/pdf;base64,\" + dataItem.content\r\n return dataItem.editMode ? (<td className=\"k-command-cell\" role=\"gridcell\"></td>) : (\r\n <td >\r\n <a download={dataItem.name} href={gridContent}>\r\n <FontIcon aria-label={CssClassConstants.DownloadIconName}\r\n iconName={CssClassConstants.DownloadIconName}\r\n className={_Styles.DeleteRow} ></FontIcon>\r\n </a>\r\n\r\n </td>\r\n );\r\n };\r\n\r\n // --End of Download Row in Grid Functionality--//\r\n\r\n //to calculate total of column in footer cell\r\n const footerCellwithTotal = (footerprops: GridFooterCellProps) => {\r\n const field = footerprops.field || \"\";\r\n var findItem = props.kendoGridProps.columns.find(x => x.apiField === field);\r\n var showFooter = false;\r\n if (findItem !== undefined) {\r\n showFooter = findItem.showFooter;\r\n }\r\n if (showFooter) {\r\n const total = griddata?.reduce((prev: number, current: { [x: string]: any }) => {\r\n return current[field] ? prev + Number(current[field]) : prev\r\n }, 0);\r\n return (<td colSpan={footerprops.colSpan} style={footerprops.style}> {findItem?.footerTitle} {total}</td>);\r\n }\r\n return (<td></td>);\r\n };\r\n const addNew = () => {\r\n const newDataItem = {\r\n inEdit: true,\r\n Discontinued: false,\r\n isUploadedRecord: true,\r\n customerType: 2,\r\n };\r\n props.kendoGridProps.data = [newDataItem, ...griddata]\r\n setGridData([newDataItem, ...griddata]);\r\n };\r\n const mandatoryHeaderCell = (props: GridHeaderCellProps) =>\r\n <span className=\"k-link\" title={props.title}>\r\n {props.title} <span className={\"gridmandatoryField\"}>*</span>\r\n </span>\r\n const HeaderCell = (props: GridHeaderCellProps) =>\r\n <span className=\"k-link\" title={props.title}>\r\n {props.title}\r\n </span>\r\n\r\n const allowView = (config: any) => {\r\n return (config?.allowColumnView?.length == 0 ? true : config?.allowColumnView?.some((r: any) => userRoles.includes(r)) ? true : false)\r\n && (config.isVisible == null || config.isVisible ? true : false);\r\n }\r\n const VerticalMenuCell = (menuprops: { dataItem?: any; }) => {\r\n const { dataItem } = menuprops;\r\n return <td >\r\n <MenuItems dashBoardConfig={props.kendoGridProps} dashBoardData={menuprops}\r\n selectedData={dataItem} ></MenuItems>\r\n </td >\r\n };\r\n const gridErrorCell = (props: GridCellProps) => (<ErrorCell {...props} />);\r\n \r\n const ErrorCell = (props: { editField?: any; remove?: any; dataItem?: any }) => {\r\n const { dataItem } = props;\r\n return dataItem.editMode ? (<td className=\"k-command-cell\" role=\"gridcell\"></td>) : (\r\n <td >\r\n <p className=\"error-msg\"> {dataItem.errors}</p>\r\n <p className=\"warning-msg\"> {dataItem.warnings}</p>\r\n </td>\r\n );\r\n };\r\n\r\n //method to update grid data and count based on filter from context menu of grid column\r\n const filterChange = (e: GridFilterChangeEvent) => {\r\n setFilter(e.filter)\r\n if (e.filter) {\r\n if (e.filter.filters.length >= 1) {\r\n setGridCount(filterBy(props.kendoGridProps.data || [], e.filter).length);\r\n setGridData(filterBy(props.kendoGridProps.data || [], e.filter));\r\n }\r\n else {\r\n setGridCount(filterBy(griddata || [], e.filter).length);\r\n setGridData(filterBy(griddata || [], e.filter));\r\n }\r\n }\r\n else {\r\n setGridCount(props.kendoGridProps.totalRecords);\r\n setGridData(props.kendoGridProps.data);\r\n }\r\n };\r\n\r\n\r\n const clearGridData = () => {\r\n props.kendoGridProps.data = []\r\n setGridData([]);\r\n if (props.onDeleteCallBack) {\r\n props.onDeleteCallBack({}, []);\r\n }\r\n };\r\n const SetGridWidth = () => {\r\n if (JavaScriptExtensions.isEmptyOrNullOrUndefined(props.kendoGridProps.width)) {\r\n setGridWidth(\"auto\");\r\n } else if (props.kendoGridProps.width === \"0\") {\r\n let headerElement = document.getElementsByClassName(\"headerStyle\");\r\n let width = headerElement.length > 0 ? headerElement[0].clientWidth + \"px\" : \"auto\";\r\n setGridWidth(width);\r\n }\r\n }\r\n\r\n //method to download grid data in to excel file\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n const excelExport = () => {\r\n if (_export.current !== null) {\r\n if (props.kendoGridProps.gridName !== GridType.LegalEntityUpload) {\r\n addExportExcelHeader(_export, props);\r\n }\r\n else {\r\n _export.current.save();\r\n }\r\n }\r\n };\r\n\r\n const CategoryFilterCell = (filterProps: any) => (\r\n <DropdownFilterCell\r\n {...filterProps}\r\n data={props.dropDownFilterContent}\r\n defaultItem={filterProps.defaultItem}\r\n />\r\n );\r\n //Generates the grid columns for the childcolumns of a single column\r\n const getChildColumns = (kendoGridChildColumns: IKendoGridColumnProps[]) => {\r\n if (kendoGridChildColumns === undefined) {\r\n return [];\r\n }\r\n const tempKendoGridColumnsProps = kendoGridChildColumns.map((col) => {\r\n return <GridColumn\r\n key={col.key} field={col.apiField} title={col.columnTitle} width={col.width}\r\n editable={col.isEditable} sortable={col.allowSorting} filterable={col.allowFilter} />\r\n });\r\n return tempKendoGridColumnsProps\r\n }\r\n const getColumns = (col: IKendoGridColumnProps, error: string) => {\r\n if (col === undefined) {\r\n return [];\r\n }\r\n if (col.childColumns && col.childColumns.length > 0) {\r\n return <GridColumn\r\n title={col.columnTitle} children={getChildColumns(col.childColumns)}\r\n />\r\n }\r\n else {\r\n if (error !== \"errors\") {\r\n return <GridColumn\r\n key={col.key} field={col.apiField} title={col.columnTitle} width={col.width}\r\n editable={col.isEditable} sortable={col.allowSorting} filterable={col.allowFilter}\r\n editor={col.editorType} className={col.cssClass} footerCell={footerCellwithTotal}\r\n format={col.editorFormat} columnMenu={col.allowFilter ? FilterMenu : undefined}\r\n children={getChildColumns(col.childColumns)} headerClassName={isColumnActive(col.apiField) ? CssClassConstants.ActiveClass : \"\"}\r\n filterCell={col.categoryFilterCell ? CategoryFilterCell : GridFilterCell}\r\n headerCell={col.mandatoryField ? mandatoryHeaderCell : HeaderCell}\r\n cell={col.isCustomCell ? gridRenderCustomCell : undefined}\r\n />\r\n }\r\n else {\r\n return <GridColumn\r\n key={col.key} field={col.apiField} title={col.columnTitle} width={col.width}\r\n editable={col.isEditable} sortable={col.allowSorting} filterable={col.allowFilter}\r\n className={col.cssClass} cell={gridErrorCell}\r\n children={getChildColumns(col.childColumns)}\r\n filterCell={col.categoryFilterCell ? CategoryFilterCell : GridFilterCell}\r\n headerCell={col.mandatoryField ? mandatoryHeaderCell : HeaderCell}\r\n />\r\n }\r\n\r\n }\r\n }\r\n\r\n //Toggle Grid Data (Expand All and Collapse All)\r\n const toggleExpand = () => {\r\n setToggleExpandCollapse(toggleText === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandAll\", UIControlsText.ExpandAll) ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CollapseAll\", UIControlsText.CollapseAll) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandAll\", UIControlsText.ExpandAll));\r\n let toggleData = griddata.map(eachRowItem => {\r\n eachRowItem.details = props.kendoGridProps.masterData?.filter((eachRecord: any) => eachRecord[props.kendoGridProps.groupByColumn] === eachRowItem[props.kendoGridProps.groupByColumn]);\r\n if (isNullOrEmpty(eachRowItem.expanded)) {\r\n eachRowItem.expanded = true;\r\n }\r\n else {\r\n eachRowItem.expanded = toggleText === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandAll\", UIControlsText.ExpandAll) ? true : false;\r\n }\r\n return eachRowItem;\r\n });\r\n setGridData(toggleData);\r\n };\r\n\r\n const isColumnActive = (field: string) => {\r\n return (\r\n GridColumnMenuFilter.active(field, filter)\r\n );\r\n }\r\n const gridRenderCustomCell = (selectedRowData: any) => (\r\n props.onCustomCellRenderCallBack ? props.onCustomCellRenderCallBack(selectedRowData) : \"\"\r\n );\r\n const addNewPanel = () => {\r\n if (props.onAddNewPanelCallBack) {\r\n props.onAddNewPanelCallBack();\r\n }\r\n };\r\n const getAddNewButtonText = () => {\r\n if (props.kendoGridProps.addNewButtonText) {\r\n return props.kendoGridProps.addNewButtonText;\r\n }\r\n else {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddNew\", UIControlsText.AddNew);\r\n }\r\n }\r\n const customNoErrorMessage=() =>{\r\n if(props.customNoRecordsErrorMessage !== undefined){\r\n return props.customNoRecordsErrorMessage();\r\n }\r\n else if(props.kendoGridProps.noRecordsCustomMessage !== undefined) {\r\n return props.kendoGridProps.noRecordsCustomMessage\r\n }\r\n else {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoRecordsAvailableText\", UIControlsText.NoRecordsAvailableText);\r\n }\r\n }\r\n\r\n const handleDealTypeAbbreviation = (dealtype?:string) => {\r\n switch(dealtype){\r\n case DealType.SpecialPricing:\r\n return \"SP\";\r\n case DealType.DealRegistration:\r\n return \"DR\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n const handleExportFileName = () =>{\r\n var gridName = props.kendoGridProps.gridName;\r\n var fileName = gridName + \" \" + date;\r\n var dealtypeString = props.kendoGridProps.dealType;\r\n\r\n var dash = \" - \";\r\n if(gridName === GridType.DRSPExpandView){\r\n return props.kendoGridProps.caseNumber + dash + handleDealTypeAbbreviation(dealtypeString) + dash + \"Expanded View \" + date;\r\n }else if(gridName === GridType.DRSPCompactView){\r\n return props.kendoGridProps.caseNumber + dash + handleDealTypeAbbreviation(dealtypeString) + dash + \"Compact View \" + date;\r\n }else if(gridName === GridType.BUView){\r\n return props.kendoGridProps.caseNumber + dash + handleDealTypeAbbreviation(dealtypeString) + dash + \"BU View \" + date;\r\n }\r\n\r\n return fileName;\r\n }\r\n\r\n useToAddRoleToGridColumnFilterButton();\r\n useToHandleOpenColumnMenuOnKeyboardEnter();\r\n useToFixGridAriaRequiredChildren('#mdppAccessibilityNextGenGridContainer');\r\n\r\n return (\r\n <React.Fragment>\r\n <ExcelExport data={griddata} fileName={handleExportFileName()} ref={_export}>\r\n {props.kendoGridProps.columns.map((col) => {\r\n if (allowView(col)) {\r\n if (col.childColumns && col.childColumns.length > 1) {\r\n return (<ExcelExportColumnGroup title={col.columnTitle} width={parseInt(col.width)} headerCellOptions={{ textAlign: \"left\" }}>\r\n {col.childColumns.map((item) => {\r\n return <ExcelExportColumn field={item.apiField} title={item.columnTitle} />\r\n })}\r\n </ExcelExportColumnGroup>)\r\n } else if (col.childColumns && col.childColumns.length === 1) {\r\n return (\r\n <ExcelExportColumn field={col.apiField} title={col.columnTitle + \" - \" + col.childColumns[0].columnTitle} width={parseInt(col.width)} />\r\n );\r\n } else {\r\n return (\r\n <ExcelExportColumn field={col.apiField} title={col.columnTitle} width={parseInt(col.width)} />\r\n );\r\n }\r\n }\r\n })}\r\n </ExcelExport>\r\n <div id=\"mdppAccessibilityNextGenGridContainer\">\r\n {(props.kendoGridProps.actionTypes?.showAddNewRowGridAction ||\r\n props.kendoGridProps.actionTypes?.showClearAllGridAction ||\r\n props.kendoGridProps.actionTypes?.showDownloadExcelGridAction ||\r\n props.kendoGridProps.actionTypes?.showExpandCollapseGridAction ||\r\n props.kendoGridProps.actionTypes?.showAddNewPanelGridAction ||\r\n !isNullOrEmpty(props.kendoGridProps.gridDisplayName)) &&\r\n <GridToolbar >\r\n <div id=\"gridTitle\">\r\n {props.kendoGridProps.gridDisplayName}\r\n </div>\r\n <div className=\"ms-auto\">\r\n {\r\n props.kendoGridProps.actionTypes?.showAddNewRowGridAction &&\r\n <PrimaryButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddNew\", UIControlsText.AddNew)} onClick={addNew} className=\"me-2\" />\r\n }\r\n {props.kendoGridProps.actionTypes?.showAddNewPanelGridAction &&\r\n <PrimaryButton text={getAddNewButtonText()} onClick={addNewPanel} className=\"me-2\" />\r\n }\r\n {props.kendoGridProps.actionTypes?.showDownloadExcelGridAction && props.kendoGridProps.data?.length > 0 &&\r\n <PrimaryButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DownloadExcel\", UIControlsText.DownloadExcel)} onClick={excelExport} className=\"me-2\" />\r\n }\r\n {props.kendoGridProps.actionTypes?.showClearAllGridAction && props.kendoGridProps.data?.length > 0 &&\r\n <PrimaryButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ClearAll\", UIControlsText.ClearAll)} onClick={clearGridData} className=\"me-2\" />\r\n }\r\n {props.kendoGridProps.actionTypes?.showExpandCollapseGridAction && props.kendoGridProps.data?.length > 0 &&\r\n <PrimaryButton text={toggleText} onClick={toggleExpand} className=\"me-2\" />\r\n }\r\n </div>\r\n </GridToolbar>\r\n }\r\n <Grid\r\n data={props.kendoGridProps.expandField !== \"\" ?\r\n orderBy(griddata?.slice(page.skip, page.take + page.skip) || [], sort) :\r\n props.kendoGridProps.isServerSideGrid ?\r\n orderBy(griddata?.map(item => ({ ...item, [props.kendoGridProps.selectedField]: selectedCheckState[idGetter(item)] })) || [], sort) :\r\n orderBy(griddata?.map(item => ({ ...item, [props.kendoGridProps.selectedField]: selectedCheckState[idGetter(item)] })).slice(page.skip, page.take + page.skip) || [], sort)\r\n }\r\n skip={page.skip}\r\n take={page.take}\r\n dataItemKey={props.kendoGridProps.dataItemKey}\r\n selectedField={props.kendoGridProps.selectedField}\r\n selectable={{\r\n enabled: false, drag: false, cell: false,\r\n mode: props.kendoGridProps.selectionType === GridSelectionType.Mulitple ? 'multiple' : 'single'\r\n }}\r\n resizable={props.kendoGridProps.resizable}\r\n sortable={props.kendoGridProps.sortable}\r\n sort={sort}\r\n pageable={props.kendoGridProps.pageable}\r\n filter={filter}\r\n filterable={props.showFilterTextBox ? true : false}\r\n onFilterChange={filterChange}\r\n onItemChange={onItemChange}\r\n onSelectionChange={props.kendoGridProps.editMode ? undefined : onSelectionChange}\r\n onHeaderSelectionChange={props.kendoGridProps.selectionType === GridSelectionType.Mulitple ? onHeaderSelectionChange : undefined}\r\n onPageChange={pageChange}\r\n onSortChange={(e: GridSortChangeEvent) => { setSort(e.sort); }}\r\n total={gridCount}\r\n className={props.kendoGridProps.className}\r\n cellRender={customCellRender}\r\n rowRender={props.kendoGridProps.actionTypes?.showGridContextMenuAction ? null : customRowRender}\r\n editField={props.kendoGridProps.editField}\r\n onExpandChange={expandChange}\r\n expandField={props.kendoGridProps.expandField}\r\n detail={props.kendoGridProps.masterData ? DetailComponent : null}\r\n style={{ width: gridWidth }}\r\n navigatable={true}\r\n >\r\n \r\n {props.kendoGridProps.actionTypes?.showGridContextMenuAction &&\r\n <GridColumn cell={VerticalMenuCell} filterable={false} width=\"40px\" />\r\n }\r\n {props.kendoGridProps.actionTypes?.showSelectAllCheckboxGridAction &&\r\n <GridColumn field={props.kendoGridProps.selectedField} filterable={false}\r\n headerSelectionValue={\r\n griddata?.findIndex((item: any) => !selectedCheckState[idGetter(item)]) === -1\r\n } />\r\n }\r\n {props.kendoGridProps.columns.map((col) => {\r\n if (allowView(col)) {\r\n return getColumns(col, col.key)\r\n }\r\n })}\r\n {props.kendoGridProps.additionalColumns?.map((col) => {\r\n if (col.isVisible) {\r\n return <GridColumn field={col.apiField} key={col.key} title={col.columnTitle}\r\n headerCell={mandatoryHeaderCell} filterable={col.allowFilter} width={col.width} className={col.cssClass}\r\n />\r\n }\r\n })}\r\n {props.kendoGridProps.actionTypes?.showRowDeleteGridAction &&\r\n <GridColumn cell={gridDeleteCell} title=\"Actions\" filterable={false} />\r\n }\r\n {props.kendoGridProps.actionTypes?.showRowDownloadGridAction &&\r\n <GridColumn cell={gridDownloadCell} title=\"Actions\" filterable={false} />\r\n }\r\n {props.kendoGridProps.noRecordsCustomMessage &&\r\n <GridNoRecords>\r\n <div dangerouslySetInnerHTML={{ __html: customNoErrorMessage() }}> \r\n </div>\r\n </GridNoRecords>\r\n }\r\n </Grid>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\nexport default NextGenKendoGrid;","import React, { useState,useEffect, useRef } from \"react\";\r\nimport { Stack, IStackTokens, PrimaryButton, Spinner } from \"@fluentui/react\";\r\nimport { defaultColumnProps, stackGridStyles, _Styles } from \"../../content/styles/Page.styles\";\r\nimport NextGenKendoGrid from \"../../components/shared/grid/nextgenkendogrid\";\r\nimport { IGridProps } from \"../../components/shared/grid/IGridProps\";\r\nimport { getLoggedinUserRoleDetails, getURLParamValue, readGridConfig, getEntityDataFromSession, getRuleValidationMessage } from \"../../components/shared/common/util\";\r\nimport { GridType } from \"../../models/GridType\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { useHistory } from \"react-router\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { ApplicationConstants } from \"../../models/ApplicationConstants\";\r\nimport { IUserRoleDetail } from \"../../models/IUserRoleDetail\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { IAccount } from \"../../models/IAccount\";\r\nimport _ from \"lodash\";\r\nimport { ICountry } from \"../../models/ICountry\";\r\nimport { SessionStorageConsts } from '../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { useToSetFocusToHeader as mdppAccessibilityToSetFocusToHeader } from \"../../hooks/accessiblity-hooks\";\r\nimport { useToSetRoleToLoadingMessage as mdppAccessibilityToSetRoleToLoadingMessage } from \"../../hooks/accessiblity-hooks\";\r\n\r\nconst stackTokens: IStackTokens = { childrenGap: 24 };\r\nexport const ViewResellers: React.FunctionComponent = () => {\r\n const [isResellerLoading, setIsResellerLoading] = useState<boolean>(false);\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n let history = useHistory();\r\n let location:any = useLocation();\r\n let country:any = null;\r\n let isEUEFTA:any = null;\r\n const closeBTn = () => {\r\n let currentUrl = window.location.href\r\n if (currentUrl.includes(\"oppNumber\")) {\r\n let prevNavigation = location.state.mdppAccessibilityNavigation;\r\n let isFromChannelTab = prevNavigation && prevNavigation === \"from channel tab grid link\";\r\n\r\n if(isFromChannelTab){\r\n location.state.mdppAccessibilityNavigation = \"back to channel tab\";\r\n }\r\n\r\n history.push(\"/managecase/cpstrategic?oppNumber=\" + getURLParamValue(ApplicationConstants.OpportunityNumberParamName), location.state);\r\n }else{\r\n history.push(\"/dashboard\");\r\n }\r\n }\r\n if(location.state !== undefined){\r\n country = location.state.countryName.country;\r\n isEUEFTA = location.state.isEUEFTA.isEUEFTA;\r\n }\r\n\r\n const [viewResellerConfig, setviewResellerConfig] =\r\n useState<IGridProps>(readGridConfig(GridType.ViewResellers));\r\n const resellerAccounts = useRef<IAccount[]>([]);\r\n useEffect(() => {\r\n (async () => {\r\n setIsResellerLoading(true);\r\n const oppNumber = getURLParamValue(ApplicationConstants.OpportunityNumberParamName);\r\n let resellerCountries:string[] = [];\r\n let opportunityProducytype: string = \"00000000-0000-0000-0000-000000000000\";\r\n if(oppNumber !== null && oppNumber.length > 0){\r\n let allCountriesInSession: ICountry[] = JSON.parse(sessionStorage.getItem(SessionStorageConsts.countries) || '{}'); \r\n opportunityProducytype = JSON.parse(sessionStorage.getItem(SessionStorageConsts.opportunityProductType) || '{}');\r\n if(isEUEFTA == null || !isEUEFTA)\r\n { \r\n if(country != undefined && country.length > 0){\r\n let selectedCountry: ICountry[] = allCountriesInSession.filter(con => con.countryName === country); \r\n resellerCountries = selectedCountry.map(function(con) { return con.countryId}).join(',').split(\",\"); \r\n }\r\n }\r\n else\r\n {\r\n let isEUEFTACountries: ICountry[] = allCountriesInSession.filter(country => country.isEUEFTA==true); \r\n resellerCountries = isEUEFTACountries.map(function(country) { return country.countryId}).join(',').split(\",\"); \r\n } \r\n }\r\n else\r\n {\r\n \r\n const userRoleDetails : IUserRoleDetail[]= getLoggedinUserRoleDetails();\r\n resellerCountries = userRoleDetails.map(function(userRoleDetail) { return userRoleDetail.countryId}).join(',').split(\",\");\r\n }\r\n if(resellerCountries.filter(country => country !== \"\" && country !== null).length > 0){\r\n let response = await Promise.resolve(nextGenService.getAllActiveResellersByProductCountriesAndType(opportunityProducytype, resellerCountries));\r\n if (response.status === 200) {\r\n resellerAccounts.current = resellerAccounts.current.concat(response.data);\r\n resellerAccounts.current = _.uniqBy(resellerAccounts.current, 'accountId');\r\n setIsResellerLoading(false);\r\n }\r\n }\r\n else\r\n {\r\n setIsResellerLoading(false);\r\n }\r\n let resellerConfig = { ...viewResellerConfig };\r\n resellerConfig.kendoGridProps.data = resellerAccounts.current;\r\n resellerConfig.kendoGridProps.totalRecords = resellerAccounts.current.length;\r\n setviewResellerConfig({ ...viewResellerConfig });\r\n })();\r\n }, []);\r\n\r\n mdppAccessibilityToSetFocusToHeader();\r\n mdppAccessibilityToSetRoleToLoadingMessage();\r\n \r\n return (\r\n <>\r\n <h1 tabIndex={-1}> {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ViewReseller\", UIControlsText.ViewReseller)}</h1>\r\n {isResellerLoading &&\r\n <Stack {...defaultColumnProps}>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingReseller\", UIControlsText.LoadingReseller)} />\r\n </div>\r\n </Stack>\r\n }\r\n <Stack horizontal tokens={stackTokens} styles={stackGridStyles}>\r\n\r\n <NextGenKendoGrid \r\n {...{\r\n kendoGridProps: { ...viewResellerConfig.kendoGridProps }\r\n }}\r\n />\r\n </Stack>\r\n <PrimaryButton\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n onClick={closeBTn}\r\n />\r\n </>\r\n\r\n )\r\n}\r\n\r\nfunction productTypes(productTypes: any) {\r\n throw new Error(\"Function not implemented.\");\r\n}\r\n","/**\r\n * Enum for Contact Roles.\r\n * @readonly\r\n * @enum {Enum}\r\n */\r\n\r\n export enum ContactRoles {\r\n /**\r\n * Account Executive.\r\n */\r\n AccountExecutive = 1,\r\n /**\r\n * Account Technology Strategist.\r\n */\r\n AccountTechnologyStrategist = 2,\r\n /**\r\n * M365 Devices GBB.\r\n */\r\n M365DevicesGBB = 3,\r\n /**\r\n * Surface BG Lead.\r\n */\r\n SurfaceBGLead = 4,\r\n /**\r\n * Surface CE.\r\n */\r\n SurfaceCE = 5,\r\n /**\r\n * Surface CSM.\r\n */\r\n SurfaceCSM= 6,\r\n /**\r\n * Surface Specialist.\r\n */\r\n SurfaceSpecialist = 7,\r\n /**\r\n * Surface PCMM.\r\n */\r\n SurfacePCMM = 8,\r\n /**\r\n * Surface PDM .\r\n */\r\n SurfacePDM = 9,\r\n /**\r\n * Surface PDM Lead.\r\n */\r\n SurfacePDMLead = 10,\r\n /**\r\n * Surface PMM.\r\n */\r\n SurfacePMM = 11,\r\n /**\r\n * Others.\r\n */\r\n Others = 12,\r\n};","/**\r\n * Enum for UI ControlType.\r\n * @readonly\r\n * @enum {UIControlType}\r\n */\r\nexport enum UIControlType {\r\n /// <summary>\r\n /// MessageBar\r\n /// </summary>\r\n MessageBar = \"MessageBar\",\r\n\r\n /// <summary>\r\n /// Label\r\n /// </summary>\r\n Label = \"Label\",\r\n\r\n /// <summary>\r\n /// SubHeading\r\n /// </summary>\r\n SubHeading = \"SubHeading\",\r\n\r\n /// <summary>\r\n /// LabelValueView\r\n /// </summary>\r\n LabelValueView = \"LabelValueView\",\r\n \r\n /// <summary>\r\n /// PanelBarItemWithGrid\r\n /// </summary>\r\n PanelBarItemWithGrid = \"PanelBarItemWithGrid\",\r\n\r\n /// <summary>\r\n /// Text\r\n /// </summary>\r\n Text = \"Text\",\r\n\r\n /// <summary>\r\n /// HoverCard\r\n /// </summary>\r\n HoverCardPlain = \"HoverCardPlain\",\r\n\r\n /// <summary>\r\n /// Panel\r\n /// </summary>\r\n Panel = \"Panel\",\r\n\r\n /// <summary>\r\n /// customer Table\r\n /// </summary>\r\n CustomerTable = \"CustomerTable\",\r\n\r\n /// <summary>\r\n /// customer Table\r\n /// </summary>\r\n CustomerDetails = \"CustomerDetails\",\r\n\r\n /// <summary>\r\n /// ActionMenu\r\n /// </summary>\r\n ActionMenu = \"ActionMenu\",\r\n\r\n /// <summary>\r\n /// MessageWithDialog\r\n /// </summary>\r\n MessageWithDialog = \"MessageWithDialog\",\r\n}","import { EditControlType } from 'fluentui-editable-grid';\r\nimport { IColumn } from 'office-ui-fabric-react';\r\nimport { UIControlsText } from '../../../content/UIControlsText';\r\nimport { mergeStyleSets, getTheme } from '@fluentui/react/lib/Styling';\r\nimport { IInitialAdditionalResellerValue } from '../../../models/IInitialAdditionalResellerValue';\r\nimport { IInitialFinalTierResellerValue } from '../../../models/IInitialFinalTierResellerValue';\r\nimport { getEntityDataFromSession, getRuleValidationMessage } from '../../../components/shared/common/util';\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nexport enum GridOperations {\r\n None = 1,\r\n Add = 2,\r\n Update = 3,\r\n Delete = 4\r\n}\r\n\r\nexport interface GridConfigOptions {\r\n enableCellEdit: boolean;\r\n enableRowEdit: boolean;\r\n enableRowEditCancel: boolean;\r\n enableBulkEdit: boolean;\r\n enableColumnEdit: boolean;\r\n enableExport: boolean;\r\n enableTextFieldEditMode: boolean;\r\n enableTextFieldEditModeCancel: boolean;\r\n enableGridRowsDelete: boolean;\r\n enableGridRowsAdd: boolean;\r\n enableColumnFilterRules: boolean;\r\n enableRowAddWithValues: boolean;\r\n enableGridCopy: boolean;\r\n enableRowCopy: boolean;\r\n enableUnsavedEditIndicator: boolean;\r\n enableSave: boolean;\r\n enableGridReset: boolean;\r\n enableColumnFilters: boolean;\r\n enableDefaultEditMode: boolean;\r\n}\r\n\r\nexport interface IDetailListGridConfigProps {\r\n visible: boolean,\r\n columns: IColumnConfig[],\r\n gridConfigOptions: GridConfigOptions,\r\n items: DistributorGridItemsType[] | PrimaryResellerGridItemsType[] | IInitialAdditionalResellerValue[] | IInitialFinalTierResellerValue[] | any[];\r\n onGridSave: any,\r\n onGridItemsChange: any;\r\n enableDefaultEditMode: boolean,\r\n height: string,\r\n width: string,\r\n className?: string,\r\n}\r\n\r\nexport interface DistributorGridItemsType {\r\n id: string;\r\n distributorCountry: string;\r\n distributorNames: string;\r\n distributorOwner: boolean;\r\n distributorEmailContacts: string;\r\n action?: string;\r\n associatedPartner?: string;\r\n};\r\n\r\nexport interface PrimaryResellerGridItemsType {\r\n id: string,\r\n resellerCountry: string;\r\n resellerType: string;\r\n resellerNames: string;\r\n resellerEmailContacts: string;\r\n action?: string;\r\n};\r\n\r\nexport const DistributorGridColumnConfig: IColumnConfig[] = [\r\n {\r\n key: 'distributorCountry',\r\n name: 'distributorCountry',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DistributorCountryText\", UIControlsText.DistributorCountryText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 100,\r\n maxWidth: 200,\r\n isResizable: true,\r\n inputType: EditControlType.TextField,\r\n },\r\n {\r\n key: 'distributorNames',\r\n name: 'distributorNames',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DistributorNames\", UIControlsText.DistributorNames),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 120,\r\n maxWidth: 200,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'distributorOwner',\r\n name: 'distributorOwner',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DistributorOwner\", UIControlsText.DistributorOwner),\r\n editable: true,\r\n dataType: 'string',\r\n minWidth: 60,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'distributorEmailContacts',\r\n name: 'distributorEmailContacts',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactEmailIds\", UIControlsText.ContactEmailIds),\r\n required: true,\r\n editable: true,\r\n dataType: 'string',\r\n minWidth: 120,\r\n maxWidth: 200,\r\n isResizable: true,\r\n inputType: EditControlType.MultilineTextField\r\n },\r\n {\r\n key: 'deleteAction',\r\n name: 'deleteAction',\r\n text: 'Delete',\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 60,\r\n maxWidth: 60,\r\n isResizable: true,\r\n //Placeholder Control. This is overridden by onRender\r\n inputType: EditControlType.Link\r\n },\r\n];\r\n\r\nexport const PrimaryResellerGridColumnConfig: IColumnConfig[] = [\r\n {\r\n key: 'resellerCountry',\r\n name: 'resellerCountry',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerCountryText\", UIControlsText.ResellerCountryText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 100,\r\n maxWidth: 140,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'resellerType',\r\n name: 'resellerType',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerTypeText\", UIControlsText.ResellerTypeText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 75,\r\n maxWidth: 100,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'resellerNames',\r\n name: 'resellerNames',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNames\", UIControlsText.ResellerNames),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 200,\r\n maxWidth: 250,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'resellerEmailContacts',\r\n name: 'resellerEmailContacts',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactEmailIds\", UIControlsText.ContactEmailIds),\r\n required: true,\r\n editable: true,\r\n dataType: 'string',\r\n minWidth: 120,\r\n maxWidth: 200,\r\n isResizable: true,\r\n //Placeholder Control. This is overridden by onRender\r\n inputType: EditControlType.MultilineTextField\r\n },\r\n {\r\n key: 'deleteAction',\r\n name: 'deleteAction',\r\n text: 'Delete',\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 50,\r\n maxWidth: 50,\r\n isResizable: true,\r\n //Placeholder Control. This is overridden by onRender\r\n inputType: EditControlType.Link\r\n },\r\n];\r\n\r\nexport const AdditionalResellerGridColumnConfig: IColumnConfig[] = [\r\n {\r\n key: 'arNo',\r\n name: 'arNo',\r\n text: 'AR',\r\n editable: false,\r\n dataType: 'number',\r\n minWidth: 20,\r\n maxWidth: 20,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'resellerName',\r\n name: 'resellerName',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'contactName',\r\n name: 'contactName',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactName\", UIControlsText.ContactName),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'contactEmail',\r\n name: 'contactEmail',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactEmailText\", UIControlsText.ContactEmailText),\r\n required: true,\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'address',\r\n name: 'address',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressFacetText\", UIControlsText.AddressFacetText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 100,\r\n maxWidth: 140,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'city',\r\n name: 'city',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityFacetText\", UIControlsText.CityFacetText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 75,\r\n maxWidth: 75,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'stateProvince',\r\n name: 'stateProvince',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"StateProvinceFacetText\", UIControlsText.StateProvinceFacetText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 75,\r\n maxWidth: 75,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'zipPostalCode',\r\n name: 'zipPostalCode',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ZipPostalCode\", UIControlsText.ZipPostalCode),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 75,\r\n maxWidth: 75,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'attachmentName',\r\n name: 'attachmentName',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachments\", UIControlsText.Attachments),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 100,\r\n maxWidth: 100,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'editAction',\r\n name: 'editAction',\r\n text: 'Edit',\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 50,\r\n maxWidth: 50,\r\n isResizable: true,\r\n //Placeholder Control. This is overridden by onRender\r\n inputType: EditControlType.Link\r\n },\r\n {\r\n key: 'deleteAction',\r\n name: 'deleteAction',\r\n text: 'Delete',\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 50,\r\n maxWidth: 50,\r\n isResizable: true,\r\n //Placeholder Control. This is overridden by onRender\r\n inputType: EditControlType.Link\r\n },\r\n];\r\n\r\nexport const AdditionalResellerViewGridColumnConfig: IColumnConfig[] = [\r\n {\r\n key: 'arNo',\r\n name: 'arNo',\r\n text: 'AR',\r\n editable: false,\r\n dataType: 'number',\r\n minWidth: 20,\r\n maxWidth: 20,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'resellerName',\r\n name: 'resellerName',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'contactName',\r\n name: 'contactName',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactName\", UIControlsText.ContactName),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'contactEmail',\r\n name: 'contactEmail',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactEmailText\", UIControlsText.ContactEmailText),\r\n required: true,\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 120,\r\n maxWidth: 150,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'address',\r\n name: 'address',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressFacetText\", UIControlsText.AddressFacetText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 100,\r\n maxWidth: 140,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'city',\r\n name: 'city',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityFacetText\", UIControlsText.CityFacetText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 75,\r\n maxWidth: 75,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'stateProvince',\r\n name: 'stateProvince',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"StateProvinceFacetText\", UIControlsText.StateProvinceFacetText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 75,\r\n maxWidth: 75,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'zipPostalCode',\r\n name: 'zipPostalCode',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ZipPostalCode\", UIControlsText.ZipPostalCode),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 75,\r\n maxWidth: 75,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'attachmentName',\r\n name: 'attachmentName',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachments\", UIControlsText.Attachments),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 100,\r\n maxWidth: 100,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'deleteAction',\r\n name: 'deleteAction',\r\n text: 'Delete',\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 50,\r\n maxWidth: 50,\r\n isResizable: true,\r\n //Placeholder Control. This is overridden by onRender\r\n inputType: EditControlType.Link\r\n },\r\n];\r\n\r\nexport const FinalTierResellerGridColumnConfig: IColumnConfig[] = [\r\n {\r\n key: 'ftrNo',\r\n name: 'ftrNo',\r\n text: 'FTR',\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 30,\r\n maxWidth: 30,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'resellerName',\r\n name: 'resellerName',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 120,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'contactName',\r\n name: 'contactName',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactName\", UIControlsText.ContactName),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 120,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'contactEmail',\r\n name: 'contactEmail',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactEmailText\", UIControlsText.ContactEmailText),\r\n required: true,\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 120,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'address',\r\n name: 'address',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressFacetText\", UIControlsText.AddressFacetText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 120,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'city',\r\n name: 'city',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityFacetText\", UIControlsText.CityFacetText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 120,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'stateProvince',\r\n name: 'stateprovince',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"StateProvinceFacetText\", UIControlsText.StateProvinceFacetText),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 120,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'zipPostalCode',\r\n name: 'zipPostalCode',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ZipPostalCode\", UIControlsText.ZipPostalCode),\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 120,\r\n maxWidth: 120,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n },\r\n {\r\n key: 'editAction',\r\n name: 'editAction',\r\n text: 'Edit',\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 50,\r\n maxWidth: 50,\r\n isResizable: true,\r\n //Placeholder Control. This is overridden by onRender\r\n inputType: EditControlType.Link\r\n },\r\n {\r\n key: 'deleteAction',\r\n name: 'deleteAction',\r\n text: 'Delete',\r\n editable: false,\r\n dataType: 'string',\r\n minWidth: 50,\r\n maxWidth: 50,\r\n isResizable: true,\r\n //Placeholder Control. This is overridden by onRender\r\n inputType: EditControlType.Link\r\n },\r\n]\r\n\r\nexport interface IColumnConfig extends IColumn {\r\n key: string;\r\n text: string;\r\n editable?: boolean;\r\n dataType?: string;\r\n required?: boolean;\r\n isResizable?: boolean;\r\n includeColumnInExport?: boolean;\r\n includeColumnInSearch?: boolean;\r\n inputType?: EditControlType;\r\n onChange?: any;\r\n maxLength?: number;\r\n applyColumnFilter?: boolean;\r\n disableSort?: boolean;\r\n hidden?: boolean;\r\n};\r\n\r\nconst theme = getTheme();\r\nexport const DetailListStyles = mergeStyleSets({\r\n container: {\r\n root: {\r\n background: theme.palette.neutralLighter,\r\n borderTop: '2px solid #0078d4',\r\n overflow: 'auto',\r\n maxHeight: '80%',\r\n marginLeft: 10,\r\n marginBottom: 10,\r\n },\r\n content: {\r\n flex: 1,\r\n justifyContent: 'left',\r\n },\r\n header: {\r\n root: {\r\n fontSize: 20,\r\n fontWeight: 'bold',\r\n }\r\n },\r\n row: {\r\n flexDirection: 'row',\r\n alignItems: 'left',\r\n },\r\n }\r\n});","import { MessageBarType, Panel, PrimaryButton, Spinner, Stack } from \"@fluentui/react\";\r\nimport { Checkbox, DefaultButton, MessageBar, StackItem } from \"office-ui-fabric-react\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { UIControlsText } from \"../../../../content/UIControlsText\";\r\nimport { JavaScriptExtensions } from \"../../../../infrastructure/JavaScriptExtensions\";\r\nimport { IDealType } from \"../../../../models/IDealType\";\r\nimport { IPricingProgramDuplicateDeal } from \"../../../../models/IPricingProgramDuplicateDeal\";\r\nimport { PartnerType } from \"../../../../models/PartnerType\";\r\nimport { SessionStorageConsts } from \"../../../../models/SessionStorageConsts\";\r\nimport { nextGenService } from \"../../../../services/NextGenService\";\r\nimport { PageStyles } from \"../content/Page.Styles\";\r\nimport { IPricingProgramSelectorProps } from \"../props/IPricingProgramSelectorProps\";\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"../../../../components/shared/common/util\";\r\n\r\n/**\r\n * Select Pricing Program Component.\r\n * @function component\r\n */\r\nconst PricingProgramSelector: React.FunctionComponent<IPricingProgramSelectorProps> = (props: IPricingProgramSelectorProps) => {\r\n const [pricingPrograms, setPricingPrograms] = useState<IDealType[]>(props.selectedDealTypes);\r\n const [showWarning, setShowWarning] = useState<boolean>(false);\r\n const [isPanelOpen, setIsPanelOpen] = React.useState(false);\r\n const [errorMessage, setErrorMessage] = useState<string>('');\r\n const [isDuplicateCheckPerformed, setIsDuplicateCheckPerformed] = useState<boolean>(false);\r\n const [isPricingProgramFormLoading, setIsPricingProgramFormLoading] = useState<boolean>(false);\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const onDismiss = React.useCallback((ev?: React.SyntheticEvent | KeyboardEvent) => {\r\n if (ev) {\r\n ev.preventDefault();\r\n dismissPanel();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.isOpenPanel) {\r\n setIsPanelOpen(true);\r\n }\r\n else {\r\n setIsPanelOpen(false);\r\n }\r\n }, [props?.isOpenPanel])\r\n /**\r\n * cancel button click.\r\n * @method\r\n */\r\n const dismissPanel = () => {\r\n\r\n props?.handlePricingProgramSelectionCancel && props?.handlePricingProgramSelectionCancel();\r\n }\r\n const onContinueDismissPanel = () => {\r\n setPricingPrograms([]);\r\n resetPanelValues();\r\n setIsDuplicateCheckPerformed(false);\r\n }\r\n const resetPanelValues = () => {\r\n setShowWarning(false);\r\n setErrorMessage('');\r\n setIsDuplicateCheckPerformed(false);\r\n }\r\n\r\n /**\r\n * continue button click.\r\n * @method\r\n */\r\n const onContinue = async () => {\r\n try {\r\n if (!isDuplicateCheckPerformed && pricingPrograms.findIndex(t => t.name === props?.dealTypeName) >= 0) {\r\n setIsPricingProgramFormLoading(true);\r\n type PartnerDataType = keyof typeof PartnerType;\r\n const pricingProgramDuplicateDeal: IPricingProgramDuplicateDeal = {\r\n dealTypeName: props?.dealTypeName,\r\n isManaged: props?.isManaged,\r\n organizationName: props?.organizationName,\r\n productTypeName: props?.partnerDetails?.productGroupName || \"\",\r\n mpnLocationId: props?.partnerDetails?.mpnLocationId || \"\",\r\n mpnOrganizationId: props?.partnerDetails?.organizationId || \"\",\r\n userEmail: sessionStorage.getItem(SessionStorageConsts.userEmail) || \"\",\r\n partnerType: JavaScriptExtensions.isEmptyOrNullOrUndefined(props?.partnerDetails?.userRole) ? PartnerType.MsStore : PartnerType[props?.partnerDetails?.userRole as PartnerDataType]\r\n }\r\n var result = await Promise.resolve(nextGenService.searchDuplicateDeal(pricingProgramDuplicateDeal));\r\n setIsDuplicateCheckPerformed(true);\r\n if (result.status === 200 && result.data.isDuplicate) {\r\n setErrorMessage(result.data.errorMessage);\r\n setShowWarning(true);\r\n }\r\n else {\r\n props?.handlePricingProgramSelection && props?.handlePricingProgramSelection(pricingPrograms);\r\n onContinueDismissPanel();\r\n }\r\n }\r\n else {\r\n props?.handlePricingProgramSelection && props?.handlePricingProgramSelection(pricingPrograms);\r\n onContinueDismissPanel();\r\n }\r\n }\r\n catch (error: any) {\r\n props?.handlePricingProgramSelection && props?.handlePricingProgramSelection(pricingPrograms);\r\n onContinueDismissPanel();\r\n }\r\n finally {\r\n setIsPricingProgramFormLoading(false);\r\n }\r\n }\r\n\r\n /**\r\n * pricing Program Checked Change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {checked} boolean.\r\n * @param {string} dealType property\r\n */\r\n const pricingProgramChecked = (dealType: IDealType) => (ev?: React.FormEvent<HTMLElement | HTMLInputElement>, checked?: boolean) => {\r\n resetPanelValues();\r\n if (checked && !(pricingPrograms.findIndex(t => t.id === dealType.id) !== -1)) {\r\n setPricingPrograms([...pricingPrograms, dealType]);\r\n }\r\n else if (!checked) {\r\n setPricingPrograms(pricingPrograms.filter(x => x.id !== dealType.id));\r\n }\r\n }\r\n\r\n // display the buttons in panel footer.\r\n const onRenderFooterContent = React.useCallback(\r\n () => (\r\n <>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContinueText\", UIControlsText.ContinueText)}\r\n styles={PageStyles.commandButtonPadding}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContinueText\", UIControlsText.ContinueText)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContinueText\", UIControlsText.ContinueText)}\r\n allowDisabledFocus={false}\r\n onClick={onContinue}\r\n disabled={pricingPrograms?.length === 0} />\r\n <DefaultButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n styles={PageStyles.commandButtonPadding}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n onClick={dismissPanel}\r\n allowDisabledFocus={false} />\r\n </>\r\n ),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [dismissPanel],\r\n );\r\n\r\n return (\r\n <div>\r\n <Panel\r\n headerText={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SelectPricingProgramText\", UIControlsText.SelectPricingProgramText)}\r\n isOpen={isPanelOpen}\r\n onDismiss={onDismiss}\r\n closeButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n isFooterAtBottom={true}\r\n onRenderFooterContent={onRenderFooterContent}>\r\n <Stack tokens={{ childrenGap: 10 }} style={PageStyles.paddingTop10px}>\r\n {\r\n props?.dealTypes.map((item: any) => {\r\n return <Checkbox key={item?.id} ariaLabel={item?.name} label={item?.name} onChange={pricingProgramChecked(item)}\r\n checked={pricingPrograms.filter(x => x.id == item?.id).length > 0 ? true : false} />\r\n })\r\n }\r\n </Stack>\r\n {isPricingProgramFormLoading &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SearchDuplicateDeals\", UIControlsText.SearchDuplicateDeals)} />\r\n </div>\r\n </Stack>\r\n }\r\n <Stack style={PageStyles.paddingTop10px} >\r\n <StackItem style={showWarning ? { visibility: \"visible\" } : { visibility: \"hidden\" }}>\r\n <MessageBar styles={PageStyles.warningBackGroundColor}\r\n id=\"WarningDuplicate\"\r\n messageBarType={MessageBarType.severeWarning}>\r\n {errorMessage}\r\n </MessageBar>\r\n </StackItem>\r\n </Stack>\r\n </Panel>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PricingProgramSelector;","/**\r\n * Enum for Attachment Display Mode.\r\n * @readonly\r\n * @enum {Enum}\r\n */\r\n export enum AttachmentDisplayMode {\r\n /**\r\n * Panel.\r\n */\r\n PanelGrid = 1,\r\n /**\r\n * Grid.\r\n */\r\n Grid = 2,\r\n}","\r\nimport * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { ConstrainMode, DetailsListLayoutMode, SelectionMode } from 'office-ui-fabric-react';\r\nimport { GridOperations, IDetailListGridConfigProps, DetailListStyles } from './DetailListEditableGridTypes';\r\nimport { EditableGrid, IColumnConfig } from 'fluentui-editable-grid';\r\nimport { InitializeInternalGrid } from 'fluentui-editable-grid/dist/editablegrid/editablegridinitialize';\r\nimport \"./PartnerGrid.css\";\r\n\r\nexport const DetailListEditableGrid = (props: IDetailListGridConfigProps) => {\r\n const [listOfItems, setItems] = useState<any[]>([]);\r\n useEffect(() => {\r\n if(props?.items){\r\n var data : any[] = InitializeInternalGrid(props.items);\r\n setItems(data);\r\n }\r\n \r\n }, [props?.items]);\r\n\r\n const onGridSave = (data: any[]): void => {\r\n setItems([...data.filter(y => y._grid_row_operation_ !== GridOperations.Delete).map(x => {\r\n return {...x, '_grid_row_operation_': GridOperations.None}\r\n })]);\r\n \r\n //EventEmitter.dispatch(EventType.onSearch, event);\r\n };\r\n\r\n const attachGridValueChangeCallbacks = (columnConfig : IColumnConfig[]) : IColumnConfig[] => {\r\n return columnConfig;\r\n };\r\n\r\n let elements = Array.from(document.getElementsByClassName('ms-CommandBar') as HTMLCollectionOf<HTMLElement>)\r\n elements.forEach((element) => {\r\n element.remove();\r\n });\r\n\r\n return (\r\n <div className={`editablegridcontainer ${props.className}`}>\r\n <EditableGrid\r\n id={1}\r\n columns={attachGridValueChangeCallbacks(props?.columns)} \r\n layoutMode={DetailsListLayoutMode.justified}\r\n selectionMode={ SelectionMode.none}\r\n constrainMode={ConstrainMode.horizontalConstrained}\r\n className={DetailListStyles.container}\r\n items={listOfItems}\r\n enableCellEdit={props?.gridConfigOptions?.enableCellEdit}\r\n enableGridRowsDelete={props?.gridConfigOptions?.enableGridRowsDelete}\r\n enableRowEdit={props?.gridConfigOptions?.enableRowEdit}\r\n enableRowEditCancel={props?.gridConfigOptions?.enableRowEditCancel}\r\n enableTextFieldEditMode={props?.gridConfigOptions?.enableTextFieldEditMode}\r\n enableColumnEdit={props?.gridConfigOptions?.enableColumnEdit}\r\n enableSave={props?.gridConfigOptions?.enableSave}\r\n enableUnsavedEditIndicator={props?.gridConfigOptions?.enableUnsavedEditIndicator}\r\n gridCopyOptions={{enableGridCopy: props?.gridConfigOptions?.enableGridCopy, enableRowCopy: props?.gridConfigOptions?.enableRowCopy}}\r\n height={props?.height}\r\n width={props?.width}\r\n position={'relative'}\r\n onGridSave={onGridSave}\r\n onGridUpdate={props.onGridItemsChange}\r\n enableDefaultEditMode={props.enableDefaultEditMode}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\n","import { DirectionalHint, Icon, mergeStyleSets, Stack, TooltipHost } from \"@fluentui/react\";\r\nimport { DefaultPageStyles } from \"../../content/styles/Page.styles\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\n\r\nconst Tooltip: React.FunctionComponent<any> = (props?: any) => {\r\n\r\n const classNames = mergeStyleSets({\r\n deepSkyBlue: [DefaultPageStyles.iconBlueColor],\r\n });\r\n\r\n const calloutProps = { gapSpace: 0 };\r\n\r\n return (\r\n <>\r\n {props && !JavaScriptExtensions.isEmptyOrNullOrUndefined(props?.guidanceText) &&\r\n <TooltipHost\r\n content={props?.guidanceText}\r\n // Give the user more time to interact with the tooltip before it closes\r\n closeDelay={200}\r\n id={'TooltipHost' + props.id}\r\n calloutProps={calloutProps}>\r\n <Icon tabIndex={0} iconName=\"Info\" ariaLabel={props?.guidanceText} className={classNames.deepSkyBlue} />\r\n </TooltipHost>\r\n }\r\n </>\r\n );\r\n}\r\n\r\nexport default Tooltip;","import { ActionButton, Label, Link, Panel, Stack, StackItem } from \"@fluentui/react\";\r\nimport { Upload, UploadFileInfo, UploadOnAddEvent } from \"@progress/kendo-react-upload\";\r\nimport { Badge, BadgeContainer } from \"@progress/kendo-react-indicators\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { useBoolean } from '@fluentui/react-hooks';\r\nimport { encode } from \"base64-arraybuffer\";\r\nimport { Guid } from \"../../infrastructure/Guid\";\r\nimport { IAttachmentProps } from \"./props/IAttachmentProps\";\r\nimport { IAttachment } from \"../../models/IAttachment\";\r\nimport { ArrayExtensions } from \"../../infrastructure/ArrayExtensions\";\r\nimport { DefaultPageStyles } from \"../../content/styles/Page.styles\";\r\nimport { Grid, GridCellProps, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport { CssClassConstants } from \"../../content/CssClassConstants\";\r\nimport { convertToReadableBytes, downloadFile } from \"./common/util\";\r\nimport { ActionType } from \"../../models/ActionType\";\r\nimport { PageMode } from \"../../models/PageMode\";\r\nimport { OpportunityDealStatusCodes } from \"../../models/OpportunityDealStatusCodes\";\r\nimport { CoherenceDialog, CoherenceDialogFooter } from \"@cseo/controls\";\r\nimport { DefaultButton, DialogType, PrimaryButton } from \"office-ui-fabric-react\";\r\nimport Tooltip from \"./tooltip\";\r\nimport { AttachmentDisplayMode } from \"../../models/AttachmentDisplayMode\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { ErrorMessages } from \"../../content/ErrorMessages\";\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"./common/util\";\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { MessageTypeText } from \"../../models/MessageTypeText\";\r\n\r\n/**\r\n * Attachment component.\r\n * @function component\r\n */\r\nconst Attachment: React.FunctionComponent<IAttachmentProps> = (props?: IAttachmentProps) => {\r\n const [files, setFiles] = useState<Array<UploadFileInfo>>([]);\r\n const [showAttachmentList, { setTrue: openPanel, setFalse: dismissPanel }] = useBoolean(false);\r\n const [attachmentList, setAttachmentList] = useState<Array<IAttachment | undefined>>([]);\r\n const [hideAttachmentDeleteDialog, setHideAttachmentDeleteDialog] = useState<boolean>(true);\r\n const [attachmentId, setattachmentId] = useState<string>(\"\");\r\n const displayInPanelGrid: boolean = props?.attachmentDisplayMode === AttachmentDisplayMode.PanelGrid || props?.attachmentDisplayMode === undefined;\r\n const fileUploadId: string = `${ props?.source?.replace(/\\s/g, \"\") }Attachments`;\r\n const allowedFileSize: number | undefined = Number(process.env.REACT_APP_AllowedFileSize);\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n //accessbility issue.\r\n useEffect(() => {\r\n // Accessibility fix for \"nested-interactive controls\"\r\n var selectFilesButtonContainers = document.querySelectorAll('div[aria-label=\"Select files...\"]');\r\n selectFilesButtonContainers.forEach((node) => {\r\n if (node.getAttribute(\"role\") === \"button\") {\r\n node.removeAttribute(\"role\");\r\n }\r\n });\r\n }, []);\r\n \r\n useEffect(() => {\r\n if (props?.attachmentList && props?.attachmentList.length >= 0) {\r\n setAttachmentList(props?.attachmentList.filter(item => item?.action !== ActionType.Delete));\r\n }\r\n }, [props?.attachmentList]);\r\n /**\r\n * Event to handle new attachment addition\r\n * @method\r\n * @param {UploadOnAddEvent} UploadOnAddEvent kendo attachment add event \r\n */\r\n const onAddAttachment = async (event: UploadOnAddEvent) => {\r\n setFiles(event.newState);\r\n const attachments = await Promise.all(event.affectedFiles.map(async (file) => {\r\n if ((props && props?.allowedFileExtensions && props?.allowedFileExtensions.filter(t => t.trim().toLowerCase() === file?.extension?.toLocaleLowerCase()).length <= 0)) {\r\n window.alert(JavaScriptExtensions.stringFormat(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"FileExtensionError\", ErrorMessages.FileExtensionError), file?.extension as string, (props && props?.allowedFileExtensions?.toString()) as string));\r\n }\r\n else if (file?.getRawFile) {\r\n if (file?.size === 0) {\r\n window.alert(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"FileSizeEmptyError\", UIControlsText.FileSizeEmptyError));\r\n }\r\n else if (file?.size && file.size < allowedFileSize) {\r\n var bufffer = await file.getRawFile().arrayBuffer();\r\n var content = encode(bufffer);\r\n\r\n var att: IAttachment = {\r\n id: Guid.newGuid(),\r\n name: file.name,\r\n extension: file.extension,\r\n size: file.size,\r\n source: props?.source,\r\n content: content,\r\n action: ActionType.Add\r\n };\r\n return att;\r\n }\r\n else {\r\n window.alert(JavaScriptExtensions.stringFormat(UIControlsText.FileSizeError, convertToReadableBytes(allowedFileSize, 0)));\r\n }\r\n }\r\n\r\n }));\r\n var newattachments = ArrayExtensions.removeundefinedfromArray(attachments);\r\n\r\n //Removing duplicates from existing list so it can be overritten with new attachment\r\n var updatedList = attachmentList.filter(a => a?.source === props?.source).filter(a => newattachments.map(n => n?.name).indexOf(a?.name) === -1);\r\n var deleteditems = attachmentList?.filter((item) => item?.action?.toLowerCase() === ActionType.Delete.toLowerCase() && item.source === props?.source) || [];\r\n var newlist = ArrayExtensions.mergeArrays(updatedList, newattachments);\r\n setAttachmentList(newlist);\r\n var includingDeleted = ArrayExtensions.mergeArrays(newlist, deleteditems);\r\n props?.handleAttachmentChanges && props.handleAttachmentChanges(includingDeleted);\r\n }\r\n\r\n /**\r\n * Event to handle attachment removal\r\n * @method\r\n * @param {string} id removed attachment id \r\n */\r\n const removeAttachment = (id?: string | undefined): void => {\r\n var newList = attachmentList?.filter(a => a?.source === props?.source) || []; //attachmentList.filter((item) => item?.id !== id);\r\n var updatedList = [];\r\n if (props?.pageMode?.toLowerCase() === PageMode.Create.toLowerCase() || \r\n (props?.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() && props?.opportunityDealStatusCode === OpportunityDealStatusCodes.Draft)) {\r\n var findItem = props?.savedAttachments?.find(x => x?.id === id);\r\n if (findItem) {\r\n updatedList = newList.map((item: any) => {\r\n if (item.id === id) {\r\n item.action = ActionType.Delete;\r\n } return item;\r\n });\r\n }\r\n else {\r\n updatedList = newList.filter(a => a?.id !== id);\r\n }\r\n }\r\n else {\r\n updatedList = newList.filter(a => a?.id !== id);\r\n }\r\n var attachments = updatedList.filter(item => item?.action !== ActionType.Delete);\r\n setAttachmentList(attachments);\r\n props?.handleAttachmentChanges && props.handleAttachmentChanges(updatedList);\r\n }\r\n\r\n let gridData = <>\r\n <Stack>\r\n <Grid data={attachmentList} resizable={true} style={displayInPanelGrid ? {} : DefaultPageStyles.attachmentGridHeight}>\r\n <Column title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AttachmentFileNameText\", UIControlsText.AttachmentFileNameText)} width={props?.disabled ? DefaultPageStyles.attachementFileNameWidth.moreWidth : DefaultPageStyles.attachementFileNameWidth.width}\r\n cell={(cellProps: GridCellProps) => (\r\n <td>\r\n <Link onClick={() => downloadFile(cellProps?.dataItem?.name, cellProps?.dataItem?.content)}>{cellProps?.dataItem?.name}</Link>\r\n </td>\r\n )}\r\n />\r\n <Column field=\"size\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AttachmentFileSizeText\", UIControlsText.AttachmentFileSizeText)} width={props?.disabled ? DefaultPageStyles.attachementFileSizeWidth.moreWidth : DefaultPageStyles.attachementFileSizeWidth.width} />\r\n {(!props?.disabled && props?.pageMode !== PageMode.View) &&\r\n <Column\r\n width={50}\r\n cell={(cellProps: GridCellProps) => (\r\n <td>\r\n <ActionButton\r\n id={cellProps?.dataItem.id}\r\n iconProps={{\r\n ariaLabel: CssClassConstants.DeleteIconName,\r\n iconName: CssClassConstants.DeleteIconName,\r\n styles: DefaultPageStyles.redColor\r\n }}\r\n disabled={props?.disabled}\r\n style={{ height: \"15px\" }}\r\n onClick={(event) => {\r\n if (props?.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() &&\r\n props?.opportunityDealStatusCode !== OpportunityDealStatusCodes.Draft) {\r\n var findItem = props?.savedAttachments?.find(x => x?.id === cellProps?.dataItem.id);\r\n if (findItem) {\r\n setHideAttachmentDeleteDialog(false);\r\n setattachmentId(cellProps?.dataItem.id);\r\n }\r\n else {\r\n removeAttachment(cellProps?.dataItem.id);\r\n }\r\n } else {\r\n removeAttachment(cellProps?.dataItem.id);\r\n }\r\n event.preventDefault();\r\n return;\r\n }}\r\n >\r\n </ActionButton>\r\n </td>\r\n )}\r\n />\r\n }\r\n </Grid>\r\n </Stack>\r\n <CoherenceDialog\r\n hidden={hideAttachmentDeleteDialog}\r\n onDismiss={() => {\r\n setHideAttachmentDeleteDialog(true);\r\n }}\r\n isBlocking={true}\r\n dialogContentProps={{\r\n type: DialogType.normal,\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeleteAttachmentWarning\", UIControlsText.DeleteAttachmentWarning),\r\n subText: getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"AttachmentDeleteMessage\", UIControlsText.AttachmentDeleteMessage)\r\n }}\r\n >\r\n <CoherenceDialogFooter>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n onClick={() => {\r\n removeAttachment(attachmentId);\r\n setHideAttachmentDeleteDialog(true);\r\n }}\r\n />\r\n <DefaultButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n onClick={() => {\r\n setHideAttachmentDeleteDialog(true);\r\n }}\r\n />\r\n </CoherenceDialogFooter>\r\n </CoherenceDialog>\r\n </>\r\n\r\n return (\r\n <div>\r\n <BadgeContainer>\r\n <Stack horizontal>\r\n <StackItem>\r\n <Label\r\n required={props?.required}\r\n htmlFor=\"dealOverviewAttachments\">\r\n {props?.labelText}\r\n </Label>\r\n </StackItem>\r\n <StackItem style={props?.required ? DefaultPageStyles.paddingTop3px : DefaultPageStyles.paddingTopLeft}>\r\n <Tooltip {...{ guidanceText: props?.guidanceText, id: `${ props?.source?.replace(/ /g, '') }Attachment` }}></Tooltip>\r\n </StackItem>\r\n </Stack>\r\n <Stack>\r\n {props?.pageMode !== PageMode.View && <Upload\r\n batch={false}\r\n multiple={true}\r\n withCredentials={false}\r\n files={files}\r\n autoUpload={false}\r\n showActionButtons={false}\r\n onAdd={onAddAttachment}\r\n showFileList={false}\r\n disabled={props?.disabled}\r\n className={\"attachment-container\"}\r\n id={fileUploadId} />\r\n }\r\n <Label\r\n hidden={!(attachmentList?.length > 0)}\r\n onClick={openPanel}>\r\n <div style={DefaultPageStyles.paddingLeftOnly} title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AttachmentBadgeTitle\", UIControlsText.AttachmentBadgeTitle)} hidden={!displayInPanelGrid}>\r\n <Badge\r\n position={\"inside\"}\r\n style={{ cursor: \"pointer\" }}\r\n themeColor={\"dark\"}\r\n align={{\r\n vertical: \"top\",\r\n horizontal: \"end\",\r\n }}>{attachmentList?.length}</Badge>\r\n </div>\r\n </Label>\r\n {displayInPanelGrid &&\r\n <Panel\r\n isLightDismiss\r\n isOpen={showAttachmentList}\r\n onDismiss={dismissPanel}\r\n closeButtonAriaLabel=\"Close\"\r\n headerText={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachments\", UIControlsText.Attachments)}>\r\n {\r\n gridData\r\n }\r\n </Panel>\r\n }\r\n {\r\n !displayInPanelGrid && attachmentList.length > 0 && gridData\r\n }\r\n </ Stack>\r\n </BadgeContainer>\r\n </div>\r\n );\r\n}\r\nexport default Attachment;","/**\r\n * PropertyText for State.\r\n * @constant\r\n */\r\nexport const StatePropertiesText = {\r\n DealNameText: \"dealName\",\r\n DealOverviewText: \"dealOverview\",\r\n DealVerticalText: \"dealVertical\",\r\n PreSalesActivitiesText: \"preSalesActivity\",\r\n DealProductGroupText: \"productGroup\",\r\n DeviceShipToAddressText: \"address1\",\r\n DeviceShipToCityText: \"city\",\r\n DeviceShipToStateProvinceText: \"stateOrProvince\",\r\n DeviceShipToPostalCodeText: \"postalCode\",\r\n DeviceShipToCountryText: \"country\",\r\n JustificationText: \"expirationDateJustification\",\r\n EmailCCNotificationRecipients: \"emailCCNotificationRecipients\",\r\n DealVolumeText: \"dealVolume\",\r\n UnitsTransactedText: \"unitsTransacted\",\r\n CustomerDomain: \"dealCustomerDomain\",\r\n PartnerAddress: \"address\",\r\n PartnerCity: \"city\",\r\n PartnerState: \"stateProvince\",\r\n PartnerSellerName: \"accountCompanyName\",\r\n PartnerSellerEmail: \"email\",\r\n RfpJustification : \"rfpJustification\",\r\n MSStoreContactEmail: \"msStoreContactEmail\",\r\n ValidatePrimaryResellers: \"ValidatePrimaryResellers\",\r\n ValidateMultipleDistributors: \"ValidateMultipleDistributors\",\r\n ValidateCustomer: \"ValidateCustomer\",\r\n ValidateProduct: \"ValidateProduct\",\r\n ValidateEmailText: \"Email_\",\r\n ValidateFinalOrAdditionalReseller: \"ValidateFinalOrAdditionalReseller\",\r\n SavedDealVolume: \"savedDealVolume\",\r\n DealStatusCode: \"statusCode\",\r\n AdditionalComments: \"additionalComments\",\r\n}\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useEffect } from \"react\";\r\nimport { UIControlsText } from \"../../../content/UIControlsText\";\r\nimport { IDealState } from \"../common/state/IDealState\";\r\nimport { DealDetailsStyles, PageStyles } from \"../common/content/Page.Styles\";\r\nimport { Label, Stack, StackItem, TextField } from \"@fluentui/react\";\r\nimport { JavaScriptExtensions } from \"../../../infrastructure/JavaScriptExtensions\";\r\nimport { StatePropertiesText } from \"../common/state/StatePropertiesText\";\r\nimport { ErrorMessages } from \"../../../content/ErrorMessages\";\r\nimport { PageMode } from \"../../../models/PageMode\";\r\nimport { OpportunityDealStatusCodes } from \"../../../models/OpportunityDealStatusCodes\";\r\nimport { DealType } from \"../../../models/DealType\";\r\nimport { getDealQuantityThreshold } from \"./PricingProgramFormUtils\";\r\nimport { IDealType } from \"../../../models/IDealType\";\r\nimport { CssClassConstants } from \"../../../content/CssClassConstants\";\r\nimport { getDealDurationConfig, getEntityDataFromSession, getRuleValidationMessage, isNullOrEmpty } from '../../../components/shared/common/util';\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from \"../../../models/SessionStorageConsts\";\r\n\r\nexport const CommittedDealVolume: React.FunctionComponent<any> = (props: any) => {\r\n const optyDeal = props?.opportunityDeals.find((t: IDealState) => t.name === props?.selectedOptyDealCaseNumber);\r\n const [dealTypeNames, setdealTypeNames] = React.useState<string>(\"\");\r\n const [dealDurationInMonths, setDealDurationInMonths] = React.useState<number>(0);\r\n const [dealQuantityThreshold, setDealQuantityThreshold] = React.useState<number>(0);\r\n const [isFieldDisabled, setIsFieldDisabled] = React.useState<boolean>(false);\r\n const [selectedOptyDeal, setSelectedOptyDeal] = React.useState<IDealState>();\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n \r\n useEffect(() => {\r\n const dealData = props?.opportunityDeals.find((t: IDealState) => t.statusCode !== OpportunityDealStatusCodes.Draft);\r\n if(!JavaScriptExtensions.isNullOrUndfinedOrEmpty(dealData)) { \r\n setSelectedOptyDeal(optyDeal);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n setdealTypeNames(getDealTypeNames());\r\n setDealDurationInMonths(getDealDurationInMonths());\r\n setDealQuantityThreshold(getDealQuantityThreshold(props?.opportunityDeals, props?.partnerDetails?.productGroupName, props?.selectedOptyDealCaseNumber, props?.pageMode));\r\n setIsFieldDisabled(isDealVolumeDisabled());\r\n }, [selectedOptyDeal]);\r\n \r\n /**\r\n * Get deal type names by dealTypeId.\r\n * @method\r\n * @@returns {string} deal type names.\r\n */\r\n const getDealTypeNames = (): string => {\r\n let dealTypeNames : string = '';\r\n if(!JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedOptyDeal)) {\r\n dealTypeNames = selectedOptyDeal?.dealType?.name || \"\";\r\n }\r\n else {\r\n props?.opportunityDeals?.forEach((optyDeal : IDealState) => {\r\n if(dealTypeNames === '') {\r\n dealTypeNames = optyDeal?.dealType?.name || \"\";\r\n }\r\n else {\r\n dealTypeNames = dealTypeNames + ' and ' + optyDeal?.dealType?.name || \"\";\r\n }\r\n });\r\n }\r\n\r\n return dealTypeNames;\r\n }\r\n\r\n const getDealDurationInMonths = () : number => {\r\n let dealDuration : number = -1;\r\n \r\n if(!JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedOptyDeal)) {\r\n let dealDurationConfig = getDealDurationConfig(selectedOptyDeal?.dealType?.name || \"\", selectedOptyDeal?.customerCountry)\r\n if (!isNullOrEmpty(dealDurationConfig)) {\r\n dealDuration = dealDurationConfig?.defaultDurationInMonths || 0;\r\n }\r\n }\r\n else {\r\n props?.opportunityDeals?.forEach((optyDeal : IDealState) => {\r\n let dealDurationConfig = getDealDurationConfig(optyDeal?.dealType?.name || \"\", optyDeal?.customerCountry)\r\n if((dealDuration > (dealDurationConfig?.defaultDurationInMonths || 0)) || dealDuration === -1) {\r\n dealDuration = dealDurationConfig?.defaultDurationInMonths || 0;\r\n }\r\n });\r\n }\r\n\r\n return dealDuration;\r\n }\r\n\r\n const isDealVolumeDisabled = () : boolean => {\r\n switch (props?.pageMode) {\r\n case PageMode.Create: {\r\n return false;\r\n }\r\n case PageMode.Edit: {\r\n if (selectedOptyDeal && ((selectedOptyDeal.statusCode === OpportunityDealStatusCodes.Approved &&\r\n selectedOptyDeal?.dealType?.name === DealType.DealRegistration) || selectedOptyDeal.statusCode === OpportunityDealStatusCodes.Unassigned || selectedOptyDeal.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n case PageMode.View: {\r\n return true;\r\n }\r\n default: {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get TextField ErrorMessage.\r\n * @method\r\n * @param {string>} value Text Box value.\r\n * @@returns {string} Error Message.\r\n */\r\n const getTextFieldErrorMessageForQuantity = (value: string): string => {\r\n let message = ''\r\n if (!value) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoCommittedBlankDealVolume\", ErrorMessages.DealInfoCommittedBlankDealVolume);\r\n }\r\n else if (parseInt(value) === 0) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoCommittedZeroDealVolume\", ErrorMessages.DealInfoCommittedZeroDealVolume);\r\n }\r\n else if (parseInt(value) < dealQuantityThreshold && dealQuantityThreshold !== -1) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoCommittedMinimumThreshold\", ErrorMessages.DealInfoCommittedMinimumThreshold);\r\n }\r\n\r\n props.setErrorsDataIntoContext && props.setErrorsDataIntoContext(message, StatePropertiesText.DealVolumeText);\r\n return message;\r\n };\r\n\r\n return (\r\n <>\r\n <Stack horizontal>\r\n <StackItem style={DealDetailsStyles.dealVolumeWidth}>\r\n <Label>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CommittedDealVolumeText\", UIControlsText.CommittedDealVolumeText)}\r\n </Label>\r\n </StackItem>\r\n <StackItem>\r\n <Label>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"QuantityText\", UIControlsText.QuantityText)}\r\n </Label>\r\n </StackItem>\r\n </Stack>\r\n <Stack horizontal>\r\n <StackItem style={DealDetailsStyles.dealVolumeWidthPaddingTop}>\r\n <Label style={DealDetailsStyles.labelFontStyle} >\r\n {JavaScriptExtensions.stringFormat(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVolumeBasedOnDealTypes\", UIControlsText.DealVolumeBasedOnDealTypes), dealTypeNames, dealDurationInMonths.toString())}\r\n </Label>\r\n </StackItem>\r\n <StackItem style={DealDetailsStyles.dealVolumeWidth} id=\"StackItemDealVolume\">\r\n {!isFieldDisabled &&\r\n <TextField\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVolume\", UIControlsText.DealVolume)}\r\n styles={PageStyles.textFieldStylesWidth92}\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n //type=\"number\"\r\n min={0}\r\n maxLength={10}\r\n onGetErrorMessage={getTextFieldErrorMessageForQuantity}\r\n onChange={props?.handleDealQuantityChanges && props?.handleDealQuantityChanges(StatePropertiesText.DealVolumeText, JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedOptyDeal) ? undefined : selectedOptyDeal?.id)}\r\n value= {JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedOptyDeal) ? props?.opportunityDeals[0]?.dealVolume?.toString() : selectedOptyDeal?.dealVolume?.toString()}\r\n readOnly={isFieldDisabled}\r\n className={isFieldDisabled ? CssClassConstants.backgroundColorWhite: ''}\r\n required={ props?.pageMode === PageMode.View ? false : true}\r\n errorMessage = {props?.pivotTabContext?.errors?.get(StatePropertiesText.DealVolumeText)}\r\n />\r\n }\r\n {isFieldDisabled &&\r\n <Label style={DealDetailsStyles.labelFontStyle}>\r\n {JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedOptyDeal) ? props?.opportunityDeals[0]?.dealVolume?.toString() : selectedOptyDeal?.dealVolume?.toString()}\r\n </Label>\r\n }\r\n\r\n </StackItem>\r\n </Stack>\r\n {(props?.pageMode !== PageMode.Create && !JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedOptyDeal)) &&\r\n <Stack horizontal>\r\n <StackItem style={DealDetailsStyles.dealVolumeWidthPaddingTop}>\r\n <Label style={DealDetailsStyles.labelFontStyle} >\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInfoUnitsTransactedText\", UIControlsText.DealInfoUnitsTransactedText)}\r\n </Label>\r\n </StackItem>\r\n <StackItem style={DealDetailsStyles.dealVolumeWidth} >\r\n <Label style={DealDetailsStyles.labelFontStyle}>\r\n {selectedOptyDeal?.unitsTransacted?.toString()}\r\n </Label>\r\n </StackItem>\r\n </Stack>\r\n }\r\n <Stack>\r\n <StackItem style={DealDetailsStyles.dealVolumeWidth} >\r\n <Label></Label>\r\n <Label></Label>\r\n </StackItem>\r\n </Stack>\r\n </>\r\n );\r\n};","import React, { useEffect, useState } from 'react';\r\nimport _ from \"lodash\";\r\nimport { PartnerType } from '../../../../models/PartnerType';\r\nimport { IAccount } from '../../../../models/IAccount';\r\nimport { ArrayExtensions } from '../../../../infrastructure/ArrayExtensions';\r\nimport { Label, Stack, TextField } from 'office-ui-fabric-react';\r\nimport { UIControlsText } from '../../../../content/UIControlsText';\r\nimport { ChannelStructure } from '../../../../models/ChannelStructure';\r\nimport { defaultColumnProps, DefaultPageStyles } from '../../../../content/styles/Page.styles';\r\nimport { PageStyles } from '../content/Page.Styles';\r\nimport { AccountAllType } from '../../../../models/AccountAllType';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { PartnerTypeLabel } from '../../../../models/PartnerTypeLabel';\r\nimport { ErrorMessages } from '../../../../content/ErrorMessages';\r\nimport { getChannelContactAction, isFieldDisabled, isValidEmail, getRuleValidationMessage, getEntityDataFromSession, getChannelContactEmailFromSavedContext, getChannelContactIsComplete } from '../../../../components/shared/common/util';\r\nimport { IBaseProps } from '../props/IBaseProps';\r\nimport { IOpportunityChannelContact } from '../../../../models/IOpportunityChannelContact';\r\nimport { Guid } from '../../../../infrastructure/Guid';\r\nimport { JavaScriptExtensions } from '../../../../infrastructure/JavaScriptExtensions';\r\nimport { CaseActionTypes } from '../reducer/CaseActionTypes';\r\nimport { PageMode } from '../../../../models/PageMode';\r\nimport { ActionType } from '../../../../models/ActionType';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { PageConstants } from '../../../pageconstants/Constants';\r\n\r\n/**\r\n * Channel Contacts Component.\r\n * @function component\r\n */\r\nconst ChannelContacts: React.FunctionComponent<IBaseProps> = (props: IBaseProps) => {\r\n const { pageContext, pageDispatch } = props;\r\n const [channelContacts, setChannelContacts] = useState<IOpportunityChannelContact[]>(pageContext?.opportunityChannelContacts || []);\r\n const [distributors] = useState<IAccount[]>(JSON.parse(sessionStorage.getItem(SessionStorageConsts.distributors) || '{}'));\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n //this method is to hide required field error message on view mode\r\n const isRequired = (): boolean => {\r\n return pageContext?.pageMode?.toLowerCase() !== PageMode.View.toLowerCase()\r\n }\r\n\r\n //Common method for sorting the Channel Contacts\r\n const sortContacts = (updatedContacts: IOpportunityChannelContact[]): IOpportunityChannelContact[] => {\r\n return _.sortBy(updatedContacts, x => [x.action, x.partnerType, x.countryName, x.companyName?.toLowerCase()]);\r\n }\r\n\r\n useEffect(() => {\r\n let oppAccounts: IAccount[] = [];\r\n if (pageContext?.opportunityDeals[0].channelStructure === ChannelStructure.Customer) {\r\n if (pageContext?.opportunityAccounts && pageContext?.opportunityAccounts.length > 0) {\r\n pageContext.opportunityAccounts\r\n .forEach(x => {\r\n let countryname = props.countries.find(c => c.countryId === x.countryId)?.countryName;\r\n let accounts = x.accounts && x.accounts.length > 0 && x.accounts.filter((y: any) => y.partnerType === PartnerType.ADR).map((a: any) => { return { ...a, countryName: countryname } });\r\n if (accounts && accounts.length) {\r\n oppAccounts = ArrayExtensions.mergeArrays(oppAccounts, accounts);\r\n }\r\n });\r\n\r\n pageContext.opportunityAccounts.filter(x => x.partnerType === PartnerType.DMP)\r\n .forEach(x => {\r\n if (x.partnerAccounts && !_.isEmpty(x.partnerAccounts)) {\r\n for (let key in x.partnerAccounts) {\r\n const accounts = x.partnerAccounts[key];\r\n const addAccounts = distributors.filter(dis => accounts.map((a: any) => a.accountId).includes(dis.accountId));\r\n if (accounts && accounts.length) {\r\n oppAccounts = ArrayExtensions.mergeArrays(oppAccounts, addAccounts);\r\n }\r\n else if (x.accounts) {\r\n let dmpAccounts = x.accounts.filter(x => x.accountId === key);\r\n if (dmpAccounts && dmpAccounts.length) {\r\n oppAccounts = ArrayExtensions.mergeArrays(oppAccounts, dmpAccounts);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (x.accounts && x.accounts.length) {\r\n oppAccounts = ArrayExtensions.mergeArrays(oppAccounts, x.accounts);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (pageContext?.opportunityDeals[0].channelStructure === ChannelStructure.Distributor) {\r\n if (pageContext?.opportunityAccounts && pageContext?.opportunityAccounts.length > 0) {\r\n let addAccounts = pageContext.opportunityAccounts.filter(x => x.partnerType === PartnerType.ADD);\r\n\r\n let selectedAdds = addAccounts.filter(x => x.isAllSelected === AccountAllType.None);\r\n selectedAdds.length && selectedAdds.forEach(x => {\r\n let accounts = x.accounts && x.accounts.length > 0 && x.accounts.filter((y: any) => y.partnerType === PartnerType.ADD);\r\n if (accounts && accounts.length) {\r\n oppAccounts = ArrayExtensions.mergeArrays(oppAccounts, accounts);\r\n }\r\n });\r\n\r\n let allAdds = addAccounts.filter(x => x.isAllSelected === AccountAllType.All);\r\n allAdds.length > 0 && allAdds.forEach(x => {\r\n let accounts = distributors.filter(y => y.countryId === x.countryId);\r\n // Check for empty accounts and use applicablePriceListGeo if available\r\n // This is needed to handle Puerto Rico country where there are no distributors with countryId\r\n // but there are distributors with applicablePriceListGeo as US\r\n if ((!accounts || accounts.length === 0) && x.applicablePriceListGeo) {\r\n accounts = distributors.filter(y => y.applicablePriceListGeo === x.applicablePriceListGeo);\r\n }\r\n if (accounts && accounts.length) {\r\n oppAccounts = ArrayExtensions.mergeArrays(oppAccounts, accounts);\r\n }\r\n });\r\n\r\n let allEueftaAdds = addAccounts.filter(x => x.isAllSelected === AccountAllType.AllEuefta);\r\n allEueftaAdds.length > 0 && allEueftaAdds.forEach(x => {\r\n let accounts = distributors.filter(y => y.isEueftaAccount);\r\n if (accounts && accounts.length) {\r\n oppAccounts = ArrayExtensions.mergeArrays(oppAccounts, accounts);\r\n }\r\n });\r\n }\r\n }\r\n\r\n //Remove duplicates\r\n oppAccounts = _.uniqBy(oppAccounts, x => x.accountId);\r\n\r\n let updatedContacts = [...channelContacts];\r\n if (pageContext?.opportunityChannelContacts && pageContext.opportunityChannelContacts.length && pageContext.opportunityChannelContacts.some(c => JavaScriptExtensions.isEmptyOrNullOrUndefined(c.companyName))) {\r\n updatedContacts = pageContext.opportunityChannelContacts.map(c => {\r\n let account = oppAccounts.find(a => a.accountId === c.accountId);\r\n return { ...c, companyName: account?.companyName, countryName: account?.countryName, partnerType: account?.partnerType, action: getChannelContactAction(account?.accountId, pageContext?.opportunityDeals[0].statusCode), isComplete: JavaScriptExtensions.isEmptyOrNullOrUndefined(getEmailFieldErrorMessage(c.channelContactEmails || '')) }\r\n })\r\n }\r\n\r\n //Delete removed accounts\r\n updatedContacts = updatedContacts.filter(c => oppAccounts.map(o => o.accountId).includes(c.accountId || \"\"));\r\n //getChannelContactIsComplete is added for 9862010-Customer Channel Tab Validation Bug\r\n let newContacts = oppAccounts.filter(o => !updatedContacts.map(c => c.accountId).includes(o.accountId)).map(cc => { return { id: Guid.newGuid(), companyName: cc.companyName, accountId: cc.accountId, partnerType: cc.partnerType, countryName: cc.countryName, action: getChannelContactAction(cc.accountId, pageContext?.opportunityDeals[0].statusCode), isComplete: getChannelContactIsComplete(cc.accountId, pageContext?.opportunityDeals[0].statusCode) } as IOpportunityChannelContact });\r\n updatedContacts = ArrayExtensions.mergeArrays(updatedContacts, newContacts);\r\n updatedContacts = sortContacts(updatedContacts);\r\n\r\n const savedContext = pageContext?.opportunityChannelContacts;\r\n const accountIds = updatedContacts.map((item: any) => item.accountId);\r\n const filteredChannelContacts = savedContext?.filter((item: any) => accountIds.includes(item.accountId));\r\n //getChannelContactEmailFromSavedContext is added for 9862010-Customer Channel Tab Validation Bug\r\n const updatedChannelContacts = updatedContacts.map(item => {\r\n const currentAccounts: any = filteredChannelContacts?.filter((key: any) => key.accountId === item.accountId);\r\n const val = currentAccounts && currentAccounts.length > 0 ? currentAccounts[0].channelContactEmails : getChannelContactEmailFromSavedContext(item.accountId, pageContext?.opportunityDeals[0].statusCode);\r\n return {\r\n ...item,\r\n channelContactEmails: val,\r\n }\r\n });\r\n setChannelContacts(updatedChannelContacts);\r\n pageDispatch && pageDispatch({ type: CaseActionTypes.channelContactChanged, channelContacts: updatedChannelContacts });\r\n }, [pageContext?.opportunityAccounts]);\r\n\r\n /**\r\n * Get TextField ErrorMessage.\r\n * @method\r\n * @param {string} value Text Box value.\r\n * @@returns {string} Error Message.\r\n */\r\n const getEmailFieldErrorMessage = (value: string): string => {\r\n if (!value) {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldError\", ErrorMessages.RequiredFieldError);\r\n }\r\n else {\r\n let isInvalid = value.split(';').some((email) => !isValidEmail(email));\r\n if (isInvalid) {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidEmailError\", ErrorMessages.ValidEmailError);\r\n }\r\n }\r\n return '';\r\n };\r\n\r\n /**\r\n * ChannelContact blur callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {accountId} accountId Account Id.\r\n */\r\n const onChannelContactBlur = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, accountId?: string): void => {\r\n let value = event.currentTarget.value.trim();\r\n\r\n //Remove trailing semicolon\r\n if (value.endsWith(';')) {\r\n value = value.substring(0, value.length - 1);\r\n updateChannelContact(accountId, value);\r\n }\r\n }\r\n\r\n /**\r\n * ChannelContact change callback function.\r\n * @method\r\n * @param {accountId} accountId Account Id.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onChannelContactChange = (accountId?: string, newValue?: string): void => {\r\n updateChannelContact(accountId, newValue);\r\n }\r\n\r\n /**\r\n * Update ChannelContact state with updated channel contact\r\n * @param {accountId} accountId Account Id.\r\n * @param {string} newValue updated value.\r\n */\r\n function updateChannelContact(accountId?: string, newValue?: string) {\r\n let modifiedContact = channelContacts.find(c => c.accountId === accountId);\r\n if (modifiedContact) {\r\n modifiedContact!.channelContactEmails = newValue;\r\n modifiedContact.isComplete = JavaScriptExtensions.isEmptyOrNullOrUndefined(getEmailFieldErrorMessage(newValue || ''));\r\n\r\n let updatedContacts = [...channelContacts].filter(c => c.accountId !== accountId);\r\n updatedContacts.push(modifiedContact);\r\n updatedContacts = sortContacts(updatedContacts);\r\n setChannelContacts(updatedContacts);\r\n pageDispatch && pageDispatch({ type: CaseActionTypes.channelContactChanged, channelContacts: updatedContacts });\r\n }\r\n }\r\n\r\n return (\r\n <div data-nextgen-parent-group={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts)} data-nextgen-parentid={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts)}>\r\n <Stack>\r\n <Stack horizontal {...defaultColumnProps}>\r\n <Label styles={DefaultPageStyles.customWidthStyles} >\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerNameText\", UIControlsText.PartnerNameText)}\r\n </Label>\r\n <Label styles={DefaultPageStyles.customWidthStyles}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Country\", UIControlsText.Country)}\r\n </Label>\r\n <Label styles={DefaultPageStyles.customWidth175Styles}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerTypeText\", UIControlsText.PartnerTypeText)}\r\n </Label>\r\n <Label>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerEmailContactsText\", UIControlsText.PartnerEmailContactsText)}\r\n </Label>\r\n </Stack>\r\n <Stack className='channelcontacts' {...defaultColumnProps}>\r\n {channelContacts.map((k, i) => (\r\n <Stack horizontal key={k.accountId} style={{ margin: 5 }}>\r\n <Label styles={DefaultPageStyles.customWidthForStackLabels}>{k.companyName}</Label>\r\n <Label styles={DefaultPageStyles.customWidthForStackLabels}>{k.countryName}</Label>\r\n {k.partnerType && <Label styles={DefaultPageStyles.customWidthStyles}>{PartnerTypeLabel.get(k.partnerType)}</Label>}\r\n <TextField\r\n id={k.accountId}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContactsPlaceHolderText\", UIControlsText.ChannelContactsPlaceHolderText)}\r\n styles={DefaultPageStyles.oneColumnWidthStyles}\r\n style={pageContext?.errors?.includes(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredChannelContactError\", ErrorMessages.RequiredChannelContactError)) && !JavaScriptExtensions.isEmptyOrNullOrUndefined(getEmailFieldErrorMessage(k.channelContactEmails || '')) ? PageStyles.missingFieldHighlight : {}}\r\n validateOnFocusOut\r\n multiline\r\n validateOnLoad={false}\r\n onGetErrorMessage={getEmailFieldErrorMessage}\r\n onChange={(event, value) => {\r\n onChannelContactChange(k.accountId, value);\r\n return;\r\n }}\r\n onBlur={(event) => {\r\n onChannelContactBlur(event, k.accountId);\r\n return;\r\n }}\r\n value={k.channelContactEmails}\r\n required={isRequired()}\r\n disabled={isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts), pageContext?.pageMode, pageContext?.opportunityDeals[0]?.statusCode, undefined, undefined, PageConstants.PropCPStrategictype) || (pageContext?.pageMode !== PageMode.View && k.action != ActionType.Add)}\r\n />\r\n </Stack>\r\n ))}\r\n </Stack>\r\n </Stack>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ChannelContacts;","import { Label, Stack } from \"@fluentui/react\";\r\nimport { IComponentDataItem } from \"../Components/DynamicFormRendering\";\r\n\r\nexport function CustomViewModeComponent(props: IComponentDataItem) {\r\n return (\r\n <Stack className='display:flex;flex-direction:row;display:inline'>\r\n <Label className=\"CustomViewModeComponentLabel\" key={props.id}> {props?.label} </Label>\r\n </Stack>\r\n );\r\n}","import { Label, MessageBar, Stack } from \"@fluentui/react\";\r\nimport React from \"react\";\r\nimport { IComponentDataItem } from \"../Components/DynamicFormRendering\";\r\n\r\nexport function GuidanceTextInformation(props: IComponentDataItem) {\r\n const [showMessageBar, setShowMessageBar] = React.useState(true);\r\n const toggleMessageBar = (): (() => void) => (): void => setShowMessageBar(!showMessageBar);\r\n\r\n return (\r\n <Stack>\r\n {showMessageBar &&\r\n <MessageBar role=\"none\" onDismiss={toggleMessageBar()} messageBarIconProps={{ iconName: 'info' }} dismissButtonAriaLabel=\"Close\"\r\n overflowButtonAriaLabel=\"See more\" className=\"mb-1 mt-1\">\r\n {props?.messageHeader &&\r\n <h6> {props?.messageHeader} </h6>\r\n }\r\n <span key={props.id}> {props?.label} </span>\r\n </MessageBar>\r\n }\r\n </Stack>\r\n );\r\n}","/**\r\n * Enum for Channel Type.\r\n * @readonly\r\n * @enum {Enum}\r\n */\r\nexport enum ChannelType {\r\n /**\r\n * Direct Channel.\r\n */\r\n Direct = 1,\r\n /**\r\n * INDIRECT Channel.\r\n */\r\n Indirect = 2,\r\n \r\n}","import { _Styles } from \"../../../../content/styles/Page.styles\";\r\nimport { ICaseDetailsProps } from \"../props/ICaseDetailsProps\";\r\nimport { Callout } from '@fluentui/react';\r\nimport { useBoolean } from '@fluentui/react-hooks';\r\nimport { UIControlsText } from \"../../../../content/UIControlsText\";\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from '../../../../components/shared/common/util';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\n\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n/**\r\n * CaseDetails Component.\r\n * @function component\r\n */\r\nconst CaseDetails: React.FunctionComponent<ICaseDetailsProps> = (props: ICaseDetailsProps) => {\r\n const [hideDetail, { toggle: setHideDetail }] = useBoolean(false);\r\n const displayDetails = () => {\r\n setHideDetail();\r\n }\r\n\r\n return (\r\n <div id=\"parentDetail\">\r\n {/*to show case name */}\r\n <div>\r\n {props.caseName}\r\n </div>\r\n\r\n {/*to show partner details */}\r\n {hideDetail && (\r\n <Callout\r\n ariaLabelledBy={\"labelId\"}\r\n ariaDescribedBy={\"descriptionId\"}\r\n gapSpace={0}\r\n target={'#' + getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerInformation\", UIControlsText.PartnerInformation)}\r\n onDismiss={setHideDetail}\r\n setInitialFocus\r\n >\r\n {props.isRequestor &&\r\n <div className=\"tableContent\">\r\n <div className=\"tablerow\">\r\n <span className=\"tablecell\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MPNOrgID\", UIControlsText.MPNOrgID)}</span> <span className=\"tablecell\"> {props.orgID} </span></div>\r\n <div className=\"tablerow\">\r\n <span className=\"tablecell\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MPNLocationID\", UIControlsText.MPNLocationID)}</span> <span className=\"tablecell\">{props.locationID}</span> </div>\r\n <div className=\"tablerow\">\r\n <span className=\"tablecell\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductGroup\", UIControlsText.ProductGroup)} </span> <span className=\"tablecell\"> {props.productGroup}</span></div>\r\n <div className=\"tablerow\">\r\n <span className=\"tablecell\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerRole\", UIControlsText.PartnerRole)}:</span> <span className=\"tablecell\">{props.partnerRole}</span></div>\r\n </div>\r\n }\r\n {!props.isRequestor &&\r\n <div className=\"tableContent\">\r\n <div className=\"tablerow\">\r\n <span className=\"tablecell\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Country\", UIControlsText.Country)}</span> <span className=\"tablecell\">{props.country}</span>\r\n </div>\r\n <div className=\"tablerow\">\r\n <span className=\"tablecell\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductGroup\", UIControlsText.ProductGroup)} </span> <span className=\"tablecell\"> {props.productGroup}</span></div>\r\n <div className=\"tablerow\">\r\n <span className=\"tablecell\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerRole\", UIControlsText.PartnerRole)}:</span> <span className=\"tablecell\">{props.partnerRole}</span></div>\r\n </div>\r\n }\r\n\r\n </Callout>\r\n )}\r\n\r\n {/*to show case status */}\r\n <div id=\"statusDetail\">\r\n {false && <span onMouseOver={displayDetails} onMouseOut={setHideDetail} onClick={setHideDetail} id={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerInformation\", UIControlsText.PartnerInformation)} hidden={props.isPartner}>{props.labelText}</span>}\r\n {props.caseStatus}\r\n </div>\r\n\r\n </div>\r\n )\r\n}\r\nexport default CaseDetails;\r\n\r\n","import * as React from 'react';\r\nimport { Label, Rating, RatingSize, Stack, StackItem, TextField } from '@fluentui/react';\r\nimport { IRatingProps } from './props/IRatingProps';\r\n\r\nexport const Ratings: React.FunctionComponent<IRatingProps> = (props?: IRatingProps) => {\r\n const [currentRating, setCurrentRating] = React.useState(-1);\r\n const [comment, setComment] = React.useState(\"\");\r\n const minimalRatingToShowComments = props?.minimalRatingToShowComments || 2;\r\n const getRatingAriaLabel = React.useCallback(() => `Rating value is ${currentRating} of 5`, [currentRating]);\r\n\r\n return (\r\n <Stack>\r\n <StackItem>\r\n <Label>\r\n {props?.ratingLabelText}\r\n </Label>\r\n <Rating\r\n max={5}\r\n size={RatingSize.Large}\r\n allowZeroStars\r\n rating={currentRating}\r\n getAriaLabel={getRatingAriaLabel}\r\n ariaLabelFormat=\"{0} of {1} stars\"\r\n onChange={(event: React.FormEvent<HTMLElement>, rating?: number) => {\r\n setCurrentRating(rating || -1);\r\n if (props && props.handleRatingChanges) {\r\n props?.handleRatingChanges(rating, comment)\r\n }\r\n }}\r\n />\r\n </StackItem>\r\n {currentRating <= minimalRatingToShowComments && currentRating !== -1 &&\r\n <StackItem>\r\n <TextField\r\n label={props?.ratingCommentLabelText}\r\n name={props?.ratingCommentLabelText}\r\n ariaLabel={props?.ratingCommentLabelText}\r\n placeholder={props?.ratingCommentPlaceHolderText}\r\n validateOnFocusOut\r\n multiline\r\n rows={3}\r\n resizable={false}\r\n maxLength={5000}\r\n validateOnLoad={false}\r\n value={comment}\r\n onChange={(event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => { setComment(newValue || \"\") }}\r\n onBlur={() => {\r\n if (props && props.handleRatingChanges) {\r\n props?.handleRatingChanges(currentRating, comment)\r\n }\r\n }}\r\n />\r\n </StackItem>\r\n }\r\n </Stack>\r\n )\r\n}\r\n","import { Reducer } from \"react\";\r\nimport { isNullOrEmpty } from \"../../../../components/shared/common/util\";\r\nimport { Guid } from \"../../../../infrastructure/Guid\";\r\nimport { JavaScriptExtensions } from \"../../../../infrastructure/JavaScriptExtensions\";\r\nimport { IDealState } from \"../state/IDealState\";\r\nimport { IPageState } from \"../state/IPageState\";\r\nimport { CaseActionTypes } from \"./CaseActionTypes\";\r\nimport { ICommonPPActions } from \"./ICommonPPActions\";\r\n\r\n/**\r\n * Common pricing program Reducer.\r\n * @function\r\n */\r\nconst commonPPReducer: Reducer<IPageState, ICommonPPActions> =\r\n (state: IPageState, action: ICommonPPActions) => {\r\n switch (action.type) {\r\n case CaseActionTypes.dataLoadingStart:\r\n return { ...state, dataLoading: true };\r\n\r\n case CaseActionTypes.dataLoadingEnd:\r\n return { ...state, dataLoading: false };\r\n\r\n case CaseActionTypes.debugModeOn:\r\n return { ...state, debugMode: true };\r\n\r\n case CaseActionTypes.casePivotChanged:\r\n return { ...state, selectedPivot: action.selectedPivot };\r\n\r\n case CaseActionTypes.pivotTabData:\r\n {\r\n let newState = { ...state };\r\n if(!JavaScriptExtensions.isNullOrUndfinedOrEmpty(action.pivotTabDetails)) {\r\n newState.pivotTabs = action.pivotTabDetails;\r\n }\r\n\r\n return newState;\r\n }\r\n\r\n case CaseActionTypes.saveDraft:\r\n return { ...state, saveDraft: action.boolValue };\r\n\r\n case CaseActionTypes.submitCaseAsync:\r\n return { ...state, submitCaseAsync: action.boolValue };\r\n\r\n case CaseActionTypes.isFinalOrAdditionalResellerSelected:\r\n return { ...state, isFinalOrAdditionalReseller: action.boolValue };\r\n\r\n case CaseActionTypes.draftCaseLoaded:\r\n {\r\n let newState = { ...state };\r\n newState = Object.assign(newState, action.case as IPageState);;\r\n return newState;\r\n }\r\n\r\n case CaseActionTypes.productGroupChanged:\r\n return { ...state, productGroup: action.productGroupValue };\r\n\r\n case CaseActionTypes.dealFieldValueChanged:\r\n return updateDealFieldState(state, action);\r\n\r\n case CaseActionTypes.dealCustomerValueChanged:\r\n return updateDealCustomerState(state, action);\r\n\r\n case CaseActionTypes.dealAddressValueChanged:\r\n return updateDealAddressState(state, action);\r\n\r\n case CaseActionTypes.channelContactChanged:\r\n return { ...state, opportunityChannelContacts: action.channelContacts };\r\n\r\n case CaseActionTypes.rfpRfqPublicTenderValueChanged:\r\n return { ...state, opportunityRfp: action.inputNumber };\r\n\r\n case CaseActionTypes.rfpRfqPublicTenderJustificationValueChanged:\r\n return { ...state, rfpJustification: action.inputValue };\r\n\r\n case CaseActionTypes.attachmentChanged:\r\n return { ...state, attachments: action.attachments };\r\n\r\n case CaseActionTypes.channelAccountChanged:\r\n return { ...state, opportunityAccounts: action.opportunityAccounts };\r\n\r\n case CaseActionTypes.pricingProgramSelectionChanged:\r\n return { ...state, opportunityDeals: action.opportunityDeals || [] };\r\n\r\n case CaseActionTypes.pricingProgramDealType:\r\n return { ...state, applicableDealTypes: action.applicableDealTypes || [] };\r\n\r\n case CaseActionTypes.SelectedDealChanged:\r\n return { ...state, selectedOptyDealCaseNumber: action.selectedDealNumber };\r\n\r\n case CaseActionTypes.selectedLegalEntityChanged:\r\n {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.dealCustomers?.key);\r\n if (index >= 0)\r\n newState.opportunityDeals[index].dealCustomers = action.dealCustomers?.value;\r\n return newState\r\n }\r\n\r\n case CaseActionTypes.partnerDetailsChanged:\r\n return { ...state, partnerDetails: action.partnerDetails };\r\n\r\n case CaseActionTypes.selectedProductFamilyChanged: {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.products?.key);\r\n if (index >= 0)\r\n newState.opportunityDeals[index].products = action.products?.value;\r\n return newState;\r\n }\r\n\r\n case CaseActionTypes.closureDecisionChanged:\r\n {\r\n let newState = { ...state };\r\n let index = newState.opportunityDeals.findIndex(x => x.id === action.closureDecision?.key);\r\n if (index >= 0) {\r\n newState.opportunityDeals[index].closureDecision = action.closureDecision?.value;\r\n }\r\n return newState\r\n } \r\n }\r\n\r\n return state;\r\n }\r\n\r\n/**\r\n * update Deal Field State.\r\n * @param {IPageState} state state object\r\n * @param {ICommonPPActions} action action object\r\n * @param {string} fieldName field to be changed\r\n */\r\nconst updateDealFieldState = (state: IPageState, action: ICommonPPActions): IPageState => {\r\n let newState = { ...state };\r\n if (action && !isNullOrEmpty(action.dealInputControlValue)) {\r\n var opportunityDeals = newState.opportunityDeals.filter(t => isNullOrEmpty(action?.dealInputControlValue?.id) || t.id === action?.dealInputControlValue?.id);\r\n if (opportunityDeals) {\r\n opportunityDeals.forEach(x => (x as any)[action?.dealInputControlValue?.key || \"\"] = action?.dealInputControlValue?.value);\r\n }\r\n }\r\n\r\n return newState;\r\n}\r\n\r\n/**\r\n * update Deal Customer State.\r\n * @param {IPageState} state state object\r\n * @param {ICommonPPActions} action action object\r\n */\r\nconst updateDealCustomerState = (state: IPageState, action: ICommonPPActions): IPageState => {\r\n let newState = { ...state };\r\n if (action && !isNullOrEmpty(action.dealInputControlValue)) {\r\n let dealCustomer: any = action.dealInputControlValue;\r\n var opportunityDeals = newState.opportunityDeals.filter(t => isNullOrEmpty(action?.dealInputControlValue?.id) || t.id === action?.dealInputControlValue?.id);\r\n if (opportunityDeals) {\r\n opportunityDeals.forEach((deal?: IDealState) => {\r\n deal?.dealCustomers?.forEach(x => (x as any)[dealCustomer.key] = dealCustomer.value)\r\n });\r\n }\r\n }\r\n\r\n return newState;\r\n}\r\n\r\n/**\r\n * update Deal Address State.\r\n * @param {IPageState} state state object\r\n * @param {ICommonPPActions} action action object\r\n */\r\nconst updateDealAddressState = (state: IPageState, action: ICommonPPActions): IPageState => {\r\n let newState = { ...state };\r\n if (action && !isNullOrEmpty(action.dealInputControlValue)) {\r\n let dealAddress: any = action.dealInputControlValue;\r\n var opportunityDeals = newState.opportunityDeals.filter(t => isNullOrEmpty(action?.dealInputControlValue?.id) || t.id === action?.dealInputControlValue?.id);\r\n if (opportunityDeals) {\r\n opportunityDeals.forEach((deal?: IDealState) => {\r\n if (deal && JavaScriptExtensions.isNullOrUndfinedOrEmpty(deal?.dealAddress)) {\r\n deal.dealAddress = { id: Guid.newGuid() };\r\n }\r\n\r\n (deal?.dealAddress as any)[dealAddress.key] = dealAddress.value;\r\n });\r\n }\r\n }\r\n\r\n return newState;\r\n}\r\n\r\nexport default commonPPReducer;","import React, { useEffect, useReducer, useState } from 'react';\r\nimport { useContext } from 'react';\r\nimport { UIControlsText } from '../../../../content/UIControlsText';\r\nimport { Guid } from '../../../../infrastructure/Guid';\r\nimport { PageMode } from '../../../../models/PageMode';\r\nimport { getLoggedinUserRoleDetails, getURLParamValue, getUserSession, intializeSessionConstants, isMsStoreUser, isNullOrEmpty, getRuleValidationMessage, getEntityDataFromSession } from '../../../../components/shared/common/util';\r\nimport { ICommonPPContext } from './ICommonPPContext';\r\nimport commonPPReducer from '../reducer/CommonPPReducer';\r\nimport { IPageState } from '../state/IPageState';\r\nimport { ApplicationConstants } from '../../../../models/ApplicationConstants';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { nextGenService } from '../../../../services/NextGenService';\r\nimport { IUserRoleDetail } from '../../../../models/IUserRoleDetail';\r\nimport { CaseActionTypes } from '../reducer/CaseActionTypes';\r\nimport { ErrorCode } from '../../../../models/ErrorCode';\r\nimport { JavaScriptExtensions } from '../../../../infrastructure/JavaScriptExtensions';\r\nimport { OpportunityDealStatusCodes } from '../../../../models/OpportunityDealStatusCodes';\r\nimport { ChannelType } from '../../../../models/ChannelType';\r\nimport { StatePropertiesText } from '../state/StatePropertiesText';\r\nimport { Spinner, Stack } from '@fluentui/react';\r\nimport { PageStyles } from '../content/Page.Styles';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { PartnerType } from '../../../../models/PartnerType';\r\nimport { IOpportunityAccount } from '../../../../models/IOpportunityAccount';\r\n\r\nconst CommonPPContext = React.createContext<ICommonPPContext>({} as ICommonPPContext);\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nconst oppNumber = getURLParamValue(ApplicationConstants.OpportunityNumberParamName);\r\nlet oppDealNumber = getURLParamValue(ApplicationConstants.OpportunityDealNumberParamName);\r\nconst pageMode = oppNumber && oppNumber.length > 0 ?\r\n isNullOrEmpty(sessionStorage.getItem(SessionStorageConsts.pageMode)) ? PageMode.View : sessionStorage.getItem(SessionStorageConsts.pageMode) : PageMode.Create;\r\nconst pageSubMode = isNullOrEmpty(sessionStorage.getItem(SessionStorageConsts.pageSubMode)) ? undefined : sessionStorage.getItem(SessionStorageConsts.pageSubMode);\r\n\r\nconst caseInitialState: IPageState = {\r\n id: Guid.newGuid(),\r\n dataLoading: false,\r\n selectedPivot: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerText\", UIControlsText.CustomerText),\r\n submitterDetails: JSON.parse(getUserSession() || \"{}\"),\r\n pageMode: pageMode || PageMode.Create,\r\n pageSubMode: pageSubMode || undefined,\r\n opportunityDeals: [{}],\r\n opportunityAccounts: [],\r\n isMultiNational: false,\r\n applicableDealTypes: [],\r\n opportunityChannelType: isMsStoreUser() ? ChannelType.Direct : ChannelType.Indirect\r\n};\r\n\r\n/**\r\n * Common PP Provider.\r\n * @function\r\n */\r\nexport function CommonPPProvider(props: any) {\r\n const [commonPPContextState, commonPPContextDispatch] = useReducer(commonPPReducer, caseInitialState);\r\n const contextValue = { commonPPContextState, commonPPContextDispatch };\r\n const [isSessionDataLoadComplete, setIsSessionDataLoadComplete] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n async function getOpportunity() {\r\n\r\n if (oppNumber && oppNumber.length > 0) {\r\n \r\n if (!isNullOrEmpty(userRoleDetails)) {\r\n var opportunity = await Promise.resolve(nextGenService.getOpportunityCommon(oppNumber, userRoleDetails, oppDealNumber));\r\n\r\n if (opportunity.status === 200) {\r\n if (pageMode !== PageMode.Create && JavaScriptExtensions.isNullOrUndfinedOrEmpty(oppDealNumber)) {\r\n oppDealNumber = opportunity.data?.opportunityDeals[0]?.name || \"\";\r\n }\r\n sessionStorage.setItem(SessionStorageConsts.opportunityProductType, JSON.stringify(opportunity.data.productGroup));\r\n opportunity.data.pageMode = pageMode || opportunity.data.pageMode;\r\n opportunity.data.saveDraft = false;\r\n const oppAccounts: IOpportunityAccount[] = opportunity?.data?.opportunityAccounts || [];\r\n const isAdditionalOrFinalResellersExist: boolean = oppAccounts.filter(acc => acc.partnerType === PartnerType.AdditionalTierReseller || acc.partnerType === PartnerType.FinalTierReseller)?.length > 0;\r\n if(isAdditionalOrFinalResellersExist) {\r\n opportunity.data.isFinalOrAdditionalReseller = isAdditionalOrFinalResellersExist;\r\n }\r\n opportunity.data.pageSubMode = pageSubMode || opportunity.data.pageSubMode;\r\n if (oppDealNumber && oppDealNumber.length > 0) {\r\n opportunity.data?.opportunityDeals.forEach(t => {\r\n if (t?.isRenewed && t?.statusCode === OpportunityDealStatusCodes.Draft) {\r\n t.statusCode = OpportunityDealStatusCodes.DraftRenew;\r\n }\r\n })\r\n opportunity?.data?.opportunityDeals.forEach(t => t.savedDealVolume = t.dealVolume);\r\n opportunity.data.selectedOptyDealCaseNumber = oppDealNumber;\r\n }\r\n \r\n commonPPContextDispatch({ type: CaseActionTypes.draftCaseLoaded, case: { ...opportunity.data } });\r\n }\r\n }\r\n }\r\n }\r\n if (!isNullOrEmpty(userRoleDetails)) {\r\n try {\r\n intializeSessionConstants().then(res1 => setIsSessionDataLoadComplete(true));\r\n if (oppNumber && oppNumber.length > 0) {\r\n getOpportunity();\r\n }\r\n }\r\n catch (error: any) {\r\n if (error && error.response && error.response.status === 404) {\r\n commonPPContextDispatch({ type: CaseActionTypes.errorOccured, inputNumber: ErrorCode.InvalidCase });\r\n }\r\n }\r\n finally {\r\n\r\n }\r\n }\r\n else {\r\n setIsSessionDataLoadComplete(true);\r\n }\r\n\r\n }, [])\r\n return (\r\n <>\r\n {!isSessionDataLoadComplete &&\r\n <Stack>\r\n <Spinner role=\"alert\" aria-live=\"assertive\" aria-busy=\"true\" label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingMCL\", UIControlsText.LoadingMCL)} \r\n styles={PageStyles.spinnerLoadingIcon}\r\n />\r\n </Stack>\r\n }\r\n <CommonPPContext.Provider value={contextValue}>\r\n {isSessionDataLoadComplete && props.children}\r\n </CommonPPContext.Provider>\r\n </>\r\n );\r\n}\r\n\r\n/**\r\n * Common Pricing Programs Context custom hook.\r\n * @function\r\n * @returns {ICommonPPContext}\r\n */\r\nexport function useCommonPPContext(): ICommonPPContext {\r\n return useContext(CommonPPContext)\r\n}","import { Icon, Label, Link, mergeStyles, mergeStyleSets, PrimaryButton, Stack } from \"@fluentui/react\"\r\nimport { getUserSession, navigateToPage, getRuleValidationMessage, getEntityDataFromSession } from \"../../../../components/shared/common/util\";\r\nimport { Ratings } from \"../../../../components/shared/ratings\";\r\nimport { UIControlsText } from \"../../../../content/UIControlsText\";\r\nimport { IUserVoice } from \"../../../../models/IUserVoice\";\r\nimport { nextGenService } from \"../../../../services/NextGenService\";\r\nimport { PageStyles } from \"../../common/content/Page.Styles\";\r\nimport { browserName } from \"react-device-detect\";\r\nimport { useCommonPPContext } from \"../../common/context/common-pp-context\";\r\nimport { ApplicationConstants } from \"../../../../models/ApplicationConstants\";\r\nimport { SessionStorageConsts } from \"../../../../models/SessionStorageConsts\";\r\nimport { PageMode } from \"../../../../models/PageMode\";\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { DealType } from \"../../../../models/DealType\";\r\n\r\nexport const SuccessPage: React.FunctionComponent<any> = (props: any) => {\r\n const { commonPPContextState } = useCommonPPContext();\r\n const iconClass = mergeStyles(PageStyles.completedSolidIconStyle);\r\n const classNames = mergeStyleSets({ green: [PageStyles.greenColor, iconClass] });\r\n const isMultiDeal = commonPPContextState?.opportunityDeals?.length > 1;\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const handleRatingChanges = async (rating?: number, comments?: string) => {\r\n try {\r\n var userDetails = JSON.parse(getUserSession() || \"{}\");\r\n const userVoice: IUserVoice = {};\r\n userVoice.browserName = browserName;\r\n userVoice.caseNumber = props?.caseNumber;\r\n userVoice.rating = rating;\r\n userVoice.comments = comments;\r\n userVoice.opportunityId = props?.opportunityId;\r\n userVoice.userDetails = { email: userDetails?.email, firstName: userDetails?.firstName, lastName: userDetails?.lastName };\r\n await Promise.resolve(nextGenService.saveUserVoice(userVoice));\r\n }\r\n catch (error: any) {\r\n }\r\n }\r\n\r\n const onLinkClick = () => {\r\n sessionStorage.setItem(SessionStorageConsts.pageMode, PageMode.View);\r\n if (isMultiDeal) {\r\n window.location.href = '/dashboard';\r\n }\r\n else {\r\n if (props?.dealType?.toLocaleLowerCase() === DealType.DealRegistration.toLocaleLowerCase() || props?.dealType?.toLocaleLowerCase() === DealType.SpecialPricing.toLocaleLowerCase()) {\r\n window.location.href = `/managecase/pricingprogram?${ApplicationConstants.OpportunityNumberParamName}=${props?.caseNumber}`;\r\n } else {\r\n window.location.href = `${props.navigateTo}?${ApplicationConstants.OpportunityNumberParamName}=${props?.caseNumber}`;\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <Stack horizontalAlign=\"center\">\r\n <Label>\r\n <Icon aria-label=\"CompletedSolid\" iconName=\"CompletedSolid\" className={classNames.green} />\r\n </Label>\r\n </Stack>\r\n {props?.isSavingDraft &&\r\n <Stack horizontalAlign=\"center\" styles={PageStyles.successDraftPadding} >\r\n <Label>\r\n <span><Link onClick={onLinkClick} style={PageStyles.successCaseColor}>{props?.caseNumber}</Link><span> <span dangerouslySetInnerHTML={{ __html: getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"SuccessDraftCaseSubmissionText\", UIControlsText.SuccessDraftCaseSubmissionText)}}></span></span></span>\r\n </Label>\r\n </Stack>\r\n }\r\n {!props?.isSavingDraft &&\r\n <div>\r\n <Stack horizontalAlign=\"center\">\r\n <Label>\r\n <span><Link onClick={onLinkClick} style={PageStyles.successCaseColor}>{props?.caseNumber}</Link><span style={PageStyles.successBlackColor}> {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SuccessCaseSubmissionText\", UIControlsText.SuccessCaseSubmissionText)}</span></span>\r\n </Label>\r\n </Stack>\r\n <Stack horizontalAlign=\"center\">\r\n <Label>\r\n <span style={PageStyles.ThankyouFontSize}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"ThankyouSubmissionText\", UIControlsText.ThankyouSubmissionText)}</span>\r\n </Label>\r\n </Stack>\r\n <Stack horizontalAlign=\"center\" style={PageStyles.paddingTop20px}>\r\n <Ratings {...\r\n {\r\n ratingLabelText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RatingLabelText\", UIControlsText.RatingLabelText),\r\n ratingCommentLabelText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RatingCommentLabelText\", UIControlsText.RatingCommentLabelText),\r\n minimalRatingToShowComments: 2,\r\n ratingCommentPlaceHolderText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"RatingCommentPlaceHolderText\", UIControlsText.RatingCommentPlaceHolderText),\r\n handleRatingChanges: handleRatingChanges\r\n }\r\n } />\r\n </Stack>\r\n </div>\r\n }\r\n <Stack horizontalAlign=\"center\" style={PageStyles.paddingTop20px}>\r\n <PrimaryButton\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CreateNewCaseText\", UIControlsText.CreateNewCaseText)}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CreateNewCaseText\", UIControlsText.CreateNewCaseText)}\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CreateNewCaseText\", UIControlsText.CreateNewCaseText)}\r\n onClick={() => navigateToPage(props.navigateTo)}\r\n />\r\n </Stack>\r\n </>\r\n )\r\n}\r\n","import React from 'react';\r\n\r\nfunction ViewForm(data: any) {\r\n return (<div aria-label={data.ariaLabel} id={data.id} className={\"viewFormContainer\"}>\r\n <span><b>{data.label}:</b></span>\r\n <span style={data.styles}> {data.value}</span>\r\n </div>);\r\n}\r\n\r\nexport default ViewForm;","import { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\n\r\nfunction GridDetails(data: any) {\r\n const columns = data.columnNames.map((item: any) => <Column field={item.field} title={item.title} />)\r\n return (<Grid data={data.gridData} style={{ maxHeight: 320, minWidth: 500 }} scrollable='none'>\r\n {columns}\r\n </Grid>);\r\n}\r\n\r\nexport default GridDetails;","import { IButtonProps, Pivot, PivotItem } from '@fluentui/react';\r\nimport { FormRenderingService, IComponent } from '../Components/DynamicFormRendering';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useEffect, useState } from 'react';\r\nimport { IPivotTab } from '../../../models/IPivotTab';\r\nimport { PageStyles } from '../../pricingprogram/common/content/Page.Styles';\r\n\r\nconst PivotContainer = (props: any) => {\r\n const { register } = useForm({});\r\n const [selectedTabName, setSelectedTabName] = useState<string>(props?.selectedTabName || \"\");\r\n \r\n const onTabChange = (item?: PivotItem, ev?: React.MouseEvent<HTMLElement>) => {\r\n setSelectedTabName(item?.props?.headerText || \"\");\r\n props.handleTabSelectionChanges && props.handleTabSelectionChanges(item?.props?.headerText);\r\n }\r\n\r\n const getTabTextColor = (pivotTab: IPivotTab) => {\r\n if (pivotTab.isValid === false) {\r\n return PageStyles.pivotTabError;\r\n }\r\n else if (pivotTab.isDisabled === true) {\r\n return PageStyles.pivotTabDisabled;\r\n }\r\n else {\r\n return PageStyles.pivotTabNormal;\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setSelectedTabName(props?.selectedTabName || \"\");\r\n }, [props?.selectedTabName])\r\n\r\n return (\r\n <Pivot key='PivotRoot' id='pContainer' selectedKey={selectedTabName} onLinkClick={onTabChange} data-nextgen-parent-group= \"NextGen Tab Container\"\r\n data-nextgen-parentid= \"NextGen Tab Container\">\r\n {props?.tabNames?.map((item: IPivotTab, index: number) => {\r\n return (\r\n <PivotItem headerText={`${item.tabName}`} itemKey={item.tabName} headerButtonProps = {{disabled: item.isDisabled, style: getTabTextColor(item)}} >\r\n {props.items[index] instanceof Array && props.items[index].map((eachItem: IComponent, key: number) => {\r\n return (\r\n <>\r\n {FormRenderingService(eachItem, register, props.baseState)}\r\n </>\r\n );\r\n })}\r\n </PivotItem>\r\n );\r\n })}\r\n </Pivot >\r\n );\r\n}\r\n\r\nexport default PivotContainer;\r\n","import { FontIcon, HoverCard, HoverCardType, ITextProps, MessageBar, Panel, Text } from '@fluentui/react';\r\nimport React, { useState } from 'react';\r\nimport { UIControlType } from '../../../models/UIControlType';\r\nimport { DefaultButton, DialogType, PrimaryButton, Label, Stack, StackItem } from \"office-ui-fabric-react\";\r\nimport { DefaultPageStyles, expireDialog, stackButtonStyles, stackStyles, _Styles } from '../../../content/styles/Page.styles';\r\nimport { PanelBar, PanelBarItem } from '@progress/kendo-react-layout';\r\nimport NextGenKendoGrid from '../../../components/shared/grid/nextgenkendogrid';\r\nimport { isNullOrEmpty } from '../../../components/shared/common/util';\r\nimport { JavaScriptExtensions } from '../../../infrastructure/JavaScriptExtensions';\r\nimport { ActionMenu } from './Components';\r\nimport { UIControlsText } from '../../../content/UIControlsText';\r\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\r\nimport { PageStyles } from '../../pricingprogram/common/content/Page.Styles';\r\nimport { CssClassConstants } from '../../../content/CssClassConstants';\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"../../../components/shared/common/util\";\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\n\r\n\r\nfunction InnerHTMLContainer(data: any): JSX.Element {\r\n\r\n const [isDialogOpen, setIsDialogOpen] = useState<boolean>(data?.hidden);\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n switch (data.contolType) {\r\n case UIControlType.MessageBar:\r\n return (\r\n <MessageBar aria-label={data?.message} styles={data?.styles} messageBarType={data?.messageBarType}\r\n onDismiss={data.handleDismiss && data?.handleDismiss} dismissButtonAriaLabel=\"Close\"\r\n isMultiline={true}>\r\n {data?.message}\r\n </MessageBar>\r\n );\r\n case UIControlType.Label:\r\n return (\r\n <Label styles={JavaScriptExtensions.isEmptyOrNullOrUndefined(data?.styles) ? DefaultPageStyles.customWidthStyles : data?.styles} id={data?.id} className={data?.className ? data?.className : _Styles.customLabel} >\r\n {data?.value}\r\n </Label>\r\n );\r\n case UIControlType.SubHeading:\r\n return (\r\n <Stack role=\"heading\" aria-level={2} wrap styles={JavaScriptExtensions.isEmptyOrNullOrUndefined(data?.styles) ? DefaultPageStyles.customWidthStyles : data?.styles} id={data?.id} className={_Styles.customLabelHeading} >\r\n {data?.value}\r\n </Stack>\r\n );\r\n case UIControlType.LabelValueView:\r\n return (\r\n <>\r\n <Label styles={JavaScriptExtensions.isEmptyOrNullOrUndefined(data?.styles) ? DefaultPageStyles.customWidthStyles : data?.styles} id={data?.id} className={_Styles.customLabelHeading} >\r\n {data?.label}: \r\n <Label className={'ms-LabelValue'}>{data?.value}</Label>\r\n </Label>\r\n </>\r\n );\r\n case UIControlType.PanelBarItemWithGrid:\r\n return (\r\n <PanelBar expandMode={data?.expandMode} className={CssClassConstants.PanelBarMaxWidth}>\r\n {\r\n data?.items?.map((item: any) => {\r\n return (\r\n item.visible && item.gridcongfig ? (\r\n <PanelBarItem title={item.title} expanded={item.expanded}>\r\n <NextGenKendoGrid\r\n {...{\r\n kendoGridProps: { ...item.gridcongfig.kendoGridProps }\r\n }}\r\n />\r\n </PanelBarItem>) : \"\"\r\n )\r\n })\r\n }\r\n </PanelBar>\r\n )\r\n case UIControlType.Text:\r\n //for size pease refer to https://developer.microsoft.com/en-us/fluentui#/controls/web/text\r\n return (\r\n <Text variant={data.textSize as ITextProps['variant']} nowrap block>\r\n {data.text}\r\n </Text>\r\n );\r\n case UIControlType.HoverCardPlain:\r\n return (\r\n <HoverCard\r\n cardDismissDelay={data.cardDismissDelay}\r\n type={HoverCardType.plain}\r\n plainCardProps={data.plainCardProps}\r\n componentRef={data.hoverCard}\r\n onCardHide={data.onCardHide}\r\n >\r\n {\r\n data.iconName ? <FontIcon aria-label={data.text} iconName={data.iconName} className={data.iconClassName} /> : \"\"\r\n }\r\n <span className={data.hoverTextStyles}>{data.text}</span>\r\n </HoverCard>\r\n );\r\n case UIControlType.Panel:\r\n return (\r\n <Panel headerText={data.headerText}\r\n isOpen={data.isOpen}\r\n onDismiss={data.dismissPanel}\r\n type={data.type}\r\n customWidth={data.customWidth}\r\n closeButtonAriaLabel=\"Close\">\r\n {data.content}\r\n </Panel>\r\n );\r\n case UIControlType.CustomerTable:\r\n return (\r\n <table className=\"table table-sm table-fixed table-borderless p-1 tbl-info w-50\">\r\n <tbody>\r\n <tr>\r\n <td className=\"p-1 fw-bold \" width=\"20%\"> Customer Name: </td>\r\n <td className=\"p-1\">{data.selectedCustomer?.legalEntityName}</td>\r\n <td className=\"p-1\" hidden={data.showEdit} onClick={data.editEvent}><a href=\"#\">Edit</a></td>\r\n </tr>\r\n {!isNullOrEmpty(data.selectedCustomer?.dunsNumber) && <tr>\r\n <td className=\"p-1 fw-bold \" width=\"20%\">Duns ID: </td>\r\n <td className=\"p-1\">{data.selectedCustomer?.dunsNumber}</td>\r\n </tr>\r\n }\r\n {!isNullOrEmpty(data.selectedCustomer?.organizationNameInLocalLanguage) && <tr>\r\n <td className=\"p-1 fw-bold \" width=\"20%\">Customer Name - Local Language: </td>\r\n <td className=\"p-1\">{data.selectedCustomer?.organizationNameInLocalLanguage}</td>\r\n </tr>\r\n }\r\n {!isNullOrEmpty(data.selectedCustomer?.industry) && <tr>\r\n <td className=\"p-1 fw-bold \" width=\"20%\">Industry: </td>\r\n <td className=\"p-1\">{data.selectedCustomer?.industry}</td>\r\n </tr>\r\n }\r\n {!isNullOrEmpty(data.selectedCustomer?.vertical) && <tr>\r\n <td className=\"p-1 fw-bold \" width=\"20%\">Vertical: </td>\r\n <td className=\"p-1\">{data.selectedCustomer?.vertical}</td>\r\n </tr>\r\n }\r\n {!isNullOrEmpty(data.selectedCustomer?.verticalCategory) && <tr>\r\n <td className=\"p-1 fw-bold \" width=\"20%\">Vertical Category: </td>\r\n <td className=\"p-1\">{data.selectedCustomer?.verticalCategory}</td>\r\n </tr>\r\n }\r\n {!isNullOrEmpty(data.selectedCustomer?.webPageURL) && <tr>\r\n <td className=\"p-1 fw-bold \" width=\"20%\">Webpage URL: </td>\r\n <td className=\"p-1\">{data.selectedCustomer?.webPageURL}</td>\r\n </tr>\r\n }\r\n {!isNullOrEmpty(data.selectedCustomer?.dealCustomerDomain) && <tr>\r\n <td className=\"p-1 fw-bold \" width=\"20%\">Email Domain: </td>\r\n <td className=\"p-1\">{data.selectedCustomer?.dealCustomerDomain}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n );\r\n case UIControlType.ActionMenu:\r\n return (\r\n <ActionMenu {...data.actionMenuConfig} />\r\n )\r\n case UIControlType.MessageWithDialog:\r\n return (\r\n <div>\r\n {isDialogOpen && (\r\n <Dialog style={_Styles}>\r\n <Stack horizontal={false} styles={stackStyles}>\r\n <Stack>\r\n <h4> {data.title}</h4>\r\n </Stack>\r\n\r\n <Stack>\r\n <Label style={expireDialog} className={_Styles.DialogueCheckBox}>\r\n {data.message}\r\n {data.listdata.map((item: any) => {\r\n return (<ul><li key={item.id}>{item.name}</li></ul>)\r\n })}\r\n </Label>\r\n </Stack>\r\n </Stack>\r\n <DialogActionsBar>\r\n <Stack horizontal horizontalAlign=\"end\" styles={stackButtonStyles}>\r\n <PrimaryButton\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n onClick={() => {\r\n setIsDialogOpen(false);\r\n }}\r\n />\r\n </Stack>\r\n </DialogActionsBar>\r\n </Dialog>\r\n )}\r\n </div>\r\n );\r\n\r\n default:\r\n return (\r\n <></>\r\n )\r\n }\r\n}\r\n\r\nexport default InnerHTMLContainer;","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useCallback, useEffect, useState } from \"react\";\r\nimport { IPanelTableProps } from \"../props/PanelTableProps\";\r\nimport { useBoolean } from '@fluentui/react-hooks';\r\nimport { UIControlsText } from \"../../../content/UIControlsText\";\r\nimport NextGenKendoGrid from \"../../../components/shared/grid/nextgenkendogrid\";\r\nimport { IGridProps } from \"../../../components/shared/grid/IGridProps\";\r\nimport { readGridConfig, sortArrayData, isEditableRow, getCountryById, getRuleValidationMessage, getEntityDataFromSession } from \"../../../components/shared/common/util\";\r\nimport { GridType } from \"../../../models/GridType\";\r\nimport { getter } from \"@progress/kendo-data-query\";\r\nimport { IEntityLookupColumnConfig } from \"../../../models/IEntityLookupColumnConfig\";\r\nimport { PageMode } from \"../../../models/PageMode\";\r\nimport { SearchBox } from \"@fluentui/react\";\r\nimport { DefaultButton, PrimaryButton, MessageBar, IStackTokens, Panel, PanelType, Stack, ActionButton } from \"@fluentui/react\";\r\nimport { GridSelectionType } from \"../../../components/shared/grid/SelectionType\";\r\nimport { PageStyles } from \"../../pricingprogram/common/content/Page.Styles\";\r\nimport _ from \"lodash\";\r\nimport { ApplicationConstants } from \"../../../models/ApplicationConstants\";\r\nimport { JavaScriptExtensions } from \"../../../infrastructure/JavaScriptExtensions\";\r\nimport { ActionType } from \"../../../models/ActionType\";\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\n\r\nconst stackTokens: Partial<IStackTokens> = { childrenGap: 20 };\r\nconst PanelTableContainer: React.FunctionComponent<IPanelTableProps> = (props: IPanelTableProps) => {\r\n const { onClick } = props.primaryButtonProps;\r\n const { messageBar, sortingDataType, propertyName, panelType } = props;\r\n const [showPanel, { setTrue: openPanel, setFalse: dismissPanel }] = useBoolean(false);\r\n const [tableListConfig, setTableListConfig] = useState<IGridProps>(readGridConfig(props.headerText));\r\n const [selectedItems, setSelectedItems] = useState<any>([]);\r\n const idGetter = getter(tableListConfig.kendoGridProps.dataItemKey);\r\n const [choice, setChoice] = React.useState<string | undefined>(undefined);\r\n const [showErrorMessage, setShowErrorMessage] = useState<boolean>(false);\r\n const [searchText, setSearchText] = useState<string>('');\r\n let resetPaginationToDefault = { skip: 0, take: tableListConfig.kendoGridProps.noOfRecords }\r\n const resetChoice = React.useCallback(() => setChoice(undefined), []);\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n useEffect(() => {\r\n updateColumnConfig();\r\n if (props.selectedItems && props.selectedItems.length > 0) {\r\n setSelectedItemsOnReOpen();\r\n }\r\n setSelectedItems(props?.selectedItems)\r\n }, [props.tableContent.length, props.countrySelected, props.partnerTypeSelected, props.selectedItems])\r\n\r\n const customNoRecordsErrorMessage = () : string => {\r\n var country = getCountryById(props.countrySelected || \"\");\r\n if(props.headerText === GridType.DistributorList \r\n && (country?.isEUEFTA || country?.region === ApplicationConstants.MiddleEastRegion)) {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoDistributorFoundInEufta\", UIControlsText.NoDistributorFoundInEufta) || \"\";\r\n }\r\n\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoRecordsAvailableText\", UIControlsText.NoRecordsAvailableText) || \"\";\r\n }\r\n const isEditEnabled = (selectedRowState: any, isChecked: boolean) : boolean => {\r\n let selectedRow = selectedItems.find((t: any) => t.key === selectedRowState.key);\r\n if(JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedRow)) {\r\n return isChecked;\r\n }\r\n if(!JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedRow) \r\n && (selectedRow.action === ActionType.Add || selectedRow.action === ActionType.PanelAdd || JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedRow.action))) {\r\n return isChecked;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n const onRowSelectionCallBack = (selectedState: any) => {\r\n let selectedTableListConfig = { ...tableListConfig }\r\n const tableGridDataWithSelection = tableListConfig.kendoGridProps.data.map((item: any) => (\r\n {\r\n ...item, [tableListConfig.kendoGridProps.selectedField]: isEditEnabled(item, selectedState[idGetter(item)]),\r\n }));\r\n tableGridDataWithSelection.map((item: any) => {\r\n if (item.selected === true) {\r\n selectedItems.push(Object.assign(item));\r\n }\r\n });\r\n selectedTableListConfig = {\r\n kendoGridProps: {\r\n ...selectedTableListConfig.kendoGridProps,\r\n data: tableGridDataWithSelection,\r\n }\r\n };\r\n const a = tableGridDataWithSelection.filter((item: any) => item.selected).reduce((acc: any, ikk: any) => {\r\n return {\r\n ...acc,\r\n [`${ ikk.key }`]: ikk.selected,\r\n };\r\n }, {});\r\n const b = {\r\n ...selectedState,\r\n ...a,\r\n };\r\n\r\n const updatedSelectedItems = (Object.keys(b).map(item => {\r\n const val = selectedItems.filter((i: any) => i.key === item)[0]\r\n return {\r\n ...val,\r\n selected: b[item],\r\n };\r\n }).filter((k: any) => k.selected))\r\n const listUpdated = defaultStateUpdate(updatedSelectedItems);\r\n selectedTableListConfig.kendoGridProps.defaultMainGridSelectionstate = listUpdated;\r\n setTableListConfig(selectedTableListConfig);\r\n setSelectedItems(updatedSelectedItems);\r\n setShowErrorMessage(false);\r\n props.onItemSelection(updatedSelectedItems);\r\n };\r\n\r\n //Function to call to set the selected values\r\n const setSelectedItemsOnReOpen = () => {\r\n let selectedTableListConfig = { ...tableListConfig }\r\n let filteredTableContent = props?.tableContent.filter((fil: any) => fil.countryGeo === props?.geoSelected);\r\n if (props?.partnerTypeSelected) {\r\n filteredTableContent = filteredTableContent.filter((fil: any) => fil.partnerType === props?.partnerTypeSelected);\r\n }\r\n const updatedTableData = filteredTableContent?.length ? filteredTableContent.map((val: any) => {\r\n const keysSelected = props.selectedItems.map((item: any) => item.key);\r\n const selected = keysSelected.includes(val.key) ? true : undefined;\r\n const item = props.selectedItems.filter((item: any) => item.key === val.key)\r\n var iseditMode = val.editMode;\r\n if (item.length > 0) {\r\n iseditMode = item[0].editMode\r\n }\r\n return {\r\n ...val,\r\n selected,\r\n editMode: iseditMode,\r\n };\r\n }) : [];\r\n const updatedConfig = defaultStateUpdate(props.selectedItems);\r\n selectedTableListConfig.kendoGridProps.defaultMainGridSelectionstate = updatedConfig;\r\n selectedTableListConfig.kendoGridProps.totalRecords = updatedTableData.length;\r\n const sortedData = sortingDataType && propertyName && sortArrayData(updatedTableData, sortingDataType, propertyName)\r\n selectedTableListConfig = {\r\n kendoGridProps: {\r\n ...selectedTableListConfig.kendoGridProps,\r\n data: sortedData,\r\n }\r\n };\r\n setTableListConfig(selectedTableListConfig);\r\n }\r\n\r\n const defaultStateUpdate = (selectedValues: any) => {\r\n const state: any = {};\r\n selectedValues.forEach((item: any) => { state[idGetter(item)] = true });\r\n return tableListConfig.kendoGridProps.defaultMainGridSelectionstate = state;\r\n }\r\n const updateColumnConfig = () => {\r\n let selectedTableListConfig = { ...tableListConfig };\r\n //add selected property\r\n let filteredTableContent = props?.tableContent.filter((fil: any) => fil.countryGeo === props?.geoSelected);\r\n if (props?.partnerTypeSelected) {\r\n filteredTableContent = filteredTableContent.filter((fil: any) => fil.partnerType === props?.partnerTypeSelected);\r\n }\r\n const modifiedData = filteredTableContent.map((val: any) => {\r\n const keysSelected = props.selectedItems.map((item: any) => item.key);\r\n const selected = keysSelected.includes(val.key) ? true : undefined;\r\n return {\r\n ...val,\r\n selected: selected,\r\n };\r\n });\r\n const sortedData: any = sortingDataType && propertyName && sortArrayData(modifiedData, sortingDataType, propertyName);\r\n selectedTableListConfig.kendoGridProps.data = sortedData;\r\n const updatedConfig = defaultStateUpdate(props.selectedItems);\r\n selectedTableListConfig.kendoGridProps.defaultMainGridSelectionstate = updatedConfig;\r\n //Retain Selection When Country is Changed\r\n const { defaultMainGridSelectionstate } = selectedTableListConfig.kendoGridProps\r\n const keyList = Object.keys(defaultMainGridSelectionstate || {})\r\n if (keyList.length > 0) {\r\n sortedData?.map((x: any) => keyList.forEach(y => { return (y === x.key ? x.selected = true : undefined) }));\r\n }\r\n //setMultiple columns -- displayOrder is the unique Key \r\n let updatedResellerColumns: any = [];\r\n const columns: IEntityLookupColumnConfig[] = props.columnDefinitions || [];\r\n selectedTableListConfig.kendoGridProps.selectionType = props?.selectionType || GridSelectionType.Mulitple;\r\n selectedTableListConfig.kendoGridProps.columns.map((item: any, i) => {\r\n const selectedIndex: any = columns.findIndex(x => x.displayOrder === item.displayOrder);\r\n const obj = {\r\n ...item,\r\n ...columns[selectedIndex],\r\n };\r\n updatedResellerColumns = [...updatedResellerColumns, obj];\r\n return updatedResellerColumns;\r\n });\r\n selectedTableListConfig.kendoGridProps.columns = updatedResellerColumns;\r\n selectedTableListConfig.kendoGridProps.totalRecords = filteredTableContent.length;\r\n setTableListConfig(selectedTableListConfig);\r\n };\r\n\r\n\r\n const onDismiss = React.useCallback((ev?: React.SyntheticEvent | KeyboardEvent) => {\r\n if (ev) {\r\n ev.preventDefault();\r\n dismissPanel();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n //Fixing Accessibility issue for PanelGrid FilterOption\r\n var gridFilter = document.querySelectorAll(\"#PanelTableContainer .k-dropdown-wrap .k-input\");\r\n for (let i = 0; i < gridFilter.length; i++) {\r\n gridFilter[i].setAttribute('role', 'option');\r\n gridFilter[i].setAttribute('title', 'option');\r\n }\r\n\r\n //Fixing Accessibility issue for Panel grid filterTextbox\r\n const filterTextFieldColumns = tableListConfig.kendoGridProps.columns.filter(item => item.allowFilter && !item.categoryFilterCell && item.isVisible === true);\r\n var filterTextbox = document.querySelectorAll(\"#PanelTableContainer .k-filtercell .k-filtercell-wrapper > .k-textbox\");\r\n filterTextbox && filterTextbox.forEach(c => {\r\n for (let i = 0; i < filterTextbox.length; i++) {\r\n if (filterTextFieldColumns[i]) {\r\n filterTextbox[i].setAttribute('aria-label', `${ filterTextFieldColumns[i].columnTitle }`);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const onSearchChange = (search: string) => {\r\n let selectedTableListConfig = { ...tableListConfig };\r\n let filteredTableContent = selectedTableListConfig.kendoGridProps.data.filter((fil: any) => fil.countryGeo === props?.geoSelected);\r\n if (props?.partnerTypeSelected) {\r\n filteredTableContent = filteredTableContent.filter((fil: any) => fil.partnerType === props?.partnerTypeSelected);\r\n }\r\n // const uniqueTableContent = _.uniqBy(filteredTableContent.map((item: any) => ({ ...item })), 'key');\r\n selectedTableListConfig.kendoGridProps.data = filteredTableContent;\r\n if (search.length === 0) {\r\n setSearchText('');\r\n //To Keep the selection Retained after clearing the Search\r\n updateColumnConfig();\r\n defaultStateUpdate(selectedItems);\r\n const { data, defaultMainGridSelectionstate } = selectedTableListConfig.kendoGridProps;\r\n const keyList = Object.keys(defaultMainGridSelectionstate || {})\r\n data.map((x: any) => keyList.forEach(y => { return y === x.key ? x.selected = true : undefined }));\r\n }\r\n const filteredData = selectedTableListConfig.kendoGridProps.data.filter((item: any) => item.name.toLowerCase().includes(search.toLowerCase()));\r\n setSearchText(search);\r\n selectedTableListConfig.kendoGridProps.data = filteredData;\r\n selectedTableListConfig.kendoGridProps.totalRecords = filteredData.length;\r\n resetPaginationToDefault = { skip: 0, take: selectedTableListConfig.kendoGridProps.noOfRecords }\r\n return setTableListConfig(selectedTableListConfig);\r\n }\r\n\r\n const onSubmitClick = (e: any) => {\r\n onClick && onClick(e);\r\n setShowErrorMessage(!!!(props.selectedItems.length > 0))\r\n return props.selectedItems.length === 0 ? () => { } : dismissPanel();\r\n }\r\n\r\n const onCancel = () => {\r\n props.onDefaultButtonClick();\r\n return dismissPanel();\r\n };\r\n\r\n const onPanelClick = () => {\r\n props.invokePanelProps.onButtonClick();\r\n return openPanel();\r\n }\r\n\r\n const onSearchClear = () => {\r\n setSearchText('');\r\n }\r\n\r\n const onClearAllClick = () => {\r\n props?.onClearAll();\r\n setSearchText('');\r\n setSelectedItems([]);\r\n let selectedTableListConfig = { ...tableListConfig };\r\n let filteredTableContent = props?.tableContent.filter((fil: any) => fil.countryGeo === props?.geoSelected);\r\n if (props?.partnerTypeSelected) {\r\n filteredTableContent = filteredTableContent.filter((fil: any) => fil.partnerType === props?.partnerTypeSelected);\r\n }\r\n const uniqueTableContent = _.uniqBy(filteredTableContent.map((item: any) => ({ ...item })), 'key');\r\n selectedTableListConfig.kendoGridProps.data = uniqueTableContent;\r\n selectedTableListConfig.kendoGridProps.defaultMainGridSelectionstate = {};\r\n return setTableListConfig(selectedTableListConfig);\r\n };\r\n const onRenderFooterContent = React.useCallback(\r\n () => (\r\n <>\r\n {messageBar && showErrorMessage &&\r\n < div >\r\n <MessageBar\r\n messageBarType={messageBar.messageBarType}\r\n isMultiline={messageBar.isMultiline}\r\n onDismiss={resetChoice}\r\n dismissButtonAriaLabel=\"Close\"\r\n >\r\n {props?.errorMessage}\r\n </MessageBar>\r\n </div>}\r\n <div style={{ display: 'flex', flexDirection: 'row' }}>\r\n <PrimaryButton\r\n aria-label={props?.primaryButtonProps?.ariaLabel}\r\n style={{\r\n ...props?.primaryButtonProps?.style\r\n }}\r\n text={props?.primaryButtonProps?.text}\r\n onClick={onSubmitClick}\r\n />\r\n {props?.additionalFooterButtons}\r\n <DefaultButton\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CancelText\", UIControlsText.CancelText)}\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CancelText\", UIControlsText.CancelText)}\r\n onClick={onCancel}\r\n style={PageStyles.panelButtonStyle}\r\n />\r\n <div style={PageStyles.panelButtonStyle}> {props?.footerTextField}</div>\r\n </div>\r\n </>\r\n ),\r\n [dismissPanel, selectedItems, messageBar, showErrorMessage],\r\n );\r\n\r\n return (\r\n <Stack tokens={stackTokens}>\r\n {!props.invokePanelProps.disabled && \r\n <PrimaryButton\r\n iconProps={props.invokePanelProps.iconProps}\r\n disabled={props.PageMode?.toLowerCase() === PageMode.View.toLowerCase() || props.invokePanelProps.disabled}\r\n style={props.invokePanelProps?.buttonStyles}\r\n onClick={onPanelClick}>\r\n {props.invokePanelProps.buttonText}\r\n </PrimaryButton>\r\n }\r\n <Panel\r\n id=\"PanelTableContainer\"\r\n isOpen={showPanel}\r\n type={PanelType.custom}\r\n customWidth='610px'\r\n onDismiss={onDismiss}\r\n closeButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CloseText\", UIControlsText.CloseText)}\r\n isFooterAtBottom={true}\r\n onRenderFooterContent={onRenderFooterContent}\r\n onOpen={() => {\r\n updateColumnConfig();\r\n if (props.selectedItems && props.selectedItems.length > 0) {\r\n setSelectedItemsOnReOpen();\r\n }\r\n }}\r\n headerText={props.headerText} >\r\n {props.tableConfigurationFields}\r\n < div style={{ display: 'flex', justifyContent: 'space-between' }\r\n }>\r\n <SearchBox\r\n placeholder=\"Search\"\r\n value={searchText}\r\n showIcon\r\n onClear={onSearchClear}\r\n onChange={(_, newValue: any) => onSearchChange(newValue)}\r\n style={{ width: '400px' }}\r\n className=\"searchBoxContainer\" />\r\n <ActionButton onClick={onClearAllClick} style={{ cursor: 'pointer' }}>\r\n Clear All\r\n </ActionButton>\r\n </div >\r\n <div id='panelTableGrid'>\r\n <NextGenKendoGrid\r\n {...{\r\n kendoGridProps: { ...tableListConfig.kendoGridProps },\r\n onRowSelectionCallBack,\r\n disableSelectAllCheckbox: false,\r\n resetPaginationToDefault: resetPaginationToDefault,\r\n customNoRecordsErrorMessage: customNoRecordsErrorMessage,\r\n }}\r\n />\r\n </div>\r\n </Panel >\r\n </Stack >\r\n );\r\n};\r\n\r\nexport default PanelTableContainer;","import { TextField, Stack, IStackTokens } from '@fluentui/react';\r\nimport Attachment from '../../../components/shared/attachment';\r\nimport { PageStyles } from '../../pricingprogram/common/content/Page.Styles';\r\nimport { IFinalTierFields } from '../props/IFInalTierFields';\r\n\r\nconst horizontalGapStackTokens: IStackTokens = {\r\n childrenGap: 10,\r\n padding: 10,\r\n};\r\n\r\nconst FinalTierFields = (props: IFinalTierFields) => {\r\n const {\r\n ResellerNameTextField,\r\n ContactName,\r\n ContactEmail,\r\n Address,\r\n City,\r\n StateOrProvince,\r\n PostalCode,\r\n attachment,\r\n showAttachment\r\n } = props;\r\n return (\r\n <>\r\n <Stack horizontal tokens={horizontalGapStackTokens}>\r\n <TextField\r\n id={ResellerNameTextField.id}\r\n name={ResellerNameTextField.name}\r\n label={ResellerNameTextField.label}\r\n styles={ResellerNameTextField.styles}\r\n placeholder={ResellerNameTextField.placeholder}\r\n required={ResellerNameTextField.required}\r\n validateOnLoad={ResellerNameTextField.validateOnLoad}\r\n validateOnFocusOut={true}\r\n maxLength={ResellerNameTextField.maxLength}\r\n value={ResellerNameTextField.value}\r\n onChange={ResellerNameTextField.onChange}\r\n onGetErrorMessage={ResellerNameTextField.onGetErrorMessage}\r\n disabled={ResellerNameTextField.disabled}\r\n />\r\n </Stack>\r\n <Stack horizontal tokens={horizontalGapStackTokens}>\r\n <TextField\r\n id={ContactName.id}\r\n name={ContactName.name}\r\n label={ContactName.label}\r\n styles={ContactName.styles}\r\n placeholder={ContactName.placeholder}\r\n required={ContactName.required}\r\n validateOnLoad={false}\r\n validateOnFocusOut={true}\r\n maxLength={ContactName.maxLength}\r\n value={ContactName.value}\r\n onChange={ContactName.onChange}\r\n onGetErrorMessage={ResellerNameTextField.onGetErrorMessage}\r\n disabled={ContactName.disabled}\r\n />\r\n <TextField\r\n id={ContactEmail.id}\r\n name={ContactEmail.name}\r\n label={ContactEmail.label}\r\n styles={ContactEmail.styles}\r\n placeholder={ContactEmail.placeholder}\r\n required={ContactEmail.required}\r\n validateOnLoad={false}\r\n validateOnFocusOut={true}\r\n maxLength={ContactEmail.maxLength}\r\n value={ContactEmail.value}\r\n onChange={ContactEmail.onChange}\r\n onGetErrorMessage={ResellerNameTextField.onGetErrorMessage}\r\n disabled={ContactEmail.disabled}\r\n />\r\n </Stack>\r\n <Stack horizontal tokens={horizontalGapStackTokens}>\r\n <TextField\r\n id={Address.id}\r\n name={Address.name}\r\n label={Address.label}\r\n styles={Address.styles}\r\n placeholder={Address.placeholder}\r\n required={Address.required}\r\n validateOnLoad={false}\r\n validateOnFocusOut={true}\r\n maxLength={Address.maxLength}\r\n value={Address.value}\r\n onChange={Address.onChange}\r\n onGetErrorMessage={ResellerNameTextField.onGetErrorMessage}\r\n disabled={Address.disabled}\r\n />\r\n <TextField\r\n id={City.id}\r\n name={City.name}\r\n label={City.label}\r\n styles={City.styles}\r\n placeholder={City.placeholder}\r\n required={City.required}\r\n validateOnLoad={false}\r\n validateOnFocusOut={true}\r\n maxLength={City.maxLength}\r\n value={City.value}\r\n onChange={City.onChange}\r\n onGetErrorMessage={ResellerNameTextField.onGetErrorMessage}\r\n disabled={City.disabled}\r\n />\r\n </Stack>\r\n <Stack horizontal tokens={horizontalGapStackTokens}>\r\n <TextField\r\n id={StateOrProvince.id}\r\n name={StateOrProvince.name}\r\n label={StateOrProvince.label}\r\n styles={StateOrProvince.styles}\r\n placeholder={StateOrProvince.placeholder}\r\n required={StateOrProvince.required}\r\n validateOnLoad={false}\r\n validateOnFocusOut={true}\r\n maxLength={StateOrProvince.maxLength}\r\n value={StateOrProvince.value}\r\n onChange={StateOrProvince.onChange}\r\n onGetErrorMessage={ResellerNameTextField.onGetErrorMessage}\r\n disabled={StateOrProvince.disabled}\r\n />\r\n <TextField\r\n id={PostalCode.id}\r\n name={PostalCode.name}\r\n label={PostalCode.label}\r\n styles={PostalCode.styles}\r\n placeholder={PostalCode.placeholder}\r\n required={PostalCode.required}\r\n validateOnLoad={false}\r\n validateOnFocusOut={true}\r\n maxLength={PostalCode.maxLength}\r\n value={PostalCode.value}\r\n onChange={PostalCode.onChange}\r\n onGetErrorMessage={ResellerNameTextField.onGetErrorMessage}\r\n disabled={PostalCode.disabled}\r\n />\r\n </Stack>\r\n {attachment && showAttachment &&\r\n <Stack horizontal tokens={horizontalGapStackTokens}>\r\n <Attachment\r\n {...{\r\n ...attachment\r\n }}\r\n />\r\n </Stack>}\r\n </>\r\n );\r\n}\r\n\r\nexport default FinalTierFields;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { IStackTokens, Panel, PanelType, Stack, ActionButton, Dialog } from \"office-ui-fabric-react\";\r\nimport { IPanelFieldProps } from \"../props/PanelFieldProps\";\r\nimport { useBoolean } from '@fluentui/react-hooks';\r\nimport { UIControlsText } from \"../../../content/UIControlsText\";\r\nimport { PageMode } from \"../../../models/PageMode\";\r\nimport { DefaultButton, PrimaryButton, MessageBar, DialogType, DialogFooter } from \"@fluentui/react\";\r\nimport { CssClassConstants } from \"../../../content/CssClassConstants\";\r\nimport FinalTierFields from \"./FinalTierFields\";\r\nimport { PageStyles } from \"../../pricingprogram/common/content/Page.Styles\";\r\nimport { JavaScriptExtensions } from \"../../../infrastructure/JavaScriptExtensions\";\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"../../../components/shared/common/util\";\r\n\r\nconst stackTokens: Partial<IStackTokens> = { childrenGap: 20 };\r\nconst modalPropsStyles = { main: { maxWidth: 450 } };\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\nconst dialogContentProps = {\r\n type: DialogType.normal,\r\n title: '',\r\n subText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelDialogText\", UIControlsText.CancelDialogText),\r\n};\r\n\r\nconst PanelFieldContainer: React.FunctionComponent<IPanelFieldProps> = (props: IPanelFieldProps) => {\r\n const { onClick } = props.secondaryButtonFields;\r\n const { messageBar, showErrorMessage } = props;\r\n const [showPanel, { setTrue: openPanel, setFalse: dismissPanel }] = useBoolean(false);\r\n const [choice, setChoice] = React.useState<string | undefined>(undefined);\r\n const [hideDialog, { toggle: toggleHideDialog }] = useBoolean(true);\r\n const resetChoice = React.useCallback(() => setChoice(undefined), []);\r\n const modalProps = React.useMemo(\r\n () => ({\r\n isBlocking: true,\r\n styles: modalPropsStyles,\r\n }),\r\n [],\r\n );\r\n\r\n useEffect(() => {\r\n if (JavaScriptExtensions.isDefined(props.openPanel) && props.openPanel) {\r\n openPanel();\r\n }\r\n else {\r\n dismissPanel();\r\n }\r\n\r\n }, [props.openPanel]);\r\n\r\n //To enable interaction with the popup - Click on close button will dismiss the panel\r\n const onDismiss = React.useCallback(\r\n (ev?: React.SyntheticEvent<HTMLElement, Event>) => {\r\n if (!ev) return;\r\n // eslint-disable-next-line\r\n const srcElement = ev.nativeEvent.srcElement as Element | null;\r\n if ((srcElement && srcElement.className.indexOf('ms-Button-flexContainer') !== -1)\r\n || (srcElement && srcElement.className.indexOf('ms-Button-icon') !== -1)) {\r\n dismissPanel();\r\n } else return;\r\n },\r\n [dismissPanel],\r\n );\r\n\r\n const onSubmitClick = (e: any) => {\r\n props?.primaryButtonFields?.onClick && props?.primaryButtonFields?.onClick(e);\r\n if (props.isError) {\r\n return;\r\n }\r\n return dismissPanel();\r\n }\r\n\r\n const onSecondaryButtonClick = (ev: any) => {\r\n onClick && onClick(ev);\r\n }\r\n //Panel Cancel Button\r\n const onCancel = () => {\r\n toggleHideDialog();\r\n };\r\n\r\n const OnCancelDialog = () => {\r\n toggleHideDialog();\r\n props.onCancel();\r\n return dismissPanel();\r\n }\r\n\r\n const OnSubmitDialog = (e: any) => {\r\n props?.primaryButtonFields?.onClick && props?.primaryButtonFields?.onClick(e);\r\n toggleHideDialog();\r\n if (props.isError) {\r\n return;\r\n }\r\n return dismissPanel();\r\n }\r\n const onRenderFooterContent = React.useCallback(\r\n () => (\r\n <>\r\n <div className=\"panelNavigationContainer\">\r\n <ActionButton\r\n aria-label=\"previous form\"\r\n text=\"Back\" label=\"Back\"\r\n iconProps={{\r\n iconName: CssClassConstants.BackButtonClass,\r\n ariaLabel: CssClassConstants.BackButtonClass\r\n }}\r\n onClick={props.onBackButtonClick}\r\n disabled={props.isBackButtonDisabled}\r\n >\r\n Back\r\n </ActionButton>\r\n <ActionButton\r\n aria-label=\" next form\"\r\n text=\"Next\" label=\"Next\"\r\n iconProps={{\r\n iconName: CssClassConstants.NextButtonClass,\r\n ariaLabel: CssClassConstants.NextButtonClass\r\n }}\r\n className='NextButtonWithIcon'\r\n onClick={props.onNextButtonClick}\r\n disabled={props.isNextButtonDisabled}\r\n >\r\n Next\r\n </ActionButton>\r\n </div>\r\n {messageBar && showErrorMessage &&\r\n < div >\r\n <MessageBar\r\n messageBarType={messageBar.messageBarType}\r\n isMultiline={messageBar.isMultiline}\r\n onDismiss={resetChoice}\r\n dismissButtonAriaLabel=\"Close\"\r\n >\r\n {props?.errorMessage}\r\n </MessageBar>\r\n </div>}\r\n <div>\r\n <PrimaryButton\r\n aria-label={props?.primaryButtonFields?.ariaLabel}\r\n style={props?.primaryButtonFields?.style}\r\n text={props?.primaryButtonFields?.text}\r\n onClick={onSubmitClick}\r\n disabled={props?.primaryButtonFields?.disabled}\r\n />\r\n {props?.secondaryButtonFields && <PrimaryButton\r\n aria-label={props?.secondaryButtonFields?.ariaLabel}\r\n style={props?.secondaryButtonFields?.style}\r\n text={props?.secondaryButtonFields?.text}\r\n onClick={onSecondaryButtonClick}\r\n disabled={props?.secondaryButtonFields?.disabled}\r\n />}\r\n <DefaultButton\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n onClick={onCancel}\r\n style={PageStyles.panelButtonStyle}\r\n />\r\n </div>\r\n </>\r\n\r\n ),\r\n [dismissPanel, props.isBackButtonDisabled, props.isNextButtonDisabled, props.primaryButtonFields?.disabled, props.secondaryButtonFields?.disabled, messageBar, props.errorFields],\r\n );\r\n const onPanelClick = () => {\r\n props.invokePanelProps.onButtonClick();\r\n return openPanel();\r\n }\r\n return (\r\n <Stack tokens={stackTokens}>\r\n <PrimaryButton\r\n iconProps={props.invokePanelProps.iconProps}\r\n disabled={props.PageMode?.toLowerCase() === PageMode.View.toLowerCase() || props.invokePanelProps.disabled}\r\n style={props.invokePanelProps?.buttonStyles}\r\n onClick={onPanelClick}>\r\n {props.invokePanelProps.buttonText}\r\n </PrimaryButton>\r\n <Panel\r\n id=\"PanelFieldContainer\"\r\n isOpen={showPanel}\r\n type={PanelType.custom}\r\n customWidth='600px'\r\n onDismiss={onDismiss}\r\n onDismissed={props.onDismissed}\r\n closeButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n isFooterAtBottom={true}\r\n onRenderFooterContent={onRenderFooterContent}\r\n onOpen={() => {\r\n\r\n }}\r\n headerText={props.headerText}\r\n >\r\n {props.text ? props.text : ''}\r\n {props.panelContent}\r\n <Dialog\r\n hidden={hideDialog}\r\n onDismiss={toggleHideDialog}\r\n dialogContentProps={dialogContentProps}\r\n modalProps={modalProps}\r\n >\r\n <DialogFooter>\r\n <PrimaryButton onClick={OnSubmitDialog} text={props.text ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddAdditionResellersText\", UIControlsText.AddAdditionResellersText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddFinalTierResellers\", UIControlsText.AddFinalTierResellers)} />\r\n <DefaultButton onClick={OnCancelDialog} text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)} />\r\n </DialogFooter>\r\n </Dialog>\r\n </Panel>\r\n </Stack >\r\n );\r\n};\r\n\r\nexport default PanelFieldContainer;","import { CoherenceDialog, CoherenceDialogFooter } from \"@cseo/controls\";\r\nimport { DialogType, Stack } from \"@fluentui/react\";\r\nimport React from \"react\";\r\nimport { IComponentDataItem } from \"../Components/DynamicFormRendering\";\r\n\r\nexport function DialogComponent(props: IComponentDataItem) {\r\n const [showMessageBar, setShowMessageBar] = React.useState(true);\r\n const toggleMessageBar = (): (() => void) => (): void => setShowMessageBar(!showMessageBar);\r\n\r\n return (\r\n <Stack>\r\n <CoherenceDialog\r\n hidden={props?.hidden as boolean}\r\n onDismiss={props?.onDismiss as ((ev?: React.MouseEvent<HTMLButtonElement, MouseEvent> | undefined) => any)}\r\n isBlocking={props?.isBlocking as boolean}\r\n dialogContentProps={{\r\n type: DialogType.normal,\r\n title: props?.title as string,\r\n subText: props?.subText as string\r\n }}\r\n >\r\n {props?.DialogContent}\r\n <CoherenceDialogFooter>\r\n props?.FooterContent\r\n </CoherenceDialogFooter>\r\n </CoherenceDialog>\r\n </Stack>\r\n );\r\n}","/**\r\n * Enum for PageSubMode.\r\n * @readonly\r\n * @enum {number}\r\n */\r\n export enum PageSubMode {\r\n\r\n /**\r\n * Copy.\r\n */\r\n Copy = \"copy\",\r\n\r\n /**\r\n * Renew.\r\n */\r\n Renew = \"renew\",\r\n}","import { Store } from \"azsearchstore\";\r\nimport { DefaultButton, PrimaryButton, Stack, StackItem } from \"office-ui-fabric-react\";\r\nimport React from \"react\";\r\nimport { useState } from \"react\";\r\nimport AutoSuggest from \"react-autosuggest\";\r\nimport { _Styles } from \"../../../content/styles/Page.styles\";\r\nimport { ISearchProps } from \"./ISearchProps\";\r\nimport { UIControlsText } from '../../../../src/content/UIControlsText';\r\nimport { isFieldDisabled, isNullOrEmpty } from \"../common/util\";\r\nimport { PageStyles } from \"../../../pages/pricingprogram/common/content/Page.Styles\";\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"../../../components/shared/common/util\";\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings)\r\n/**\r\n * SearchBar Component.\r\n * @function component\r\n */\r\nexport const SearchBar: React.FunctionComponent<ISearchProps> = (props: ISearchProps) => {\r\n\r\n let state = props.store.getState();\r\n const [value, setValue] = useState(\"\");\r\n const [suggestions, setSuggestions] = useState<string[]>([]);\r\n //function to get suggestions based on user type\r\n function getSuggestions(): string[] {\r\n let suggestionResults = state.suggestions.suggestions.map((suggestion: any) => {\r\n return suggestion[state.parameters.suggestionsParameters.select];\r\n });\r\n if (props.showDistinctSuggestions != undefined && props.showDistinctSuggestions) {\r\n return [...new Map(suggestionResults.map((item: any) => [item, item])).values()];\r\n }\r\n else {\r\n return suggestionResults;\r\n }\r\n }\r\n function getSuggestionValue(suggestion: any) {\r\n return suggestion;\r\n }\r\n //search data on click of search\r\n function onSubmit() {\r\n let formatValue = value.split(\",\");\r\n if ((props.hideSlashFormatter == undefined || !props.hideSlashFormatter ) && !isNullOrEmpty(value) && formatValue.length > 0) {\r\n formatValue = formatValue.map((eachSearchValue) => {\r\n return '\"' + eachSearchValue + '\"'\r\n });\r\n }\r\n props.store.setInput(formatValue.join());\r\n props.onSubmit(formatValue.join());\r\n }\r\n\r\n function onSearchKeyPress(event: any): void {\r\n if (event.keyCode === 13) {\r\n setTimeout(() => { onSubmit(); }, 200)\r\n }\r\n }\r\n\r\n function onClear() {\r\n setValue(\"\");\r\n props.onClear();\r\n }\r\n function assignSearchValue(searchValue: string): void {\r\n setValue(searchValue);\r\n props.store.setInput(searchValue);\r\n if (props.onSuggest != undefined) {\r\n let filterCondition = props.onSuggest(searchValue);\r\n props.store.updateSuggestionsParameters({\r\n filter: filterCondition\r\n });\r\n }\r\n props.store.suggest();\r\n }\r\n function onShowFacets() {\r\n props.onShowFacets?.();\r\n }\r\n const showSearchButton = () => {\r\n if (!isNullOrEmpty(props.hideSearchBtn)) {\r\n return props.hideSearchBtn;\r\n }\r\n else {\r\n return !isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SearchButton\", UIControlsText.SearchButton), props?.pageMode, props?.opportunityDealStatusCode)\r\n }\r\n }\r\n\r\n \r\n return (\r\n <div className={[_Styles.SearchBarContainer, props.overrideCss].join(\" \")}>\r\n <AutoSuggest\r\n suggestions={suggestions}\r\n onSuggestionsClearRequested={() => setSuggestions([])}\r\n onSuggestionsFetchRequested={({ value }) => {\r\n setSuggestions(getSuggestions());\r\n //onHandleChange(value);\r\n }}\r\n onSuggestionSelected={(_, { suggestionValue }) =>\r\n console.log(suggestionValue)\r\n }\r\n getSuggestionValue={getSuggestionValue.bind(this)}\r\n renderSuggestion={(suggestion) => <span>{suggestion}</span>}\r\n inputProps={{\r\n placeholder: props.placeHolderText,\r\n value: value,\r\n minLength: 3,\r\n onChange: (_, { newValue, method }) => {\r\n assignSearchValue(newValue);\r\n },\r\n onKeyUp: (e) => {\r\n onSearchKeyPress(e);\r\n },\r\n }}\r\n highlightFirstSuggestion={true}\r\n id={props.searchID}\r\n \r\n\r\n />\r\n <Stack horizontal>\r\n <StackItem>\r\n <PrimaryButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SearchButton\", UIControlsText.SearchButton)} styles={PageStyles.commandButtonPadding} onClick={onSubmit}\r\n className=\"mt-0 me-1\" disabled={showSearchButton()}\r\n />\r\n </StackItem>\r\n <StackItem>\r\n <DefaultButton\r\n text={props.showFacetsText} styles={PageStyles.commandButtonPadding} aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ShowSearchFilter\", UIControlsText.ShowSearchFilter)}\r\n className=\"mt-0 me-1\" onClick={onShowFacets} hidden={props.hideFacetsButton}\r\n />\r\n </StackItem>\r\n <StackItem>\r\n <DefaultButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Clear\", UIControlsText.Clear)} styles={PageStyles.commandButtonPadding} onClick={onClear} className=\"mt-0 me-1 p-1\" />\r\n </StackItem>\r\n </Stack>\r\n </div>\r\n );\r\n};\r\n","import { Label } from \"office-ui-fabric-react\";\r\nimport React from \"react\";\r\nimport { default as ReactSelect } from \"react-select\";\r\nimport { IFacetData } from \"../../../models/IFacetData\";\r\nimport { IComboboxData } from \"./IComboboxData\";\r\nimport { IComboboxProps } from \"./IComboboxProps\";\r\n\r\nexport const SearchableComboBoxComponent: React.FunctionComponent<IComboboxProps> = (\r\n props: IComboboxProps\r\n) => {\r\n const [dataSource,setdataSource] = React.useState<IComboboxData[]>([]);\r\n const [selectedDataSource,setSelectedDataSource] = React.useState<IComboboxData[]>([]);\r\n React.useEffect(() => {\r\n var data: IComboboxData[] = [];\r\n var selectedData: IComboboxData[] = [];\r\n\r\n if(props.facetProps.facetData != null){\r\n\r\n if(props.facetProps.showFacetCount){\r\n data =\r\n props.facetProps.facetData.map((pt:IFacetData) => {\r\n return { value: pt.value, label: pt.value + ' ('+pt.count+')'}\r\n }); \r\n \r\n props.facetProps.facetData.map((pt:IFacetData) => {\r\n if(props.facetProps.selectedData?.some((x: { value: string; }) => x.value === pt.value)){\r\n selectedData.push({ value: pt.value, label: pt.value + ' ('+pt.count+')' });\r\n }\r\n });\r\n }\r\n else{\r\n data =\r\n props.facetProps.facetData.map((pt:IFacetData) => {\r\n return { value: pt.value, label: pt.value }\r\n }); \r\n \r\n props.facetProps.facetData.map((pt:IFacetData) => {\r\n if(props.facetProps.selectedData?.some((x: { value: string; }) => x.value === pt.value)){\r\n selectedData.push({ value: pt.value, label: pt.value });\r\n }\r\n });\r\n }\r\n \r\n setdataSource(data);\r\n setSelectedDataSource(selectedData);\r\n }\r\n }, [props.facetProps.facetData,props.facetProps.selectedData]);\r\n \r\n const handleChange = (selectedOptions:any) => {\r\n props.selectedValues(selectedOptions,props.facetProps.facetName);\r\n };\r\n const styles = {\r\n control: (base: any) => ({\r\n ...base,\r\n fontFamily: \"Segoe UI\",\r\n fontSize: \"12px\"\r\n }),\r\n menu: (base: any) => ({\r\n ...base,\r\n fontFamily: \"Segoe UI\",\r\n fontSize: \"12px\"\r\n })\r\n };\r\n return (\r\n <div>\r\n <Label>{props.facetProps.facetLabel}</Label> \r\n <ReactSelect\r\n aria-label={props.facetProps.facetLabel}\r\n options={dataSource}\r\n isMulti\r\n closeMenuOnSelect={false}\r\n hideSelectedOptions={false}\r\n maxMenuHeight={250}\r\n onChange={handleChange}\r\n value = {selectedDataSource}\r\n styles={styles}\r\n />\r\n </div>\r\n );\r\n};","/**\r\n * Enum for CaseActions\r\n * @readonly\r\n * @enum {number}\r\n */\r\n export enum CaseActions {\r\n /**\r\n * Revert\r\n */\r\n Revert = \"Revert\",\r\n\r\n /**\r\n * Expire\r\n */\r\n Expire = \"Expire\",\r\n\r\n /**\r\n * Delete\r\n */\r\n Delete = \"Delete\",\r\n\r\n /**\r\n * Copy\r\n */\r\n Copy = \"Copy\",\r\n\r\n /**\r\n * Renew\r\n */\r\n Renew = \"Renew\",\r\n\r\n /**\r\n * Extend\r\n */\r\n Extend = \"Extend\",\r\n\r\n /**\r\n * ViewCaseLetters\r\n */\r\n ViewCaseLetters = \"ViewCaseLetters\",\r\n\r\n /**\r\n * DownloadCaseLetters\r\n */\r\n DownloadCaseLetters = \"DownloadCaseLetters\",\r\n\r\n /**\r\n * Edit\r\n */\r\n Edit = \"Edit\",\r\n\r\n /**\r\n * View\r\n */\r\n View = \"View\"\r\n}","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { useBoolean } from '@fluentui/react-hooks';\r\nimport { IActionMenuProps } from \"./IActionMenuProps\";\r\nimport {\r\n CommandBarButton, DefaultButton, IStackTokens, PrimaryButton, Stack, MessageBar,\r\n MessageBarType, DatePicker, defaultDatePickerStrings, IStackProps, TextField, Dropdown, IDropdownOption\r\n} from \"@fluentui/react\";\r\nimport {\r\n ActionButtonStyles, _Styles, stackStyles, stackGridStyles, expireDialog,\r\n stackButtonStyles, extendDialogButtonStyles, extendDialog, DatePickerStyles, textFieldStylesOneColumn, PaperStyle\r\n} from '../../../content/styles/Page.styles';\r\nimport { CssClassConstants } from \"../../../content/CssClassConstants\";\r\nimport { UIControlsText } from \"../../../content/UIControlsText\";\r\nimport { SessionStorageConsts } from \"../../../models/SessionStorageConsts\";\r\nimport { PageMode } from \"../../../models/PageMode\";\r\nimport { PageSubMode } from \"../../../models/PageSubMode\";\r\nimport { JavaScriptExtensions } from \"../../../infrastructure/JavaScriptExtensions\";\r\nimport { IActionButtonConfig } from \"./IActionButtonConfig\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport NextGenKendoGrid from \"../grid/nextgenkendogrid\";\r\nimport { downloadDatabyInputFormat, getLoggedinUserRoleDetails, getUserRole, readGridConfig, getUserDetails, getAllDealTypes, getAllDealQuantityThresholds, getStatusNameByCode, getAllDealDurationConfigs, getDealDurationConfig, getDealVolumes, isNullOrEmpty, getUserSession, getDistinctUserRole, IsInternalPricingProgram, IsExternalPricingProgram } from \"../common/util\";\r\nimport { IGridProps } from \"../grid/IGridProps\";\r\nimport { GridType } from \"../../../models/GridType\";\r\nimport { IUserRoleDetail } from \"../../../models/IUserRoleDetail\";\r\nimport { nextGenService } from \"../../../services/NextGenService\";\r\nimport { StateCode } from \"../../../models/StateCode\";\r\nimport { OpportunityDealStatusCodes } from \"../../../models/OpportunityDealStatusCodes\";\r\nimport { DealType } from \"../../../models/DealType\";\r\nimport { PartnerType } from \"../../../models/PartnerType\";\r\nimport { Label, Panel, Spinner } from \"office-ui-fabric-react\";\r\nimport { CaseActions } from \"./case-actions\";\r\nimport { ErrorMessages } from \"../../../content/ErrorMessages\";\r\nimport { IDealExtensionRequest } from \"../../../models/IDealExtensionRequest\";\r\nimport { OpportunityDealStatusNames } from \"../../../models/OpportunityDealStatusNames\";\r\nimport { IDealCopyRequest } from \"../../../models/IDealCopyRequest\";\r\nimport { IDealActionRequest } from \"../../../models/IDealActionRequest\";\r\nimport { ApplicationConstants } from \"../../../models/ApplicationConstants\";\r\nimport { ExtensionStatus } from \"../../../models/DealExtensionStatusNames\";\r\nimport { CompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\nimport { Card } from \"@cseo/controls\";\r\nimport { CardBody } from \"@fluentui/react-northstar\";\r\nimport Row from \"react-bootstrap/esm/Row\";\r\nimport Paper from \"@mui/material/Paper\";\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"../common/util\";\r\nimport { MessageTypeText } from \"../../../models/MessageTypeText\";\r\nimport { IDealRevertRequest } from \"../../../models/IDealRevertRequest\";\r\nimport { CaseDecisionLetterTypeOptions } from \"../../../services/StaticData\";\r\nimport { CaseDecisionLetterType } from \"../../../models/CaseDecisionLetterType\";\r\nimport { useCommonPPContext } from '../../../pages/pricingprogram/common/context/common-pp-context';\r\nimport { useToShowActionButtonTextOnHoverOrFocusInReflow } from \"../../../hooks/accessiblity-hooks\";\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nexport const ActionMenu: React.FunctionComponent<IActionMenuProps> = (configData: IActionMenuProps) => {\r\n const { actionConfig, selectedData } = configData;\r\n const config = { enableEdit: false, enableExpire: false, enableExtend: false, enableRenew: false, enableCopy: false, enableDelete: false, enableCPStrategicLetters: false, showCPStrategicLetters: true, showCPCaseDecisionLetter: true, enableCPCaseDecisionLetter: false, enableRevert: false };\r\n const [actionsConfig, setActionsConfig] = React.useState<IActionButtonConfig | undefined>(config);\r\n const [cpStrategicLettersConfig, setcpStrategicLettersConfig] = React.useState<IGridProps>(readGridConfig(GridType.CPStrategicLetters));\r\n\r\n const stackButtonTokens: IStackTokens = { childrenGap: 16 };\r\n const stackTokens: IStackTokens = { childrenGap: 24 };\r\n const columnProps: Partial<IStackProps> = {\r\n tokens: { childrenGap: 15 },\r\n styles: { root: { width: \"auto\", paddingRight: 20, paddingBottom: 20 } },\r\n };\r\n\r\n const [extensionReason, setExtensionReason] = useState<string>(\"\");\r\n const [expectedUnits, setExpectedUnits] = useState<number>(0);\r\n\r\n const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\r\n const [dialogConfig, setDialogConfig] = useState<any>({});\r\n const [selectedDeal, setSelectedDeal] = useState<any>();\r\n const [selectedAction, setSelectedAction] = useState<CaseActions>();\r\n const [selectedDate, setSelectedDate] = useState<Date>(new Date());\r\n const [readonly, setReadonly] = useState<boolean | undefined>(false);\r\n const [maxExpirationDate, setMaxExpirationDate] = useState<Date>(new Date());\r\n const [showExtensionWarning, setShowExtensionWarning] = useState<boolean>(false);\r\n const [showMaxExtensionWarning, setShowMaxExtensionWarning] = useState<boolean>(false);\r\n const [showExtensionFailure, setShowExtensionFailure] = useState<boolean>(false);\r\n const [showExtensionLimit, setShowExtensionLimit] = useState<boolean>(false);\r\n const [minUnitsForAutoApproval, setMinUnitsForAutoApproval] = useState<number>(0);\r\n const [showExtensionSuccess, setShowExtensionSuccess] = useState<boolean>(false);\r\n const [showExtensionReview, setShowExtensionReview] = useState<boolean>(false);\r\n const [disableConfirmBtn, setDisableConfirmBtn] = useState<boolean>(false);\r\n const [triggerExtend, setTriggerExtend] = useState<boolean>(false);\r\n const [showBackButton, setShowBackButton] = useState<boolean>(false);\r\n const [showMessageBanner, setShowMessageBanner] = useState<boolean>(false);\r\n const [extensionInProgress, setExtensionInProgress] = useState<boolean>(false);\r\n const [copyInProgress, setCopyInProgress] = useState<boolean>(false);\r\n const [renewInProgress, setRenewInProgress] = useState<boolean>(false);\r\n const [isDecisionLetterOpen, setIsDecisionLetterOpen] = useState<boolean>(false);\r\n const [isDecisionLetterSelectedWithSKU, setIsDecisionLetterSelectedWithSKU] = useState<boolean>(true);\r\n const [isLetterBeingDownloaded, setIsLetterBeingDownloaded] = useState<boolean>(false);\r\n\r\n const [isOpen, { setTrue: openPanel, setFalse: dismissPanel }] = useBoolean(false);\r\n const [manufacturersLetterButtonText, SetManufacturersLetterButtonText] = useState<string>(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CPStrategicLetters\", UIControlsText.CPStrategicLetters))\r\n const [decisionLetterButtonText, SetDecisionLetterButtonText] = useState<string>(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CPCaseDecisionLetter\", UIControlsText.CPCaseDecisionLetter))\r\n const [userRoles] = useState<string>(getUserRole());\r\n\r\n\r\n let userDetails = getUserDetails()\r\n\r\n useEffect(() => {\r\n setShowExtensionLimit(false)\r\n setShowMaxExtensionWarning(false)\r\n\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(configData.actionConfig)) {\r\n setActionsConfig(Object.assign(config, configData.actionConfig));\r\n }\r\n\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(configData.selectedData)) {\r\n setSelectedDeal(selectedData)\r\n }\r\n }, [configData.actionConfig])\r\n\r\n useEffect(() => {\r\n if (triggerExtend) {\r\n submitExtend()\r\n }\r\n }, [triggerExtend])\r\n\r\n //redirect to case submission edit mode.\r\n const onEditCase = () => {\r\n sessionStorage.setItem(SessionStorageConsts.pageMode, PageMode.Edit);\r\n sessionStorage.removeItem(SessionStorageConsts.pageSubMode);\r\n\r\n if (selectedData.dealType.name) {\r\n if (selectedData.dealType.name === ApplicationConstants.DealRegistration || selectedData.dealType.name === ApplicationConstants.SpecialPricing) {\r\n window.location.href = \"/managecase/pricingprogram?oppNumber=\" + selectedData.opportunityName + \"&oppDealNumber=\" + selectedData.name\r\n } else if (selectedData.dealType.name === ApplicationConstants.CPStrategic) {\r\n window.location.href = \"/managecase/cpstrategic?oppNumber=\" + selectedData.opportunityName\r\n } else {\r\n window.location.href = \"/managecase/otle?oppNumber=\" + selectedData.opportunityName\r\n }\r\n }\r\n };\r\n\r\n const onCPStrategicLetters = async (action: CaseActions) => {\r\n setSelectedAction(action);\r\n SetManufacturersLetterButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingMCL\", UIControlsText.LoadingMCL));\r\n let newActionConfig = { ...actionConfig };\r\n newActionConfig.enableCPStrategicLetters = false;\r\n setActionsConfig(newActionConfig);\r\n if (selectedData.dealType?.name.toLowerCase() === DealType.CPStrategic.toLowerCase()) {\r\n var userRole = getUserRole();\r\n var userSubRole = userRole.split(\",\");\r\n let response = await nextGenService.getCPStrategicLettersByOpportunityDealId(selectedData.id, userSubRole[0])\r\n if (response.data.length !== 0) {\r\n let cpStrategicConfig = { ...cpStrategicLettersConfig };\r\n cpStrategicConfig.kendoGridProps.data = response.data;\r\n cpStrategicConfig.kendoGridProps.totalRecords = response.data.length;\r\n setcpStrategicLettersConfig({ ...cpStrategicConfig });\r\n }\r\n\r\n setIsDialogOpen(true);\r\n }\r\n\r\n SetManufacturersLetterButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CPStrategicLetters\", UIControlsText.CPStrategicLetters));\r\n newActionConfig.enableCPStrategicLetters = true;\r\n setActionsConfig(newActionConfig);\r\n }; \r\n\r\n /**\r\n * DecisionLetterType Options change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {IDropdownOption} item Clicked Option from Dropdown.\r\n */\r\n const onDecisionLetterOptionChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item && item.key == CaseDecisionLetterType.WithoutSKU) {\r\n setIsDecisionLetterSelectedWithSKU(false);\r\n }\r\n else {\r\n setIsDecisionLetterSelectedWithSKU(true);\r\n }\r\n }\r\n\r\n const onCaseDecisionLetter = async (action: CaseActions) => {\r\n if (selectedData?.dealType?.name == UIControlsText.DealRegistrationText) {\r\n setIsDecisionLetterOpen(true);\r\n openDialog(action);\r\n }\r\n else {\r\n getCaseDecisionLetter(action)\r\n }\r\n };\r\n\r\n const getCaseDecisionLetter = async (action: CaseActions) => {\r\n var initialFilter: CompositeFilterDescriptor | undefined\r\n setSelectedAction(action)\r\n SetDecisionLetterButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Downloading\", UIControlsText.Downloading));\r\n let newActionConfig = { ...actionConfig };\r\n newActionConfig.enableCPCaseDecisionLetter = false;\r\n setActionsConfig(newActionConfig);\r\n try {\r\n const userSession = getUserSession();\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n let roles = userRoles.split(\",\");\r\n var filters: { field: any; operator: string; value: any; }[] = []\r\n filters.push(\r\n {\r\n \"field\": \"name\",\r\n \"operator\": \"eq\",\r\n \"value\": selectedData.name\r\n },\r\n )\r\n initialFilter = {\r\n logic: \"and\", filters: [\r\n {\r\n \"logic\": \"and\",\r\n \"filters\": filters\r\n }\r\n ]\r\n };\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n const dashboardRequest = {\r\n accountsIds: userRoleDetails.map(function (userRoleDetail: IUserRoleDetail) { return userRoleDetail.accountId }).join(','),\r\n userRoles: roles.join(\",\"),\r\n userRoleDetails: userRoleDetails,\r\n dealType: selectedData.dealType?.name,\r\n email: loggedInUserInfo.email,\r\n isLocalEmpowerment : selectedData.isLocalEmpowerment,\r\n tpiDs: [],\r\n filter: JSON.stringify(initialFilter),\r\n pageNumber: 1,\r\n recordsToFetch: ApplicationConstants.recordsToFetch,\r\n };\r\n let response = await nextGenService.getCaseLetters(selectedData.id, userRoleDetails, selectedData.dealType?.name, dashboardRequest, isDecisionLetterSelectedWithSKU) \r\n var FileName = \"\"; \r\n var dealType = selectedData.dealType.name?selectedData.dealType.name.toLowerCase():\"\";\r\n switch(dealType)\r\n {\r\n case DealType.DealRegistration.toLowerCase():\r\n case DealType.SpecialPricing.toLowerCase(): \r\n if(!selectedData.resellerName)\r\n { \r\n var opportunityDetails = await Promise.resolve(nextGenService.getOpportunityCommon(selectedData.opportunityName, userRoleDetails, selectedData.name));\r\n selectedData.resellerName = opportunityDetails?.data?.opportunityAccounts?.filter(pt=>pt.partnerType == 2 || pt.partnerType==3)[0]?.accountCompanyName;\r\n }\r\n FileName = JavaScriptExtensions.stringFormat(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DRSPCaseDecisionLetterFileName\", UIControlsText.DRSPCaseDecisionLetterFileName),selectedData.opportunityName,selectedData.resellerName? \"-\".concat(selectedData.resellerName):\"\",selectedData.customerName?\"-\".concat(selectedData.customerName):\"\");\r\n break;\r\n default:\r\n FileName = JavaScriptExtensions.stringFormat(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseDecisionLetterFileName\", UIControlsText.CaseDecisionLetterFileName),selectedData.opportunityName);\r\n break; \r\n } \r\n downloadDatabyInputFormat(FileName.replace(/[\\/:*?\"<>|]/g,''),response);\r\n\r\n } catch (error) {\r\n SetDecisionLetterButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CPCaseDecisionLetter\", UIControlsText.CPCaseDecisionLetter));\r\n newActionConfig = { ...actionConfig };\r\n newActionConfig.enableCPCaseDecisionLetter = true;\r\n setActionsConfig(newActionConfig);\r\n }\r\n SetDecisionLetterButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CPCaseDecisionLetter\", UIControlsText.CPCaseDecisionLetter));\r\n newActionConfig = { ...actionConfig };\r\n newActionConfig.enableCPCaseDecisionLetter = true;\r\n setActionsConfig(newActionConfig);\r\n };\r\n\r\n const ExtendMessage = (p: IExampleProps) => (\r\n <MessageBar\r\n messageBarType={MessageBarType.warning}\r\n isMultiline={true}\r\n onDismiss={p.close}\r\n dismissButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}> {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ExtendWarningMessage\", UIControlsText.Extend.WarningMessage)}\r\n </MessageBar>\r\n );\r\n\r\n const SuccessMessage = (p: IExampleProps) => (\r\n <MessageBar\r\n messageBarType={MessageBarType.success}\r\n isMultiline={true}\r\n onDismiss={p.close}\r\n dismissButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}> {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendExtensionSuccessMessage\", UIControlsText.Extend.ExtensionSuccessMessage)}\r\n </MessageBar>\r\n );\r\n const ReviewMessage = (p: IExampleProps) => (\r\n <MessageBar\r\n messageBarType={MessageBarType.warning}\r\n isMultiline={true}\r\n onDismiss={p.close}\r\n dismissButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}> {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ExtendExtensionReviewMessage\", UIControlsText.Extend.ExtensionReviewMessage)}\r\n </MessageBar>\r\n );\r\n\r\n const ExtendLimitMessage = (p: IExampleProps) => (\r\n <MessageBar\r\n messageBarType={MessageBarType.warning}\r\n isMultiline={true}\r\n onDismiss={p.close}\r\n dismissButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}> {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ExtendMaxExtensionLimitMessage\", UIControlsText.Extend.MaxExtensionLimitMessage)}\r\n </MessageBar>\r\n );\r\n\r\n const MaxExtendMessage = (p: IExampleProps) => (\r\n <MessageBar\r\n messageBarType={MessageBarType.warning}\r\n isMultiline={true}\r\n onDismiss={p.close}\r\n dismissButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}> {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ExtendMaxExtensionMessage\", UIControlsText.Extend.MaxExtensionMessage)}\r\n </MessageBar>\r\n );\r\n\r\n const ExtendFailureMessage = (p: IExampleProps) => (\r\n <MessageBar\r\n messageBarType={MessageBarType.warning}\r\n isMultiline={true}\r\n onDismiss={p.close}\r\n dismissButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}> {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ExtendExtensionFailureMessage\", UIControlsText.Extend.ExtensionFailureMessage)}\r\n </MessageBar>\r\n );\r\n\r\n interface IExampleProps {\r\n close?: () => void;\r\n }\r\n\r\n const onRenderFooterContent = React.useCallback(\r\n () => (\r\n <div>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendConfirmButton\", UIControlsText.Extend.ConfirmButton)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendConfirmButton\", UIControlsText.Extend.ConfirmButton)}\r\n onClick={onExtend}\r\n styles={extendDialogButtonStyles}\r\n disabled={disableConfirmBtn}\r\n />\r\n <DefaultButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendCancelButton\", UIControlsText.Extend.CancelButton)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendCancelButton\", UIControlsText.Extend.CancelButton)}\r\n onClick={onDismiss}\r\n styles={extendDialogButtonStyles}\r\n />\r\n </div>\r\n ),\r\n [dismissPanel],\r\n );\r\n\r\n const onRenderFooterContentBack = React.useCallback(\r\n () => (\r\n <div>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BackButtonText\", UIControlsText.BackButtonText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BackButtonText\", UIControlsText.BackButtonText)}\r\n onClick={onDismiss}\r\n styles={extendDialogButtonStyles}\r\n />\r\n </div>\r\n ),\r\n [dismissPanel],\r\n );\r\n\r\n async function openExtendDialog() {\r\n if (IsInternalPricingProgram(selectedDeal?.dealType?.name)) {\r\n return\r\n }\r\n \r\n setShowExtensionFailure(false)\r\n setShowExtensionSuccess(false)\r\n setShowExtensionWarning(false)\r\n setShowExtensionReview(false)\r\n setShowMessageBanner(false)\r\n setShowBackButton(false)\r\n setExtensionReason('')\r\n setExpectedUnits(0)\r\n\r\n setReadonly(false)\r\n sessionStorage.setItem(SessionStorageConsts.selectedDeal, JSON.stringify(selectedDeal))\r\n\r\n let dealVolumes = getDealVolumes(selectedDeal?.dealType?.name, selectedDeal?.productType, selectedDeal?.dealVertical, selectedDeal?.customerCountry)\r\n if (!isNullOrEmpty(dealVolumes) && selectedDeal?.dealType?.name == DealType.SpecialPricing) {\r\n let committedUnits = selectedDeal?.dealVolume || 0\r\n let autoApprovalUnits = Math.round((dealVolumes?.extensionMinimumUnitsTransacted || 0) * committedUnits / 100)\r\n setMinUnitsForAutoApproval(autoApprovalUnits)\r\n }\r\n\r\n let extensionConfig = await nextGenService.getDealExtensionConfig(selectedDeal?.id)\r\n if (extensionConfig.status === 200) {\r\n if (!extensionConfig.data.isExtensionAllowed) {\r\n setShowExtensionLimit(true)\r\n return\r\n }\r\n }\r\n\r\n let caseStartDate = selectedDeal?.caseStartDate\r\n let dealDurations = getDealDurationConfig(selectedDeal?.dealType?.name, selectedDeal?.customerCountry)\r\n if (isNullOrEmpty(dealDurations)) {\r\n return\r\n }\r\n\r\n let maxCaseDuration = dealDurations?.maximumDurationInMonths || 0;\r\n\r\n let newExpirationDate = new Date(caseStartDate)\r\n newExpirationDate.setMonth(caseStartDate.getMonth() + maxCaseDuration);\r\n\r\n if (selectedDeal?.expirationDate.getTime() === newExpirationDate.getTime()) {\r\n setShowMaxExtensionWarning(true)\r\n return\r\n }\r\n\r\n setMaxExpirationDate(newExpirationDate)\r\n setSelectedDate(newExpirationDate)\r\n // clear the calendar control prior to opening the panel to avoid overlapping\r\n document.querySelector(\"#fluent-default-layer-host\")?.remove();\r\n openPanel()\r\n }\r\n\r\n // workaround for react issue with async functions and state variables when using panels\r\n const onExtend = () => {\r\n setTriggerExtend(true)\r\n }\r\n\r\n const onDismiss = () => {\r\n setTriggerExtend(false)\r\n dismissPanel()\r\n }\r\n\r\n const submitExtend = async () => {\r\n try {\r\n setExtensionInProgress(true)\r\n setReadonly(true)\r\n let deal = selectedDeal || JSON.parse(sessionStorage.getItem(SessionStorageConsts.selectedDeal) || \"\")\r\n\r\n let dealVolumes = getDealVolumes(deal?.dealType?.name, deal?.productType, deal?.dealVertical, deal?.customerCountry)\r\n if (isNullOrEmpty(dealVolumes)) {\r\n return\r\n }\r\n\r\n if (deal?.dealType?.name == DealType.DealRegistration) {\r\n if (deal?.unitsTransactedHardware > (dealVolumes?.extensionMinimumUnitsTransacted || 0)) {\r\n const extensionRequest: IDealExtensionRequest = {\r\n autoExtend: true,\r\n priorExpirationDate: deal?.expirationDate,\r\n newExpirationDate: selectedDate,\r\n extensionDate: new Date(),\r\n opportunityDealId: deal?.id,\r\n submitterContact: {\r\n email: userDetails?.email,\r\n firstName: userDetails?.firstName,\r\n lastName: userDetails?.lastName\r\n }\r\n };\r\n\r\n let response = await nextGenService.extendOpportunityDeal(extensionRequest)\r\n if (response.status === 200) {\r\n setShowBackButton(true)\r\n setShowMessageBanner(true)\r\n setShowExtensionSuccess(true)\r\n }\r\n } else {\r\n setShowBackButton(true)\r\n setShowMessageBanner(true)\r\n setShowExtensionFailure(true)\r\n }\r\n }\r\n\r\n if (deal?.dealType?.name == DealType.SpecialPricing) {\r\n let extensionRequest: IDealExtensionRequest = {\r\n expectedUnits: expectedUnits,\r\n priorExpirationDate: deal?.expirationDate,\r\n newExpirationDate: selectedDate,\r\n extensionDate: new Date(),\r\n extensionReason: extensionReason,\r\n opportunityDealId: deal.id,\r\n submitterContact: {\r\n email: userDetails?.email,\r\n firstName: userDetails?.firstName,\r\n lastName: userDetails?.lastName\r\n }\r\n };\r\n\r\n let transactedUnits = deal?.unitsTransactedHardware || 0\r\n let committedUnits = deal?.dealVolume || 0\r\n if (transactedUnits >= Math.round((dealVolumes?.extensionMinimumUnitsTransacted || 0) * committedUnits / 100)) {\r\n extensionRequest.autoExtend = true;\r\n } else {\r\n extensionRequest.autoExtend = false;\r\n }\r\n\r\n let response = await nextGenService.extendOpportunityDeal(extensionRequest)\r\n if (response.status === 200) {\r\n setShowBackButton(true)\r\n setShowMessageBanner(true)\r\n extensionRequest.autoExtend ? setShowExtensionSuccess(true) : setShowExtensionReview(true)\r\n }\r\n }\r\n\r\n setExtensionInProgress(false)\r\n sessionStorage.removeItem(SessionStorageConsts.selectedDeal)\r\n } catch (error) {\r\n setExtensionInProgress(false);\r\n }\r\n }\r\n\r\n /**\r\n * Extension reason change callback function.\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event. \r\n * @param {string} newValue updated value from textField. \r\n */\r\n const onExtensionReasonChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n setExtensionReason(newValue as string);\r\n }\r\n\r\n /**\r\n * Expected units change callback function\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event. \r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onExpectedUnitsChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n setExpectedUnits(newValue ? parseInt(newValue) : 0);\r\n }\r\n\r\n const validateExpirationDate = (date?: Date | null): void => {\r\n setShowExtensionWarning(false)\r\n if (date == undefined || maxExpirationDate == undefined) {\r\n setSelectedDate(new Date())\r\n return\r\n }\r\n\r\n if (date > maxExpirationDate) {\r\n setShowExtensionWarning(true)\r\n setDisableConfirmBtn(true)\r\n } else {\r\n setSelectedDate(date)\r\n setDisableConfirmBtn(false)\r\n }\r\n }\r\n\r\n const onCopy = async () => {\r\n try {\r\n setCopyInProgress(true)\r\n\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n let countries = \"\";\r\n let accounts = \"\";\r\n countries = userRoleDetails.map(function (userRoleDetail) { return userRoleDetail.countryId }).join(',');\r\n accounts = userRoleDetails.map(function (userRoleDetail) { return userRoleDetail.accountId }).join(',');\r\n let userRole = getDistinctUserRole(userRoleDetails);\r\n sessionStorage.setItem(SessionStorageConsts.userRole, userRole.toString());\r\n\r\n const copyRequest: IDealCopyRequest = {\r\n opportunityNumber: selectedDeal?.opportunityName,\r\n opportunityDealNumber: selectedDeal?.name,\r\n submitterContact: {\r\n email: userDetails?.email,\r\n firstName: userDetails?.firstName,\r\n lastName: userDetails?.lastName\r\n },\r\n userRoleDetails: userRoleDetails\r\n };\r\n\r\n copyRequest.countries = countries;\r\n copyRequest.accounts = accounts;\r\n copyRequest.userRole = userRole;\r\n\r\n var response = await nextGenService.copyOpportunity(copyRequest);\r\n setCopyInProgress(false)\r\n\r\n if (response.status === 200 && response.data) {\r\n sessionStorage.setItem(SessionStorageConsts.pageMode, PageMode.Edit);\r\n sessionStorage.setItem(SessionStorageConsts.pageSubMode, PageSubMode.Copy);\r\n\r\n window.location.href = '/managecase/pricingprogram?oppNumber=' + response.data\r\n }\r\n } catch (error) {\r\n setCopyInProgress(false)\r\n }\r\n\r\n };\r\n\r\n const onRenew = async () => {\r\n try {\r\n setRenewInProgress(true)\r\n\r\n const renewRequest: IDealActionRequest = {\r\n opportunityNumber: selectedDeal?.opportunityName,\r\n opportunityDealNumber: selectedDeal?.name,\r\n dealTypeName: selectedDeal?.dealType?.name\r\n };\r\n\r\n var response = await nextGenService.renewOpportunity(renewRequest);\r\n\r\n if (response.status === 200 && response.data) {\r\n let oppNumber = Object(response.data)[\"item1\"]\r\n let oppDealNumber = Object(response.data)[\"item2\"]\r\n\r\n setRenewInProgress(false)\r\n sessionStorage.setItem(SessionStorageConsts.pageMode, PageMode.Edit);\r\n sessionStorage.setItem(SessionStorageConsts.pageSubMode, PageSubMode.Renew);\r\n\r\n window.location.href = '/managecase/pricingprogram?oppNumber=' + oppNumber + '&oppDealNumber=' + oppDealNumber\r\n }\r\n\r\n } catch (error) {\r\n setRenewInProgress(false)\r\n }\r\n };\r\n\r\n /** Open, close, submit dialog methods for delete, revert, expire actions */\r\n function openDialog(action: CaseActions) {\r\n setSelectedAction(action)\r\n\r\n if (action === CaseActions.Expire) {\r\n setDialogConfig({ title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpireActionName\", UIControlsText.Expire.ActionName)\r\n , body: getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"ExpireMessage\", UIControlsText.Expire.ExpireMessage ) })\r\n }\r\n\r\n if (action === CaseActions.Revert) {\r\n setDialogConfig({ title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RevertActionName\", UIControlsText.Revert.ActionName), body: getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"RevertMessage\", UIControlsText.Revert.RevertMessage) })\r\n }\r\n\r\n if (action === CaseActions.Delete) {\r\n setDialogConfig({ title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeleteActionName\", UIControlsText.Delete.ActionName), body: getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"DeleteMessage\", UIControlsText.Delete.DeleteMessage) })\r\n }\r\n\r\n if (action === CaseActions.Renew) {\r\n setDialogConfig({ title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RenewActionName\", UIControlsText.Renew.ActionName), body: getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"RenewRenewalMessage\", UIControlsText.Renew.RenewalMessage) })\r\n }\r\n\r\n if (action === CaseActions.Copy) {\r\n setDialogConfig({ title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CopyActionName\", UIControlsText.Copy.ActionName), body: getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"CopyMessage\", UIControlsText.Copy.CopyMessage) })\r\n }\r\n\r\n if (action === CaseActions.DownloadCaseLetters) {\r\n setIsDecisionLetterSelectedWithSKU(false)\r\n setDialogConfig({ title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DownloadCaseLettersActionName\", UIControlsText.DownloadCaseLetters.ActionName), body: getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"DownloadCaseLettersMessage\", UIControlsText.DownloadCaseLetters.CopyMessage) })\r\n }\r\n\r\n setIsDialogOpen(true);\r\n }\r\n\r\n const closeDialog = () => {\r\n setIsDecisionLetterOpen(false);\r\n setIsDialogOpen(false);\r\n };\r\n\r\n async function submitDialog() {\r\n \r\n if (selectedDeal == undefined) {\r\n return\r\n }\r\n\r\n let fullName = userDetails?.firstName + ',' + userDetails?.lastName\r\n\r\n try {\r\n switch (selectedAction) {\r\n case CaseActions.Expire:\r\n await nextGenService.setOpportunityDealStatus(selectedDeal.id, StateCode.Active, OpportunityDealStatusCodes.ForcedExpire, fullName, userDetails?.email)\r\n break;\r\n\r\n case CaseActions.Revert:\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n let countries = \"\";\r\n let accounts = \"\";\r\n countries = userRoleDetails.map(function (userRoleDetail) { return userRoleDetail.countryId }).join(',');\r\n accounts = userRoleDetails.map(function (userRoleDetail) { return userRoleDetail.accountId }).join(',');\r\n let userRole = getDistinctUserRole(userRoleDetails);\r\n sessionStorage.setItem(SessionStorageConsts.userRole, userRole.toString());\r\n \r\n const revertRequest: IDealRevertRequest = {\r\n opportunityNumber: selectedDeal?.opportunityName,\r\n opportunityDealNumber: selectedDeal?.name,\r\n opportunityDealId: selectedDeal.id,\r\n dealTypeName: selectedDeal?.dealType?.name,\r\n fullName: fullName,\r\n email: userDetails?.email\r\n };\r\n \r\n revertRequest.countries = countries;\r\n revertRequest.accounts = accounts;\r\n revertRequest.userRole = userRole;\r\n\r\n await nextGenService.revertOpportunityDealStatus(revertRequest)\r\n break;\r\n\r\n case CaseActions.Delete:\r\n await nextGenService.setOpportunityDealStatus(selectedDeal.id, StateCode.Active, OpportunityDealStatusCodes.Cancelled, fullName, userDetails.email)\r\n break;\r\n\r\n case CaseActions.Renew:\r\n if (IsExternalPricingProgram(selectedDeal?.dealType?.name)) {\r\n onRenew()\r\n }\r\n break;\r\n\r\n case CaseActions.Copy:\r\n if (IsExternalPricingProgram(selectedDeal?.dealType?.name)) {\r\n onCopy()\r\n }\r\n break;\r\n\r\n case CaseActions.DownloadCaseLetters:\r\n setIsLetterBeingDownloaded(true);\r\n await getCaseDecisionLetter(CaseActions.DownloadCaseLetters)\r\n setIsLetterBeingDownloaded(false);\r\n break;\r\n }\r\n\r\n setIsDialogOpen(false);\r\n } catch (error) {\r\n setIsDialogOpen(false);\r\n }\r\n }\r\n\r\n useToShowActionButtonTextOnHoverOrFocusInReflow();\r\n\r\n return (\r\n \r\n <>\r\n <Stack id=\"mdppAccessibility-action-menu\" horizontal styles={{ root: { height: 28 } }}>\r\n <CommandBarButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EditText\", UIControlsText.EditText)}\r\n onClick={onEditCase}\r\n styles={ActionButtonStyles}\r\n disabled={!actionsConfig?.enableEdit}\r\n iconProps={{ iconName: CssClassConstants.EditIconName }} />\r\n <CommandBarButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendText\", UIControlsText.ExtendText)}\r\n onClick={openExtendDialog}\r\n styles={ActionButtonStyles}\r\n disabled={!actionsConfig?.enableExtend}\r\n iconProps={{ iconName: CssClassConstants.ExtendIconName }} />\r\n <CommandBarButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpireText\", UIControlsText.ExpireText)}\r\n onClick={() => openDialog(CaseActions.Expire)}\r\n styles={ActionButtonStyles}\r\n disabled={!actionsConfig?.enableExpire}\r\n iconProps={{ iconName: CssClassConstants.ExpireIconName }} />\r\n <CommandBarButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RenewText\", UIControlsText.RenewText)}\r\n onClick={() => openDialog(CaseActions.Renew)}\r\n styles={ActionButtonStyles}\r\n disabled={!actionsConfig?.enableRenew}\r\n iconProps={{ iconName: CssClassConstants.RenewIconName }} />\r\n <CommandBarButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CopyText\", UIControlsText.CopyText)}\r\n onClick={() => openDialog(CaseActions.Copy)}\r\n styles={ActionButtonStyles}\r\n disabled={!actionsConfig?.enableCopy}\r\n iconProps={{ iconName: CssClassConstants.CopyIconName }} />\r\n <CommandBarButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeleteText\", UIControlsText.DeleteText)}\r\n onClick={() => openDialog(CaseActions.Delete)}\r\n styles={ActionButtonStyles}\r\n disabled={!actionsConfig?.enableDelete}\r\n iconProps={{ iconName: CssClassConstants.DeleteIconName }} />\r\n <CommandBarButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RevertCaseText\", UIControlsText.RevertCaseText)}\r\n onClick={() => openDialog(CaseActions.Revert)}\r\n styles={ActionButtonStyles}\r\n disabled={!actionsConfig?.enableRevert}\r\n iconProps={{ iconName: CssClassConstants.UndoIconName }} />\r\n <CommandBarButton hidden={!actionsConfig?.showCPCaseDecisionLetter}\r\n text={decisionLetterButtonText}\r\n onClick={() => onCaseDecisionLetter(CaseActions.DownloadCaseLetters)}\r\n styles={ActionButtonStyles} disabled={!actionsConfig?.enableCPCaseDecisionLetter}\r\n iconProps={{ iconName: CssClassConstants.DownloadIconName }} />\r\n <CommandBarButton hidden={!actionsConfig?.showCPStrategicLetters}\r\n text={manufacturersLetterButtonText}\r\n onClick={() => onCPStrategicLetters(CaseActions.ViewCaseLetters)}\r\n styles={ActionButtonStyles} disabled={!actionsConfig?.enableCPStrategicLetters}\r\n iconProps={{ iconName: CssClassConstants.CPStrategicLetters }} />\r\n </Stack>\r\n\r\n {showExtensionLimit &&\r\n <Stack {...columnProps}>\r\n <ExtendLimitMessage close={() => setShowExtensionLimit(false)} />\r\n </Stack>\r\n }\r\n\r\n {showMaxExtensionWarning &&\r\n <Stack {...columnProps}>\r\n <MaxExtendMessage close={() => setShowMaxExtensionWarning(false)} />\r\n </Stack>\r\n }\r\n\r\n {\r\n copyInProgress &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CopyProgress\", UIControlsText.CopyProgress)} />\r\n </div>\r\n </Stack>\r\n }\r\n {\r\n renewInProgress &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RenewProgress\", UIControlsText.RenewProgress)} />\r\n </div>\r\n </Stack>\r\n }\r\n {isDialogOpen && (\r\n <Dialog style={_Styles} onClose={closeDialog} autoFocus={true}>\r\n\r\n {selectedAction === CaseActions.ViewCaseLetters ? (\r\n <>\r\n <Stack horizontal tokens={stackTokens} styles={stackGridStyles}>\r\n <NextGenKendoGrid\r\n {...{\r\n kendoGridProps: { ...cpStrategicLettersConfig.kendoGridProps }\r\n }}\r\n />\r\n </Stack>\r\n\r\n <DialogActionsBar>\r\n <Stack horizontal tokens={stackTokens} styles={stackButtonStyles}>\r\n <PrimaryButton\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n onClick={closeDialog}\r\n />\r\n </Stack>\r\n </DialogActionsBar>\r\n </>) : (<>\r\n <Stack horizontal={false} tokens={stackTokens} styles={stackStyles}>\r\n <Stack>\r\n <h4> {dialogConfig.title}</h4>\r\n </Stack>\r\n\r\n <Stack>\r\n <Label style={expireDialog} className={_Styles.DialogueCheckBox}>\r\n {dialogConfig.body}\r\n </Label>\r\n </Stack>\r\n </Stack>\r\n {isDecisionLetterOpen &&\r\n <DialogActionsBar>\r\n <Stack>\r\n <Dropdown\r\n options={CaseDecisionLetterTypeOptions}\r\n defaultSelectedKey={CaseDecisionLetterType.WithoutSKU}\r\n onChange={onDecisionLetterOptionChange}\r\n />\r\n </Stack>\r\n </DialogActionsBar>\r\n }\r\n <DialogActionsBar>\r\n <Stack horizontal horizontalAlign=\"end\" tokens={stackButtonTokens} styles={stackButtonStyles}>\r\n {\r\n isLetterBeingDownloaded &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Downloading\", UIControlsText.Downloading)} />\r\n </div>\r\n </Stack>\r\n }\r\n <PrimaryButton\r\n text={\r\n getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseActionsDialogConfirmButton\", UIControlsText.CaseActionsDialog.ConfirmButton)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseActionsDialogConfirmButton\", UIControlsText.CaseActionsDialog.ConfirmButton)}\r\n onClick={submitDialog}\r\n styles={extendDialogButtonStyles}\r\n disabled={isLetterBeingDownloaded}\r\n />\r\n <DefaultButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseActionsDialogCancelButton\", UIControlsText.CaseActionsDialog.CancelButton)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseActionsDialogCancelButton\", UIControlsText.CaseActionsDialog.CancelButton)}\r\n onClick={closeDialog}\r\n styles={extendDialogButtonStyles}\r\n />\r\n </Stack>\r\n </DialogActionsBar>\r\n </>)\r\n }\r\n </Dialog>\r\n )}\r\n \r\n {\r\n <Panel\r\n headerText={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendActionName\", UIControlsText.Extend.ActionName)}\r\n isOpen={isOpen}\r\n onDismiss={onDismiss}\r\n closeButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n isFooterAtBottom={true}\r\n onRenderFooterContent={showBackButton ? onRenderFooterContentBack : onRenderFooterContent}>\r\n {\r\n extensionInProgress &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtensionProgress\", UIControlsText.ExtensionProgress)} />\r\n </div>\r\n </Stack>\r\n }\r\n {\r\n selectedDeal?.dealType?.name === DealType.DealRegistration && !showMessageBanner &&\r\n <>\r\n <Label style={extendDialog}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ExtendDealRegDescription\", UIControlsText.Extend.DealRegDescription)}</Label>\r\n <Stack {...columnProps}>\r\n <Label>\r\n <DatePicker\r\n styles={DatePickerStyles}\r\n strings={defaultDatePickerStrings}\r\n minDate={new Date(Date.now())}\r\n highlightSelectedMonth={true}\r\n value={selectedDate}\r\n onSelectDate={validateExpirationDate}\r\n textField={{\r\n validateOnLoad: false, validateOnFocusOut: true,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendExpirationDate\", UIControlsText.Extend.ExpirationDate),\r\n placeholder: Date.now().toString(),\r\n required: true,\r\n onGetErrorMessage: () => { return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldError\", ErrorMessages.RequiredFieldError) },\r\n }}\r\n />\r\n </Label>\r\n </Stack>\r\n {showExtensionFailure && showMessageBanner &&\r\n <Stack {...columnProps}>\r\n <ExtendFailureMessage close={() => setShowExtensionFailure(false)} />\r\n </Stack>\r\n }\r\n {showExtensionWarning &&\r\n <Stack {...columnProps}>\r\n <ExtendMessage close={() => setShowExtensionWarning(false)} />\r\n </Stack>\r\n }\r\n {showExtensionSuccess && showMessageBanner &&\r\n <Stack {...columnProps}>\r\n <SuccessMessage close={() => setShowExtensionSuccess(false)} />\r\n </Stack>\r\n }\r\n </>\r\n }\r\n {\r\n selectedDeal?.dealType?.name === DealType.SpecialPricing && !showMessageBanner &&\r\n <>\r\n <Label style={extendDialog}>{JavaScriptExtensions.stringFormat(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendSpecialPricingDescription\", UIControlsText.Extend.SpecialPricingDescription), minUnitsForAutoApproval.toString())}</Label>\r\n <Stack {...columnProps}>\r\n <Label>\r\n <DatePicker\r\n styles={DatePickerStyles}\r\n strings={defaultDatePickerStrings}\r\n minDate={new Date(Date.now())}\r\n highlightCurrentMonth={true}\r\n textField={{\r\n validateOnLoad: false, validateOnFocusOut: true,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendExpirationDate\", UIControlsText.Extend.ExpirationDate),\r\n placeholder: Date.now().toString(),\r\n required: true,\r\n onGetErrorMessage: () => { return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldError\", ErrorMessages.RequiredFieldError) },\r\n }}\r\n value={selectedDate}\r\n onSelectDate={validateExpirationDate}\r\n highlightSelectedMonth={true}\r\n />\r\n </Label>\r\n </Stack>\r\n <Stack {...columnProps}>\r\n <Label>\r\n <TextField\r\n disabled={readonly}\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendReasonForExtension\", UIControlsText.Extend.ReasonForExtension)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendReasonForExtension\", UIControlsText.Extend.ReasonForExtension)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendReasonForExtension\", UIControlsText.Extend.ReasonForExtension)}\r\n styles={textFieldStylesOneColumn}\r\n onGetErrorMessage={(value) => { if (!value) { return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldError\", ErrorMessages.RequiredFieldError) } }}\r\n validateOnFocusOut\r\n multiline\r\n rows={3}\r\n resizable={false}\r\n validateOnLoad={false}\r\n required={true}\r\n maxLength={2000}\r\n value={extensionReason}\r\n onChange={onExtensionReasonChange}\r\n />\r\n </Label>\r\n </Stack>\r\n <Stack {...columnProps}>\r\n <Label>\r\n <TextField\r\n disabled={true}\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendTotalUnitsTransacted\", UIControlsText.Extend.TotalUnitsTransacted)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendTotalUnitsTransacted\", UIControlsText.Extend.TotalUnitsTransacted)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendTotalUnitsTransacted\", UIControlsText.Extend.TotalUnitsTransacted)}\r\n styles={textFieldStylesOneColumn}\r\n onGetErrorMessage={(value) => { if (!value) { return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldError\", ErrorMessages.RequiredFieldError) } }}\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n value={selectedDeal.unitsTransacted?.toString()}\r\n type={\"number\"}\r\n required={true}\r\n min={0}\r\n />\r\n </Label>\r\n </Stack>\r\n <Stack {...columnProps}>\r\n <Label>\r\n <TextField\r\n disabled={readonly}\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendExpectedUnitTransactions\", UIControlsText.Extend.ExpectedUnitTransactions)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendExpectedUnitTransactions\", UIControlsText.Extend.ExpectedUnitTransactions)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExtendExpectedUnitTransactions\", UIControlsText.Extend.ExpectedUnitTransactions)}\r\n styles={textFieldStylesOneColumn}\r\n onGetErrorMessage={(value) => { if (!value) { return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldError\", ErrorMessages.RequiredFieldError) } }}\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n type={\"number\"}\r\n value={expectedUnits.toString()}\r\n onChange={onExpectedUnitsChange}\r\n required={true}\r\n min={0}\r\n />\r\n </Label>\r\n </Stack>\r\n {showExtensionWarning &&\r\n <Stack {...columnProps}>\r\n <ExtendMessage close={() => setShowExtensionWarning(false)} />\r\n </Stack>\r\n }\r\n </>\r\n }\r\n {showExtensionFailure && showMessageBanner &&\r\n <Stack {...columnProps}>\r\n <ExtendFailureMessage close={() => setShowExtensionFailure(false)} />\r\n </Stack>\r\n }\r\n {\r\n showExtensionSuccess && showMessageBanner &&\r\n <Stack {...columnProps}>\r\n <SuccessMessage close={() => setShowExtensionSuccess(false)} />\r\n </Stack>\r\n }\r\n {\r\n showExtensionReview && showMessageBanner &&\r\n <Stack {...columnProps}>\r\n <ReviewMessage close={() => setShowExtensionReview(false)} />\r\n </Stack>\r\n }\r\n </Panel>\r\n }\r\n </>\r\n );\r\n};","import { Paper } from \"@mui/material\";\r\nimport { ActionButton, DocumentCardPreview, getTheme, IDocumentCardPreviewProps, Stack, StackItem } from \"office-ui-fabric-react\";\r\nimport { ActionButtonStyle, DefaultPageStyles } from \"../../../content/styles/Page.styles\";\r\nimport { UIControlType } from \"../../../models/UIControlType\";\r\nimport { IBasePageState } from \"../../pricingprogram/common/state/IBasePageState\";\r\nimport { itemAlignmentsStackTokens, smallAlignmentTokens } from \"../../pricingprogram/PricingProgramForm/PricingProgramFormUtils\";\r\nimport { FormRenderingService } from \"../Components/DynamicFormRendering\";\r\nimport InnerHTMLContainer from \"./InnerHTMLContainer\";\r\nimport { cardHeaderIcon } from \"../../../hooks/accessiblity-hooks\";\r\n\r\nconst theme = getTheme();\r\nconst { palette } = theme;\r\n\r\nexport const IconClasses = ({\r\n circleIcon: {\r\n backgroundColor: '#333333',\r\n border: `1px solid`,\r\n color: '#333333'\r\n }\r\n});\r\n\r\nconst DocumentCardComponent = (jsonDataComponents: any | undefined) => {\r\n let registerProp = jsonDataComponents?.register;\r\n let baseStateProp = jsonDataComponents?.baseState;\r\n // Don't render if template is undefined\r\n if (!jsonDataComponents || jsonDataComponents === undefined) return null;\r\n\r\n return (\r\n \r\n <Stack styles={{ root: { width: jsonDataComponents?.styles, paddingRight: 30, paddingBottom: 20}}} className={jsonDataComponents?.className}>\r\n <Paper id= \"CardForCustomerDetails\" elevation={1} style={{border: `0px solid ${palette.black}`, borderLeftWidth: \"4px\" }}>\r\n <Stack horizontal wrap verticalAlign='start'>\r\n <StackItem grow styles={{ root: {paddingLeft: 10} }}>\r\n <Stack id=\"ContainerForDetails\" horizontal wrap tokens={smallAlignmentTokens} >\r\n <StackItem>\r\n {cardHeaderIcon(jsonDataComponents?.iconName, jsonDataComponents?.name)}\r\n </StackItem>\r\n <StackItem>\r\n <InnerHTMLContainer id=\"DetailsField\" value={jsonDataComponents?.name} contolType={UIControlType.SubHeading} styles={{verticalAlign:'center', display:\"inline-block\", fontWeight:'bold'}}>\r\n \r\n </InnerHTMLContainer>\r\n </StackItem>\r\n </Stack>\r\n {jsonDataComponents?.components?.map((eachItem: any, index: number) => { \r\n return (\r\n <>\r\n {FormRenderingService(eachItem, registerProp, baseStateProp as IBasePageState)}\r\n </>\r\n );\r\n })}\r\n </StackItem>\r\n </Stack>\r\n </Paper>\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default DocumentCardComponent;","import React from \"react\";\r\nimport { listProps } from \"./unorderprops\";\r\n\r\nconst UnorderList: React.FunctionComponent<listProps> = (props: listProps) => {\r\n const dataItems = props.dataList.map((item: any) => {\r\n return <li role=\"listitem\">{item}</li>;\r\n });\r\n\r\n return (\r\n <React.Fragment>\r\n <div className=\"ms-LabelValue\">\r\n {props.title}\r\n </div>\r\n\r\n <div className=\"listitems\">\r\n <ul role=\"list\">{dataItems}</ul>\r\n </div>\r\n </React.Fragment>\r\n );\r\n};\r\nexport default UnorderList;\r\n","import { getTheme, Stack, StackItem } from \"office-ui-fabric-react\";\r\nimport { IBasePageState } from \"../../pricingprogram/common/state/IBasePageState\";\r\nimport { FormRenderingService } from \"../Components/DynamicFormRendering\";\r\n\r\nconst DocumentCardContainerComponent = (jsonDataComponents: any | undefined) => {\r\n let registerProp = jsonDataComponents?.register;\r\n let baseStateProp = jsonDataComponents?.baseState;\r\n // Don't render if template is undefined\r\n if (!jsonDataComponents || jsonDataComponents === undefined) return null;\r\n\r\n return (\r\n\r\n <Stack styles={{ root: { width: jsonDataComponents?.styles, paddingRight: 30, paddingBottom: 20 } }} className={jsonDataComponents?.className}>\r\n <Stack horizontal wrap verticalAlign='start'>\r\n <StackItem grow styles={{ root: { paddingLeft: 10 } }}>\r\n {jsonDataComponents?.components?.map((eachItem: any, index: number) => {\r\n return (\r\n <>\r\n {FormRenderingService(eachItem, registerProp, baseStateProp as IBasePageState)}\r\n </>\r\n );\r\n })}\r\n </StackItem>\r\n </Stack>\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default DocumentCardContainerComponent;","import React from 'react';\r\nimport { JavaScriptExtensions } from '../../../infrastructure/JavaScriptExtensions'; \r\nimport { DisplayMode } from '../../../models/DisplayMode';\r\nimport { getDealClosureDecisionNameByCode, getFieldConfig, getStatusNameByCode } from '../../../components/shared/common/util';\r\nimport { IBasePageState } from '../../pricingprogram/common/state/IBasePageState';\r\nimport { FieldMapMode } from '../../../models/FieldMapMode';\r\nimport { PageMode } from '../../../models/PageMode';\r\nimport * as Components from '../ComponentTypes/Components';\r\n\r\n/**\r\n * Provides functionality related to rendering form related components\r\n * @class\r\n */\r\nexport function FormRenderingService(formJsonTemplate: IComponent | undefined, register: any, baseState?: IBasePageState): React.ReactNode {\r\n // Don't render if template is undefined\r\n if (!formJsonTemplate || formJsonTemplate === undefined) return null;\r\n\r\n /**\r\n * Creates the Component based on the pageMode type\r\n * @function \r\n */\r\n function createComponent(item: IComponent, parentDisableFlag?: boolean): React.ReactNode {\r\n const selectedDeal = baseState?.pageMode === PageMode.Create ? baseState?.opportunityDeals[0] :\r\n baseState?.opportunityDeals?.find(t => t.name === baseState?.selectedOptyDealCaseNumber);\r\n const { data, type } = item;\r\n const { components, id, ...properties } = data;\r\n type ObjectKey = keyof typeof Components;\r\n let createType = type as ObjectKey;\r\n let localDisabledFlag: boolean | undefined = data['disabled'] as boolean;\r\n let isEditDisabled: boolean | undefined;\r\n let isHidden: boolean | undefined;\r\n let closureDecision: string | undefined;\r\n if (selectedDeal?.dealType && selectedDeal?.statusCode) {\r\n closureDecision = getDealClosureDecisionNameByCode(selectedDeal?.closureDecision);\r\n isEditDisabled = getFieldConfig(\"commonPP\", baseState?.pageMode || \"\", selectedDeal?.statusCode, selectedDeal?.dealType, id, FieldMapMode.Disable, closureDecision || \"\");\r\n isHidden = getFieldConfig(\"commonPP\", baseState?.pageMode || \"\", selectedDeal?.statusCode, selectedDeal?.dealType, id, FieldMapMode.Hidden, closureDecision || \"\");\r\n }\r\n\r\n return !isHidden && (!JavaScriptExtensions.isDefined(item.visible) || item.visible === true) ? React.createElement(\r\n Components[createType] as any,\r\n {\r\n ...data,\r\n key: id,\r\n disabled: (JavaScriptExtensions.isDefined(localDisabledFlag) && localDisabledFlag) || (JavaScriptExtensions.isDefined(isEditDisabled) && isEditDisabled) || (JavaScriptExtensions.isDefined(parentDisableFlag) && parentDisableFlag),\r\n register: { register },\r\n 'aria-label': properties?.label\r\n } as any,\r\n // Map if there are items, if not try to render the embedded view as children\r\n Array?.isArray(components)\r\n ? components?.map(c => renderer(c, JavaScriptExtensions.isDefined(isEditDisabled) ? isEditDisabled : parentDisableFlag)) : renderer(null)\r\n ) : \"\";\r\n }\r\n\r\n /**\r\n * Render function that get the configuration properties and creates the specified component\r\n * @function \r\n */\r\n function renderer(config: IComponent | null, disableFlag?: boolean): React.ReactNode {\r\n if (!config || !config.data || config?.data?.visible === false) return null;\r\n\r\n return createComponent(config, disableFlag);\r\n }\r\n\r\n return (\r\n renderer(formJsonTemplate)\r\n );\r\n}\r\n\r\nexport interface IComponent {\r\n type: string;\r\n data: IComponentDataItem;\r\n visible?: boolean;\r\n roles?: any[];\r\n displayMode?: DisplayMode;\r\n className?: string;\r\n}\r\nexport interface IComponentDataItem {\r\n id: string;\r\n visible?: boolean;\r\n tabNames?: any[];\r\n components?: Array<IComponent>;\r\n [key: string]: unknown;\r\n}","import { ActionButton, Checkbox, Dropdown, IDropdownOption, Label, Stack, TextField } from \"@fluentui/react\";\r\nimport { FormEvent, useCallback, useEffect, useState } from \"react\";\r\nimport { CssClassConstants } from \"../../content/CssClassConstants\";\r\nimport { ErrorMessages } from \"../../content/ErrorMessages\";\r\nimport { CommonStyles, DealContactStyles, defaultColumnProps, DefaultPageStyles } from \"../../content/styles/Page.styles\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { ApplicationConstants } from \"../../models/ApplicationConstants\";\r\nimport { ContactRoles } from \"../../models/ContactRoles\";\r\nimport { IDealContact } from \"../../models/IDealContact\";\r\nimport { IKeyValue } from \"../../models/IKeyValue\";\r\nimport { PageMode } from \"../../models/PageMode\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { IDealContactProps } from \"./props/IDealContactProps\";\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"./common/util\";\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { MessageTypeText } from \"../../models/MessageTypeText\";\r\nimport { OpportunityDealStatusCodes } from \"../../models/OpportunityDealStatusCodes\";\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n/**\r\n * Deal Contact component.\r\n * @function component\r\n */\r\nconst DealContact: React.FunctionComponent<IDealContactProps> = (props?: IDealContactProps) => {\r\n\r\n const [contactEmail, setContactEmail] = useState<string>(props?.dealContact?.email as string);\r\n const [contactName, setContactName] = useState<string>(props?.dealContact?.firstName ? props?.dealContact?.firstName + ' ' + props?.dealContact?.lastName : \"\");\r\n const [contactFirstName, setContactFirstName] = useState<string>(props?.dealContact?.firstName as string);\r\n const [contactLastName, setContactLastName] = useState<string>(props?.dealContact?.lastName as string);\r\n const [contactRole, setContactRole] = useState<string | number>(props?.dealContact?.contactType as number);\r\n const [otherRole, setOtherRole] = useState<string>(props?.dealContact?.otherRole as string);\r\n const [isCoOwnerChecked, setIsCoOwnerChecked] = useState(props?.dealContact?.isCoOwner);\r\n const [dealNameErrorMessage, setDealNameErrorMessage] = useState<string>(\"\");\r\n\r\n useEffect(() => {\r\n let contactComplete: boolean = false;\r\n //If required field are set for deal contact, update the parent component using callback\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(contactEmail)\r\n && !JavaScriptExtensions.isNullOrUndfinedOrEmpty(contactRole)\r\n && !JavaScriptExtensions.isEmptyOrNullOrUndefined(contactName)) {\r\n contactComplete = true;\r\n }\r\n\r\n if (props?.updateDealContact) {\r\n var contact: IDealContact = {\r\n id: props.id,\r\n email: contactEmail,\r\n contactType: contactRole,\r\n otherRole: otherRole,\r\n firstName: contactFirstName,\r\n lastName: contactLastName,\r\n isCoOwner: isCoOwnerChecked,\r\n isComplete: contactComplete\r\n };\r\n props?.updateDealContact(contact);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [contactEmail, contactName, contactRole, isCoOwnerChecked, otherRole]);\r\n\r\n const onCoOwnerChange = useCallback(\r\n (ev?: React.FormEvent<HTMLElement | HTMLInputElement>, checked?: boolean): void => {\r\n setIsCoOwnerChecked(!!checked);\r\n },\r\n [],\r\n );\r\n\r\n /**\r\n * Get TextField ErrorMessage.\r\n * @method\r\n * @param {string>} value Text Box value.\r\n * @@returns {string} Error Message.\r\n */\r\n const getTextFieldErrorMessage = (value: string): string => {\r\n if (!value) {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldError\", ErrorMessages.RequiredFieldError);\r\n }\r\n else if (value.indexOf(\"@\") !== -1 && value.indexOf(ApplicationConstants.microsoftEmail) === -1) {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealContactInputError\", ErrorMessages.DealContactInputError);\r\n }\r\n\r\n return '';\r\n };\r\n\r\n /**\r\n * Role change callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element change Event.\r\n * @param {IDropdownOption} item Clicked Option from Dropdown.\r\n */\r\n const onRoleChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n setContactRole(item.key);\r\n }\r\n if (item && item.key !== ContactRoles.Others) {\r\n setOtherRole('');\r\n }\r\n }\r\n\r\n /**\r\n * Other Role change callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element change Event.\r\n * @param {IDropdownOption} item Clicked Option from Dropdown.\r\n */\r\n const onOtherRoleChange = (event: FormEvent<HTMLInputElement | HTMLTextAreaElement>, item?: string): void => {\r\n if (item) {\r\n setOtherRole(item);\r\n }\r\n }\r\n\r\n /**\r\n * Deal Contact Alias change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onDealContactAliasTextChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n setContactEmail(newValue as string);\r\n }\r\n\r\n /**\r\n * Deal Contact Alias blur Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onDealContactAliasTextBlur = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n let input = event.currentTarget.value.toLocaleLowerCase().trim();\r\n let email = input;\r\n if (input.indexOf(\"@\") !== -1 && input.indexOf(ApplicationConstants.microsoftEmail) === -1) {\r\n setContactName(\"\");\r\n setDealNameErrorMessage(\"\");\r\n return;\r\n }\r\n\r\n if (input.indexOf(ApplicationConstants.microsoftEmail) === -1) {\r\n email = JavaScriptExtensions.stringFormat(\"{0}{1}\", input, ApplicationConstants.microsoftEmail);\r\n }\r\n\r\n nextGenService.getMicrosoftContactByAlias(email)\r\n .then((response) => {\r\n setContactEmail(response.data.email);// Update contactEmail to alias name instead of firstname.lastname@microsoft.com.\r\n setDealNameErrorMessage(\"\");\r\n setContactFirstName(response.data.firstName);\r\n setContactLastName(response.data.lastName);\r\n setContactName(JavaScriptExtensions.stringFormat(\"{0} {1}\", response.data.firstName, response.data.lastName));\r\n }).catch((error) => {\r\n setContactName(\"\");\r\n setDealNameErrorMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealContactNameInputError\", ErrorMessages.DealContactNameInputError));\r\n });\r\n }\r\n return (\r\n <Stack horizontal {...defaultColumnProps} id={props?.id}>\r\n {props?.pageMode?.toLowerCase() !== PageMode.View.toLowerCase() && props?.opportunityDealStatusCode !== OpportunityDealStatusCodes.PendingSecondaryReview ? (\r\n <>\r\n <Label>\r\n <TextField\r\n name={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactAliasText\", UIControlsText.DealContactAliasText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactAliasText\", UIControlsText.DealContactAliasText)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealContactAliasPlaceholderText\", UIControlsText.DealContactAliasPlaceholderText)}\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n onGetErrorMessage={getTextFieldErrorMessage}\r\n onBlur={onDealContactAliasTextBlur}\r\n onChange={onDealContactAliasTextChange}\r\n styles={DefaultPageStyles.customWidth190Styles}\r\n value={contactEmail}\r\n disabled={props?.pageMode?.toLowerCase() === PageMode.View.toLowerCase()}\r\n required />\r\n </Label>\r\n <Label>\r\n <TextField\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactName\", UIControlsText.DealContactName)}\r\n styles={DefaultPageStyles.customWidthForDealTeamLabels}\r\n style={CommonStyles.blackBorder}\r\n value={contactName}\r\n validateOnLoad={false}\r\n errorMessage={dealNameErrorMessage}\r\n disabled={true}\r\n required />\r\n </Label>\r\n <Label>\r\n <Dropdown\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactRoleText\", UIControlsText.DealContactRoleText)}\r\n options={(props?.contactRoles && props.contactRoles.map((pt: IKeyValue) => ({ key: pt.key, text: pt.value } as IDropdownOption))) || []}\r\n placeholder={UIControlsText.DealContactRolePlaceholderText}\r\n styles={{ dropdown: { width: 200 } }}\r\n onChange={onRoleChange}\r\n selectedKey={contactRole}\r\n disabled={props?.pageMode?.toLowerCase() === PageMode.View.toLowerCase()}\r\n required />\r\n </Label>\r\n <Label styles={props?.otherRoleStyle}>\r\n {contactRole === ContactRoles.Others &&\r\n <TextField\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactName\", UIControlsText.DealContactName)}\r\n styles={DefaultPageStyles.customWidthForDealTeamLabels}\r\n style={CommonStyles.blackBorder}\r\n value={otherRole}\r\n onChange={onOtherRoleChange}\r\n disabled={props?.pageMode?.toLowerCase() === PageMode.View.toLowerCase()}\r\n validateOnLoad={false}\r\n errorMessage={dealNameErrorMessage}\r\n required />}\r\n </Label>\r\n <Label>\r\n <Checkbox\r\n name={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactCoOwner\", UIControlsText.DealContactCoOwner)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactCoOwner\", UIControlsText.DealContactCoOwner)}\r\n styles={{ root: DealContactStyles.CoOwnerCheckBox }}\r\n checked={isCoOwnerChecked}\r\n disabled={props?.pageMode?.toLowerCase() === PageMode.View.toLowerCase()}\r\n onChange={onCoOwnerChange} />\r\n </Label>\r\n <Label>\r\n <ActionButton\r\n iconProps={{ iconName: CssClassConstants.DeleteIconName, ariaLabel: CssClassConstants.DeleteIconName, styles: DefaultPageStyles.redColor }}\r\n disabled={props?.pageMode?.toLowerCase() === PageMode.View.toLowerCase()}\r\n style={DealContactStyles.DeleteButton}\r\n id={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeleteVTeamText\", UIControlsText.DeleteVTeamText)}\r\n onClick={(event) => {\r\n event.preventDefault();\r\n props?.removeDealContact && props?.removeDealContact(props?.id);\r\n return;\r\n }}>\r\n </ActionButton>\r\n </Label>\r\n </>\r\n ) : \r\n <> \r\n <Label styles={DefaultPageStyles.customWidth190Styles} className={'ms-LabelValue'}>{contactEmail}</Label>\r\n \r\n <Label styles={DefaultPageStyles.customWidthForDealTeamLabels} className={'ms-LabelValue'}>{contactName}</Label>\r\n \r\n {\r\n !props?.isMicrosoftContact && \r\n <>\r\n <Label styles={DefaultPageStyles.customWidth190Styles} className={'ms-LabelValue'}>{props?.contactRoles?.filter((pt: IKeyValue) => (pt.key === contactRole))[0]?.value}</Label>\r\n \r\n {contactRole === ContactRoles.Others &&\r\n <Label styles={DefaultPageStyles.customWidthStyles} className={'ms-LabelValue'}>{otherRole}</Label>\r\n }\r\n <Label styles={DefaultPageStyles.customWidth40Styles} className={'ms-LabelValue'}>{isCoOwnerChecked ? \"Yes\" : \"No\"}</Label>\r\n </>\r\n }\r\n </>\r\n }\r\n </Stack>\r\n );\r\n\r\n}\r\n\r\nexport default DealContact;","/**\r\n * Enum for Guidance Text.\r\n * @readonly\r\n * @enum {string}\r\n */\r\n export enum GuidanceText {\r\n DealInfoCustomerDomain = \"Enter “@company.com†domain of the end customer. Please do not input contact emails.\",\r\n DealInfoNewCustomerWarning = \"The opportunity will be reviewed by Microsoft Business Desks only after the tentatively submitted customer review has been completed. Microsoft reserves the right to deny the opportunity submission if the submitted customer record is deemed not acceptable.\",\r\n DealInfoDealOverview = \"Enter deal details such as the general nature of the deal, the end customer’s planned use for the devices, and/or any other relevant details that may assist in the review of this opportunity.\",\r\n DealInfoDealOverviewForMSStore = \"Enter deal details such as the general nature of the deal, the end customer’s plans for the devices, pricing offered by MS Stores to the customer, value added services being offered by the MS Store to the customer (if applicable), or any other details that may assist in the review of this opportunity.\",\r\n DealInfoPublicTenderJustification = \"If this deal is part of a RFP/RFQ/Public Tender, you must provide details on the transaction by attaching proof in the ‘attachments section’ or provide justification in the field below.\",\r\n DealInfoPublicTenderAttachments = \"If this deal is part of a RFP/RFQ/Public Tender, you must provide details on the transaction by attaching proof in the ‘attachments section’ or attach any additional documents needed for this deal.\",\r\n DuplicateGridCustomerSelectErrorMessage =\"Please select a customer\",\r\n PartnerSearchCaseSubmissionText=\"Please select the MPN Partner Organization & associated country, for which you would like to submit this case. The organization you choose, will be the name displayed to all viewers of the case.\",\r\n PartnerSearchCaseSubmissionNote=\"Note: If the 'MPN Partner Organization / Country' Field is not editable, this means that your partner organization only has one MPN Organization & Location ID. You may only use this location, to submit a case.\",\r\n CreateUnmanagedCustomerGuidanceText=\"Please Note: The Customer Submittal will result in a longer case review period, as the new customer will be reviewed before the case undergoes standard review for Deal Registration and/or Special Pricing. If the customer submittal is approved, the customer will be attached to the case submission and will proceed to standard review for DR/SP.\",\r\n CreateUnmanagedCustomerGuidanceTextOTLE=\"Please Note: \\\"Submitted Customers will be checked against existing records for duplicates. If duplicates are found, you will have the option to select the existing Customer details or continue with creating the new Customer record.\\â€\",\r\n CreateUnmanagedDuplicateCustomerGuidanceText=\"The records below are potential duplicates of your customer submittal - please review the records below and select the record which matches your submittal. If no records match, you may still submit the new customer, for review. PLEASE NOTE - Selecting a pre-existing customer will prevent an extended case review period. Your case submission will proceed directly to pricing & discount review.\",\r\n CreateUnmanagedCustomerSavingText=\" Submitted customer record is undergoing automated review, Please wait...\",\r\n CreateUnmanagedCustomerSoftDuplicateText=\"Similar Customer details are available in the system, would you like to select the require customer from search result(s)?\",\r\n CreateUnmanagedCustomerHardDuplicateText=\"Customer record already exists (Name, Address, City, State/Province, ZIP / Postal Code). Do you want to continue with new case submission with existing customer record?\",\r\n CreateUnmanagedCustomerSuccessText=\"You may proceed to deal submission. However, the opportunity will be reviewed by Microsoft Business Desks only after the newly submitted customer review has been completed. Microsoft reserves the right to deny the opportunity submission if the submitted customer record is deemed not acceptable.\",\r\n InternalUserSearchCaseSubmissionText = \"For this case submission, please confirm the Product Group for which this case will be submitted.\",\r\n NoDealVTeamMessage = \"No Deal V-Team Members were added to show\",\r\n}","import React, { useState, useEffect } from 'react';\r\nimport { IDropdownOption, Spinner, defaultDatePickerStrings, MessageBarType, mergeStyles, ActionButton, Label, MessageBar, addDays, ImageIcon, Icon, FontIcon } from '@fluentui/react';\r\nimport { useConst } from '@fluentui/react-hooks';\r\nimport { IStackTokens, Stack, StackItem } from '@fluentui/react/lib/Stack';\r\nimport { useInternalPricingContext } from '../context/internalpricing-context';\r\nimport { IProductType } from '../../../../models/IProductType';\r\nimport { ICountry } from '../../../../models/ICountry';\r\nimport { DealGeoCountryType } from '../../../../models/DealGeoCountryType';\r\nimport { CaseActionTypes } from '../../common/reducer/CaseActionTypes';\r\nimport { AffiliationType } from '../../../../models/AffiliationType';\r\nimport { ErrorMessages } from '../../../../content/ErrorMessages';\r\nimport { PageStyles } from '../../common/content/Page.Styles';\r\nimport { UIConfigIdentifierConstants, UIControlsText } from '../../../../content/UIControlsText';\r\nimport { DatePickerStyles, defaultColumnProps, DefaultPageStyles, _Styles } from '../../../../content/styles/Page.styles';\r\nimport { AffiliationTypeOptions, DealGeoCoverageOptions, SingleDealCoverageOption } from '../../../../services/StaticData';\r\nimport { ILegalEntity } from '../../../../models/ILegalEntity';\r\nimport { getDatePart, getsavedContext, getSelectedCountry, getUserRole, isFieldDisabled, isFieldVisible, getRuleValidationMessage, getEntityDataFromSession, getDealType, isValidEmailWithSeperator, isDateNotWithinThreshold, isNullOrEmpty, isValidEmailMicrosoftDomain } from \"../../../../components/shared/common/util\"\r\nimport { IPageState } from '../../common/state/IPageState';\r\nimport { PageMode } from '../../../../models/PageMode';\r\nimport { OpportunityDealStatusCodes } from '../../../../models/OpportunityDealStatusCodes';\r\nimport { CustomerType } from '../../../../models/CustomerType';\r\nimport { IProductFamily } from '../../../../models/IProductFamily';\r\nimport { ActionType } from '../../../../models/ActionType';\r\nimport { CssClassConstants } from '../../../../content/CssClassConstants';\r\nimport { Guid } from '../../../../infrastructure/Guid';\r\nimport { IAttachment } from '../../../../models/IAttachment';\r\nimport { IDealContact } from '../../../../models/IDealContact';\r\nimport { IKeyValue } from '../../../../models/IKeyValue';\r\nimport { IVertical } from '../../../../models/IVertical';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { nextGenService } from '../../../../services/NextGenService';\r\nimport { ArrayExtensions } from '../../../../infrastructure/ArrayExtensions';\r\nimport { ContactRoles } from '../../../../models/ContactRoles';\r\nimport Moment from 'moment';\r\nimport { IInternalPricingDealOverviewProps } from '../props/IInternalPricingDealOverviewProps';\r\nimport { UserSubRole } from '../../../../models/UserSubRole';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport _ from 'lodash';\r\nimport { PageConstants } from '../../../pageconstants/Constants';\r\nimport { smallAlignmentTokens, stackContainerStyles, stackItemCustomerStyles,stackContainerStylesShift, stackStyles } from '../../PricingProgramForm/PricingProgramFormUtils';\r\nimport { IDealType } from '../../../../models/IDealType';\r\nimport { JavaScriptExtensions } from '../../../../infrastructure/JavaScriptExtensions';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { FormRenderingService, IComponent } from '../../../shared/Components/DynamicFormRendering';\r\nimport { useForm } from 'react-hook-form';\r\nimport { AttachmentDisplayMode } from '../../../../models/AttachmentDisplayMode';\r\nimport DealContact from '../../../../components/shared/deal-contact';\r\nimport Col from 'react-bootstrap/esm/Col';\r\nimport { Paper } from '@mui/material';\r\nimport InnerHTMLContainer from '../../../shared/ComponentTypes/InnerHTMLContainer';\r\nimport { GuidanceText } from '../../../../models/GuidanceText';\r\nimport { DealType } from '../../../../models/DealType';\r\nimport { cardHeaderIcon } from '../../../../hooks/accessiblity-hooks';\r\n\r\nconst stackTokens: IStackTokens = { childrenGap: 20 };\r\n\r\n/**\r\n * CP Deal and OTLE - InternalPricingDealOverview Component.\r\n * @function component\r\n */\r\nexport function InternalPricingDealOverview(props: IInternalPricingDealOverviewProps) {\r\n const { register } = useForm({});\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [isCountryMultiSelect, setIsCountryMultiSelect] = useState<boolean>(false);\r\n const [selectedCountries, setSelectedCountries] = useState<ICountry[]>([]);\r\n const [isAffiliationTypeOthersVisible, setIsAffiliationTypeOthersVisible] = useState<boolean>(false);\r\n const {internalPricingContextState, internalPricingContextDispatch} = useInternalPricingContext();\r\n const [oppdealId, setOppdealId] = useState<string>((internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].id) || \"\");\r\n const [dealContact, setDealContact] = useState<IDealContact[]>([]);\r\n const [contactRoles, setContactRoles] = useState<IKeyValue[]>([]);\r\n const savedAttachments = getsavedContext()?.attachments;\r\n const [attachmentList, setAttachmentList] = useState<Array<IAttachment | undefined>>(internalPricingContextState.attachments?.filter(x => x?.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment)) || []);\r\n const [endCustomerAttachment, setEndCustomerAttachmentList] = useState<Array<IAttachment | undefined>>(internalPricingContextState.attachments?.filter(x => x?.source === \"Proof of End Customer's Preference\") || []);\r\n const [gridName, setGridName] = useState(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVTeamText\", UIControlsText.DealVTeamText))\r\n const [dealVTeamText, setDealVTeamText] = useState(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealVTeamInfo\", UIControlsText.DealVTeamInfo)) \r\n const [warningMessageForDealVolume, setWarningMessageForDealVolume] = useState<string>('');\r\n const [emailRecipientsValue, setEmailRecipientsValue] = useState<string | undefined>((internalPricingContextState?.opportunityChannelContacts && internalPricingContextState?.opportunityChannelContacts.find(t => t.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText))?.channelContactEmails) || \"\");\r\n const today = useConst(new Date(Date.now()));\r\n const [maxDateForExpirationField, setMaxDateForExpirationField] = useState<Date | null>(null);\r\n\r\n useEffect(() => {\r\n //Only for OTLE\r\n if (props?.internalPricingDealType === PageConstants.OTLEDealtype) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealGeoCoverageChanged, boolValue: false });\r\n let otleDeal: IDealType = getDealType(PageConstants.OTLEDealtype);\r\n setMaxDateForExpirationField(addDays(today, otleDeal.defaultDurationInDays || 93));\r\n }\r\n }, [internalPricingContextDispatch, internalPricingContextState.opportunityDeals, props?.internalPricingDealType]) ;\r\n\r\n\r\n useEffect(() => {\r\n if (internalPricingContextState?.opportunityDeals[0]?.id) {\r\n setOppdealId(internalPricingContextState?.opportunityDeals[0]?.id);\r\n }\r\n\r\n if (internalPricingContextState?.opportunityDeals[0]?.id && internalPricingContextState.pageMode === PageMode.View) {\r\n var userRole = getUserRole();\r\n var userSubRole = userRole.split(\",\");\r\n if (userSubRole[0] === UserSubRole.ADD || userSubRole[0] === UserSubRole.ADR || userSubRole[0] === UserSubRole.DMP || userSubRole[0] === UserSubRole.MSStoreUser) {\r\n setGridName(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MicrosoftContacts\", UIControlsText.MicrosoftContacts))\r\n setDealVTeamText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInfo\", UIControlsText.DealInfo))\r\n }\r\n }\r\n }, [internalPricingContextState?.opportunityDeals[0]?.id]);\r\n\r\n useEffect(() => {\r\n if (internalPricingContextState?.opportunityDeals && internalPricingContextState?.opportunityDeals[0]?.affiliationType == AffiliationType.Others) {\r\n setIsAffiliationTypeOthersVisible(true);\r\n }\r\n\r\n if (internalPricingContextState?.isMultiNational) {\r\n setIsCountryMultiSelect(internalPricingContextState?.isMultiNational);\r\n }\r\n\r\n if (internalPricingContextState?.opportunityDeals[0]?.geoCountries) {\r\n setSelectedCountries(internalPricingContextState?.opportunityDeals[0]?.geoCountries.filter(c => c.action !== ActionType.Delete));\r\n }\r\n }, [internalPricingContextState?.opportunityDeals[0]?.affiliationType, internalPricingContextState?.isMultiNational, internalPricingContextState?.opportunityDeals[0]?.geoCountries]);\r\n\r\n useEffect(() => {\r\n if (internalPricingContextState?.opportunityDeals[0].dealContacts) {\r\n setDealContact(internalPricingContextState?.opportunityDeals[0].dealContacts.filter((item) => item.action !== ActionType.Delete));\r\n }\r\n\r\n var contactRoles = sessionStorage.getItem(SessionStorageConsts.contactRoles);\r\n if (!contactRoles) {\r\n nextGenService.getContactRoleOptions()\r\n .then((response) => {\r\n sessionStorage.setItem(SessionStorageConsts.contactRoles, JSON.stringify(response.data));\r\n setContactRoles(response.data);\r\n });\r\n }\r\n else {\r\n setContactRoles(JSON.parse(contactRoles));\r\n }\r\n\r\n if (internalPricingContextState.attachments && internalPricingContextState.attachments.length > 0) {\r\n setAttachmentList(internalPricingContextState.attachments?.filter(x => x?.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment)));\r\n setEndCustomerAttachmentList(internalPricingContextState.attachments?.filter(x => x?.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProofOfPreference\", UIControlsText.ProofOfPreference)))\r\n }\r\n }, [sessionStorage.getItem(SessionStorageConsts.contactRoles), internalPricingContextState?.opportunityDeals[0].dealContacts, internalPricingContextState.attachments, internalPricingContextState.selectedPivot]);\r\n \r\n useEffect(() => {\r\n internalPricingContextState?.opportunityChannelContacts \r\n && internalPricingContextState.opportunityChannelContacts?.length \r\n && setEmailRecipientsValue(internalPricingContextState?.opportunityChannelContacts\r\n .find(t => t.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText))\r\n ?.channelContactEmails || \"\");\r\n \r\n }, [internalPricingContextState?.opportunityChannelContacts]);\r\n\r\n useEffect(() => {\r\n if (internalPricingContextState?.isMultiNational === true && internalPricingContextState?.opportunityDeals[0]?.geoCountries && internalPricingContextState?.opportunityDeals[0]?.geoCountries?.filter(c => c.action !== ActionType.Delete).length === 1) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.missingFieldTab, inputArray: [getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText)] });\r\n internalPricingContextDispatch({ type: CaseActionTypes.validationErrors, inputArray: [getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"MultipleDealCountriesError\", ErrorMessages.MultipleDealCountriesError)] });\r\n }\r\n else {\r\n internalPricingContextDispatch({ type: CaseActionTypes.missingFieldTab, inputArray: [] });\r\n internalPricingContextDispatch({ type: CaseActionTypes.validationErrors, inputArray: [] });\r\n }\r\n }, [internalPricingContextState?.isMultiNational, internalPricingContextState?.opportunityDeals[0]?.geoCountries && internalPricingContextState?.opportunityDeals[0]?.geoCountries])\r\n\r\n /**\r\n * DealCoverage change Callback function.if page is edit page mode and trying to change from multiple to single then don't allow\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {IDropdownOption} item Clicked Option from Dropdown.\r\n */\r\n const onDealCoverageChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n if (item.key === DealGeoCountryType.MultiNationalDeal) {\r\n setIsCountryMultiSelect(true);\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealGeoCoverageChanged, boolValue: true });\r\n }\r\n else {\r\n setIsCountryMultiSelect(false);\r\n setSelectedCountries([]);\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealGeoCoverageChanged, boolValue: false });\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealCountryChanged, countries: { key: oppdealId, value: [] } });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * ProductGroup change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {IDropdownOption} item Clicked Option from Dropdown.\r\n */\r\n const onProductGroupChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.productGroupChanged, productGroupValue: item.key })\r\n if(item.key !== internalPricingContextState.productGroup){\r\n internalPricingContextDispatch({ type: CaseActionTypes.selectedProductFamilyChanged, products: { key: oppdealId, value: [] } });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Country change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {IDropdownOption} item Clicked Option from Dropdown.\r\n */\r\n const onCountryChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n if (isCountryMultiSelect) {\r\n let newSelection = props.countries.find((country) => country.countryId == item.key) as ICountry;\r\n let saved = getsavedContext().opportunityDeals && getsavedContext().opportunityDeals[0].geoCountries?.find((country) => country.countryId == item.key);\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n if (!item.selected) {\r\n newSelection.action = ActionType.Delete\r\n }\r\n else if (item.selected) {\r\n newSelection.action = ActionType.Add;\r\n }\r\n }\r\n else {\r\n newSelection.action = item.selected ? ActionType.Add : \"\";\r\n }\r\n setSelectedCountries((prevState: ICountry[]) => {\r\n let newState = item.selected ? [...prevState, newSelection] : prevState.filter(key => key.countryId !== newSelection?.countryId);\r\n let newList = saved ? [...prevState.filter(key => key.countryId !== newSelection?.countryId), newSelection] : newState;\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealCountryChanged, countries: { key: oppdealId, value: newList } });\r\n return newState.filter(c => c.action !== ActionType.Delete);\r\n });\r\n }\r\n else {\r\n let newSelection = props.countries.find((country) => country.countryId == item.key) as ICountry;\r\n newSelection.action = ActionType.Add;\r\n setSelectedCountries((prevState: ICountry[]) => {\r\n let newList = [newSelection];\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n let saved = getsavedContext().opportunityDeals[0].geoCountries?.map(c => {\r\n c.action = ActionType.Delete;\r\n return c\r\n }) as ICountry[];\r\n newList = [...newList, ...saved];\r\n }\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealCountryChanged, countries: { key: oppdealId, value: newList } });\r\n return [newSelection];\r\n });\r\n }\r\n if (!item.selected || !isCountryMultiSelect) {\r\n validateCountry(getSelectedCountry([item.key as string])[0]);\r\n }\r\n }\r\n };\r\n\r\n ///this function used to validate country selected/changed already added in legal entry or products selection list and alert user\r\n const validateCountry = (item: IDropdownOption): void => {\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Create.toLowerCase() ||\r\n internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Draft) {\r\n\r\n var isExist = false;\r\n if ((internalPricingContextState.opportunityDeals[0].dealCustomers || [])\r\n .filter((selectedItem: ILegalEntity) => selectedItem.country === item.text).length > 0) {\r\n isExist = true;\r\n }\r\n else if ((internalPricingContextState.opportunityDeals[0].products || [])\r\n .filter((selectedItem: IProductFamily) => selectedItem.country === item.text).length > 0) {\r\n isExist = true;\r\n }\r\n if (isExist) {\r\n alert(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"LegalEntityAndProductsSelectionErrorMessage\", UIControlsText.LegalEntityAndProductsSelectionErrorMessage));\r\n }\r\n }\r\n }\r\n /**\r\n * AffiliationType change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {IDropdownOption} item Clicked Option from Dropdown.\r\n */\r\n const onAffiliationTypeChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n if (item.key === AffiliationType.Others) {\r\n setIsAffiliationTypeOthersVisible(true);\r\n }\r\n else {\r\n setIsAffiliationTypeOthersVisible(false);\r\n }\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealAffiliationTypeChanged, dealDropDownValue: { key: oppdealId, value: item.key } });\r\n if (item.key === AffiliationType.AffiliateCompanies) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealAffiliationTypeOtherChanged, dealInputValue: { key: oppdealId, value: \"\" } });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Deal AffiliationType Others change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onAffiliationTypeOthersChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealAffiliationTypeOtherChanged, dealInputValue: { key: oppdealId, value: newValue } })\r\n }\r\n\r\n if (internalPricingContextState.dataLoading) {\r\n return (\r\n <Stack>\r\n <div>\r\n <Spinner label=\"Getting Data...\" />\r\n </div>\r\n </Stack>\r\n );\r\n }\r\n //function to validate against saved country and enable / disable based on page mode and/or opp deal case status\r\n const isNonEditableCountry = (country: string): boolean => {\r\n var isDisabled = false;\r\n var PrimaryCountry = undefined;\r\n //in case of view page mode, return true to disable country option\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()) {\r\n return true;\r\n }\r\n var savedSate = getsavedContext() as IPageState;\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() && savedSate.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview) {\r\n return true;\r\n }\r\n\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n PrimaryCountry = internalPricingContextState.opportunityDeals[0].dealCustomers?.find(c => c.customerType === CustomerType.Primary)?.country;\r\n }\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() &&\r\n savedSate.isMultiNational && internalPricingContextState.opportunityDeals[0].statusCode !== OpportunityDealStatusCodes.Draft\r\n ) {\r\n if (savedSate.opportunityDeals[0].geoCountries) {\r\n if (savedSate.opportunityDeals[0].geoCountries.filter(c => c.action !== ActionType.Delete).findIndex(x => x.countryName === country) !== -1) {\r\n isDisabled = true;\r\n }\r\n }\r\n }\r\n else if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() &&\r\n internalPricingContextState.opportunityDeals[0].statusCode !== OpportunityDealStatusCodes.Draft &&\r\n !internalPricingContextState.isMultiNational\r\n )\r\n isDisabled = true;\r\n //disable if isprimary selected else based on status.\r\n return PrimaryCountry === country ? true : isDisabled;\r\n }\r\n\r\n /**\r\n * Remove Deal Contact Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n */\r\n const removeDealContact = (id?: string | undefined): void => {\r\n var newList = getDeletedContactItems(dealContact.filter((item) => item.id !== id));\r\n var exceptDelete = newList.filter((item) => item.action !== ActionType.Delete);\r\n setDealContact(exceptDelete);\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealDetailsContactChanged, dealContacts: { key: oppdealId, value: newList } })\r\n }\r\n /**\r\n * Add/Update Deal Contact Callback function.\r\n * @method\r\n * @param {IDealContact} contact updated deal contact.\r\n */\r\n const getDeletedContactItems = (dealContancts: IDealContact[]): IDealContact[] => {\r\n var deletedContacts = dealContancts;\r\n if (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].statusCode != OpportunityDealStatusCodes.Draft\r\n && internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n getsavedContext().opportunityDeals[0].dealContacts?.map((item: IDealContact) => {\r\n item.action = ActionType.Delete;\r\n var findItem = deletedContacts.find(x => x.id === item.id);\r\n if (findItem === undefined)\r\n deletedContacts.push(item);\r\n });\r\n }\r\n return deletedContacts;\r\n }\r\n /**\r\n * Add/Update Deal Contact Callback function.\r\n * @method \r\n * @param {IDealContact} contact updated deal contact.\r\n */\r\n const updateDealContact = (contact?: IDealContact): void => {\r\n var newList = getDeletedContactItems(dealContact);\r\n var updatedContact;\r\n /* eslint-disable */\r\n if (contact) {\r\n var idx = dealContact.findIndex((item) => item.id === contact?.id);\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n var savedContext = getsavedContext();\r\n if (savedContext.opportunityDeals[0].dealContacts?.findIndex((item) => item.id === contact?.id) !== -1) {\r\n var savedindex = savedContext.opportunityDeals[0].dealContacts?.findIndex((item) => item.id === contact?.id);\r\n if (savedContext.opportunityDeals[0].dealContacts && savedindex !== undefined) {\r\n var saveditem = savedContext.opportunityDeals[0].dealContacts[savedindex];\r\n if (saveditem.email !== contact.email || saveditem.firstName !== contact.firstName ||\r\n saveditem.lastName !== contact.lastName || saveditem.contactType !== contact.contactType ||\r\n saveditem.isCoOwner !== contact.isCoOwner) {\r\n contact.action = ActionType.Update\r\n }\r\n else {\r\n contact.action = saveditem.action\r\n }\r\n }\r\n else {\r\n contact.action = ActionType.Add\r\n }\r\n }\r\n else {\r\n contact.action = ActionType.Add\r\n }\r\n updatedContact = contact\r\n newList[idx] = updatedContact;\r\n }\r\n else {\r\n contact.action = ActionType.Add\r\n updatedContact = contact\r\n newList[idx] = updatedContact;\r\n }\r\n }\r\n setDealContact(newList.filter((item) => item.action !== ActionType.Delete));\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealDetailsContactChanged, dealContacts: { key: oppdealId, value: newList } })\r\n }\r\n\r\n /**\r\n * DealName change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onDealNameChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealNameInputChanged, dealInputValue: { key: oppdealId, value: newValue } })\r\n }\r\n\r\n /**\r\n * Deal Overview change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onDealOverviewChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealOverviewInputChanged, dealInputValue: { key: oppdealId, value: newValue } })\r\n }\r\n\r\n /**\r\n * Additional Information Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onAdditionalInfoChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealAdditionalInfoInputChanged, dealInputValue: { key: oppdealId, value: newValue } })\r\n }\r\n\r\n /**\r\n * Deal Volume change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onDealVolumeChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n internalPricingContextDispatch({ type: CaseActionTypes.totalunitsTransactedChanged, dealVolume: { key: oppdealId, value: newValue ? parseInt(newValue) : 0 } });\r\n }\r\n\r\n /**\r\n * Deal Volume change Callback function.\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n */\r\n const onDealVolumeChangeSetWarning = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>): string => {\r\n //Validation for OTLE\r\n if(props?.internalPricingDealType == PageConstants.OTLEDealtype) {\r\n if(internalPricingContextState?.productGroup && internalPricingContextState.opportunityDeals[0] && internalPricingContextState.opportunityDeals[0]?.id && internalPricingContextState.pageMode) {\r\n const dealQuantityThresholdForDealType : number = Number(sessionStorage.getItem(SessionStorageConsts.dealQuantityThresholdConfigs));\r\n let dealVolumeValue : number | undefined = internalPricingContextState.opportunityDeals[0]?.dealVolume;\r\n if(dealVolumeValue !== undefined) {\r\n if(dealVolumeValue < dealQuantityThresholdForDealType) {\r\n setWarningMessageForDealVolume(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"DealVolumeThresholdWarningForOTLE\", ErrorMessages.DealVolumeThresholdWarningForOTLE));\r\n }\r\n else {\r\n setWarningMessageForDealVolume(\"\");\r\n }\r\n }\r\n else {\r\n setWarningMessageForDealVolume(\"\");\r\n }\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n /**\r\n * Deal vertical change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {IDropdownOption} item Clicked Option from Dropdown.\r\n */\r\n const onDealVerticalChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealVerticalChanged, dealDropDownValue: { key: oppdealId, value: item.key } })\r\n }\r\n }\r\n \r\n /**\r\n * Deal Expiration date change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onExpirationDateJustification = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealDetailsExpirationDateJustificationChanged, dealInputValue: { key: oppdealId, value: newValue } })\r\n }\r\n\r\n /**\r\n * Exception Request change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onDealRequestedExpirationDate = (newValue?: Date | null): void => {\r\n var formatedValue = Moment(newValue).format('YYYY-MM-DD');\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealDetailsRequestedExpirationDateChanged, inputDate: { key: oppdealId, value: formatedValue } })\r\n }\r\n\r\n /**\r\n * Get TextField ErrorMessage.\r\n * @method\r\n * @param {string} value Text Box value.\r\n * @@returns {string} Error Message.\r\n */\r\n const getExpirationDateErrorMessage = (value: string): string => {\r\n if(JavaScriptExtensions.isNullOrUndfinedOrEmpty(value)) {\r\n return \"\";\r\n }\r\n\r\n let internalPricingDealType: IDealType = getDealType(PageConstants.OTLEDealtype);\r\n let minExpirationDateInDays : any = internalPricingDealType?.defaultDurationInDays;\r\n let error : string | undefined = isDateNotWithinThreshold(value, internalPricingDealType) || \"\";\r\n if(JavaScriptExtensions.isDefined(error) && !isNullOrEmpty(error)) {\r\n return error;\r\n }\r\n return internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() ? '' :\r\n !value ? getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldError\", ErrorMessages.RequiredFieldError) : '';\r\n }\r\n\r\n /**\r\n * Textbox EmailCCNotification Change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onEmailCCNotificationTextBoxChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {\r\n if(JavaScriptExtensions.isNullOrUndfinedOrEmpty(newValue)) {\r\n return;\r\n }\r\n setEmailRecipientsValue(event.currentTarget.value);\r\n }\r\n\r\n /**\r\n * Textbox EmailCCNotification Blur Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onEmailCCNotificationTextBoxBlur = (newValue?: string) => {\r\n if(JavaScriptExtensions.isNullOrUndfinedOrEmpty(newValue)) {\r\n return;\r\n }\r\n const updatedDealContacts = [];\r\n let error = isValidEmailMicrosoftDomain(newValue);\r\n if(error) {\r\n return error;\r\n }\r\n \r\n const isComplete = isValidEmailWithSeperator(newValue || \"\", ';');\r\n updatedDealContacts.push({ action: ActionType.Add, id: Guid.newGuid(), \r\n source: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText), \r\n channelContactEmails: newValue?.replace(',',';'),\r\n isComplete: isComplete\r\n });\r\n\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelContactChanged, channelContacts: updatedDealContacts });\r\n }\r\n\r\n /**\r\n * Exception Request change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onExceptionRequestChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealDetailsExceptionRequestChanged, dealInputValue: { key: oppdealId, value: newValue } })\r\n }\r\n\r\n /**\r\n * Attachment change Callback function.\r\n * @param {Array<IAttachment | undefined>} attachmentList Updated list of attachments \r\n */\r\n const onAttachmentChange = (attachmentList: Array<IAttachment | undefined>): void => {\r\n setAttachmentList(attachmentList.filter(item => item?.action !== ActionType.Delete));\r\n let allAttachments: (IAttachment | undefined)[] | undefined = internalPricingContextState?.attachments || [];\r\n let otherAttachments = attachmentList?.filter(x => x?.source == getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment)) || [];\r\n if (JavaScriptExtensions.isDefined(otherAttachments)) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.attachmentChanged, attachments: ArrayExtensions.mergeArrays(otherAttachments, allAttachments) });\r\n }\r\n }\r\n\r\n /**\r\n * Attachment change Callback function.\r\n * @param {Array<IAttachment | undefined>} attachmentList Updated list of attachments \r\n */\r\n const onEndCustomerProofAttachmentChange = (endCustomerAttachmentList: Array<IAttachment | undefined>): void => {\r\n setEndCustomerAttachmentList (endCustomerAttachmentList.filter(item => item?.action !== ActionType.Delete));\r\n let allAttachments: (IAttachment | undefined)[] | undefined = internalPricingContextState?.attachments || [];\r\n let proofOfCustomerPreference = endCustomerAttachmentList?.filter(x => x?.source == getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProofOfPreference\", UIControlsText.ProofOfPreference)) || [];\r\n if (JavaScriptExtensions.isDefined(proofOfCustomerPreference)) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.attachmentChanged, attachments: ArrayExtensions.mergeArrays(proofOfCustomerPreference, allAttachments) });\r\n }\r\n }\r\n\r\n /**\r\n * Get TextField ErrorMessage.\r\n * @method\r\n * @param {string} value Text Box value.\r\n * @@returns {string} Error Message.\r\n */\r\n const getTextFieldErrorMessage = (value: string): string => {\r\n return internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() ? '' :\r\n !value ? getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldError\", ErrorMessages.RequiredFieldError) : '';\r\n };\r\n \r\n const getInputQuantityZeroErrorMessage = (value: string): string => {\r\n if (props?.internalPricingDealType == PageConstants.OTLEDealtype) {\r\n let dealVolumeValue : number | undefined = internalPricingContextState.opportunityDeals[0]?.dealVolume || Number(value);\r\n if(dealVolumeValue == 0) {\r\n return getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"InputQuantityShouldNotBeZero\", ErrorMessages.InputQuantityShouldNotBeZero);\r\n }\r\n }\r\n getTextFieldErrorMessage(value);\r\n return \"\";\r\n }\r\n\r\n //this method is to hide required field error message on view mode\r\n const isRequired = (): boolean => {\r\n return internalPricingContextState.pageMode?.toLowerCase() !== PageMode.View.toLowerCase()\r\n }\r\n //this method will validate page mode and status and return to true/false to make deal vteam visible\r\n const isDealteamSectionVisible = (): boolean => {\r\n return internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() ?\r\n isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVTeamText\", UIControlsText.DealVTeamText), internalPricingContextState.pageMode, props?.internalPricingDealType) :\r\n !isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVTeamText\", UIControlsText.DealVTeamText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType);\r\n }\r\n\r\n const isMicrosoftContactSectionVisible = (): boolean => {\r\n return internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MicrosoftContactText\", UIControlsText.MicrosoftContactText), internalPricingContextState.pageMode, props?.internalPricingDealType) \r\n }\r\n\r\n const otherContactIndex = dealContact.findIndex(item => item.contactType === ContactRoles.Others);\r\n const otherLabelStyle = otherContactIndex !== -1 ? DefaultPageStyles.customWidthForDealTeamLabels : DefaultPageStyles.noColumnMinWidthStyles;\r\n //display field \"Segment(s)\" based on pagemode and user role\r\n const segmentVisible = (): boolean =>{\r\n return internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Segments\", UIControlsText.Segments), internalPricingContextState.pageMode, props?.internalPricingDealType) \r\n }\r\n //get distinct segmentvalue from legal entity \r\n const segmentValue = (): Array<string> => {\r\n return _.uniqBy(internalPricingContextState.opportunityDeals[0].dealCustomers, \"segment\").map(s => s.segment);\r\n }\r\n\r\n const DealDetailsJsonForCreateEdit : IComponent = \r\n {\r\n type: \"Stack\",\r\n data: \r\n {\r\n id: \"StackMain\",\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackTileForDeal\",\r\n horizontal:true,\r\n verticalAlign: \"start\",\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"CreateCardForDeal\",\r\n baseState: internalPricingContextState,\r\n name: UIControlsText.DealDetailsText, \r\n iconName: UIControlsText.DealDetailsIcon,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'DealsDetailsContainer',\r\n vertical: true,\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForDealitems\",\r\n horizontal: true,\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: UIConfigIdentifierConstants.StackDealsNameRowId,\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"Dropdown\",\r\n visible: !isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealProductGroupText\",\r\n label:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText),\r\n ariaLabel:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText),\r\n placeholder:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealProductGroupPlaceHolderText\", UIControlsText.DealProductGroupPlaceHolderText),\r\n title:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealProductGroupPlaceHolderText\", UIControlsText.DealProductGroupPlaceHolderText),\r\n options:props.productTypes.map((pt: IProductType) => ({ key: pt.productId, text: pt.productName } as IDropdownOption)),\r\n styles:PageStyles.bgdropdownStyles,\r\n onChange:onProductGroupChange,\r\n selectedKey:internalPricingContextState.productGroup && internalPricingContextState.productGroup,\r\n required:true,\r\n disabled:isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n \r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealProductGroupTextPageModeEdit\",\r\n contolType: UIControlType.LabelValueView,\r\n label:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText),\r\n ariaLabel:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText),\r\n title:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealProductGroupPlaceHolderText\", UIControlsText.DealProductGroupPlaceHolderText),\r\n styles:PageStyles.dropdownStyles,\r\n value: props?.productTypes?.filter(x => x.productId === internalPricingContextState.productGroup)[0]?.productName\r\n }\r\n }, \r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackItemContainerDealNameText\",\r\n styles: stackContainerStylesShift,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealNameText\",\r\n label:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText),\r\n ariaLabel:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText),\r\n placeholder:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealNamePlaceHolderText\", UIControlsText.DealNamePlaceHolderText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n validateOnFocusOut: true,\r\n multiline: true,\r\n rows:3,\r\n resizable:false,\r\n validateOnLoad:false,\r\n onGetErrorMessage:getTextFieldErrorMessage,\r\n onChange: onDealNameChange,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].dealName,\r\n maxLength: 100,\r\n disabled: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n required:isRequired(),\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealNameTextPageModeEdit\",\r\n contolType: UIControlType.LabelValueView,\r\n label:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText),\r\n ariaLabel:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].dealName,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n \r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: \"StackContainerForDealNameText\",\r\n horizontal: true,\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForDealVerticalDropdown',\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"Dropdown\",\r\n visible: !isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealVerticalDropdown\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText),\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealVerticalPlaceHolderText\", UIControlsText.DealVerticalPlaceHolderText),\r\n options: (props?.verticals && props.verticals.map((pt: IVertical) => ({ key: pt.id, text: pt.name } as IDropdownOption))) || [],\r\n styles:PageStyles.bgdropdownStyles,\r\n onChange: onDealVerticalChange,\r\n selectedKey: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].dealVertical,\r\n disabled:props?.internalPricingDealType === DealType.OTLE.toLowerCase()? false :\r\n (((internalPricingContextState.opportunityDeals[0]?.dealCustomers || [])\r\n .filter((selectedItem: ILegalEntity) => selectedItem.customerType === CustomerType.Primary).length === 0) ||\r\n isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType)),\r\n required: isRequired(),\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealVerticalDropdown\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText),\r\n options: (props?.verticals && props.verticals.map((pt: IVertical) => ({ key: pt.id, text: pt.name } as IDropdownOption))) || [],\r\n styles: PageStyles.dropdownStyles,\r\n value: props?.verticals?.find((v: IVertical) => v.id == (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.dealVertical))?.name,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: 'StackItemForDealOverviewText',\r\n styles: stackContainerStylesShift,\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealOverviewText\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealOverviewPlaceHolderText\", UIControlsText.DealOverviewPlaceHolderText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n onGetErrorMessage: getTextFieldErrorMessage,\r\n validateOnFocusOut: true,\r\n multiline: true,\r\n rows: 3,\r\n resizable: false,\r\n validateOnLoad: false,\r\n onChange: onDealOverviewChange,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].dealOverview,\r\n disabled: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n required: isRequired(),\r\n maxLength: 2000,\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealOverviewTextPageModeEdit\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n styles: PageStyles.innerHtmlMinWidth,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.dealOverview,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }, \r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForCase\",\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"CustomCardForCaseDetails\",\r\n baseState: internalPricingContextState,\r\n name: UIControlsText.CaseDetailsText,\r\n iconName: UIControlsText.CaseDetailsIcon,\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForCaseDetails\",\r\n horizontal: true,\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: \"StackItemForDealGeoCoverageText\",\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"Dropdown\",\r\n visible: !isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealGeoCoverageText\", UIControlsText.DealGeoCoverageText), internalPricingContextState.pageMode, internalPricingContextState?.opportunityDeals[0]?.statusCode, isCountryMultiSelect, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealGeoCoverageText\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealGeoCoverageText\", UIControlsText.DealGeoCoverageText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealGeoCoverageText\", UIControlsText.DealGeoCoverageText),\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealGeoCoveragePlaceHolderText\", UIControlsText.DealGeoCoveragePlaceHolderText),\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealGeoCoveragePlaceHolderText\", UIControlsText.DealGeoCoveragePlaceHolderText),\r\n options: props?.internalPricingDealType == PageConstants.OTLEDealtype ? SingleDealCoverageOption : DealGeoCoverageOptions,\r\n styles:PageStyles.bgdropdownStyles,\r\n onChange:onDealCoverageChange,\r\n selectedKey: (props?.internalPricingDealType == PageConstants.OTLEDealtype) ? Number(internalPricingContextState.isMultiNational) : Number(internalPricingContextState.isMultiNational),\r\n required: true,\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealGeoCoverageText\", UIControlsText.DealGeoCoverageText), internalPricingContextState.pageMode, internalPricingContextState?.opportunityDeals[0]?.statusCode, isCountryMultiSelect, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealGeoCoverageTextDisplay\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealGeoCoverageText\", UIControlsText.DealGeoCoverageText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealGeoCoverageText\", UIControlsText.DealGeoCoverageText),\r\n styles: PageStyles.textFieldStylesWidth146,\r\n value: DealGeoCoverageOptions.filter(x => x.key == Number(internalPricingContextState.isMultiNational))[0]?.text,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackforDealCountry\",\r\n horizontal: true,\r\n styles: stackContainerStyles,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: \"DealCountryStackItem\",\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"Dropdown\",\r\n data: {\r\n id: CssClassConstants.DealCountryDropdownId,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCountryText\", UIControlsText.DealCountryText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCountryText\", UIControlsText.DealCountryText),\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealCountryPlaceHolderText\", UIControlsText.DealCountryPlaceHolderText),\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealCountryPlaceHolderText\", UIControlsText.DealCountryPlaceHolderText),\r\n options: props.countries.map((pt: ICountry) => ({ key: pt.countryId, text: pt.countryName, disabled: internalPricingContextState.pageMode?.toLowerCase() === PageMode.Create.toLowerCase() ? false : isNonEditableCountry(pt.countryName || \"\") } as IDropdownOption)),\r\n styles:PageStyles.bgdropdownStyles,\r\n multiSelect: isCountryMultiSelect,\r\n selectedKey: selectedCountries.map(c => c.countryId),\r\n selectedKeys: selectedCountries.map(c => c.countryId),\r\n onChange: onCountryChange,\r\n required: true,\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCountryText\", UIControlsText.DealCountryText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, getsavedContext()?.isMultiNational, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: CssClassConstants.DealCountryDropdownId,\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCountryText\", UIControlsText.DealCountryText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCountryText\", UIControlsText.DealCountryText),\r\n styles: PageStyles.textFieldStylesWidth146,\r\n value: selectedCountries?.map((c: ICountry) => { return c.countryName} )?.join(\",\"), }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: props?.internalPricingDealType == PageConstants.CPStrategicDealtype?.toLowerCase() &&\r\n isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeText\", UIControlsText.DealAffiliationTypeText), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: 'StackItemForOther',\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"Dropdown\",\r\n visible: !(isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeText\", UIControlsText.DealAffiliationTypeText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0].statusCode, undefined, undefined, props?.internalPricingDealType)),\r\n data: {\r\n id: \"DealAffiliationTypeText\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeText\", UIControlsText.DealAffiliationTypeText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeText\", UIControlsText.DealAffiliationTypeText),\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealAffiliationTypePlaceHolderText\", UIControlsText.DealAffiliationTypePlaceHolderText),\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealAffiliationTypePlaceHolderText\", UIControlsText.DealAffiliationTypePlaceHolderText),\r\n options: AffiliationTypeOptions,\r\n styles: PageStyles.bgdropdownStyles,\r\n onChange: onAffiliationTypeChange,\r\n defaultSelectedKey: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].affiliationType,\r\n selectedKey: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].affiliationType,\r\n required: true,\r\n disabled: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeText\", UIControlsText.DealAffiliationTypeText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0].statusCode, undefined, undefined, props?.internalPricingDealType),\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeText\", UIControlsText.DealAffiliationTypeText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0].statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealAffiliationTypeText\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeText\", UIControlsText.DealAffiliationTypeText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeText\", UIControlsText.DealAffiliationTypeText),\r\n styles: PageStyles.bgdropdownStyles,\r\n value: AffiliationTypeOptions.filter(x => x?.key == (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.affiliationType))[0]?.text,\r\n }\r\n },\r\n {\r\n type: \"TextField\",\r\n visible: isAffiliationTypeOthersVisible && !(isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeOtherText\", UIControlsText.DealAffiliationTypeOtherText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0].statusCode, undefined, undefined, props?.internalPricingDealType)),\r\n data: {\r\n id: \"DealAffiliationTypeOtherText\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeOtherText\", UIControlsText.DealAffiliationTypeOtherText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeOtherText\", UIControlsText.DealAffiliationTypeOtherText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealAffiliationTypeOtherPlaceHolderText\", UIControlsText.DealAffiliationTypeOtherPlaceHolderText),\r\n validateOnFocusOut: true,\r\n validateOnLoad: false,\r\n onGetErrorMessage: getTextFieldErrorMessage,\r\n onChange: onAffiliationTypeOthersChange,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].affiliationTypeOthers,\r\n maxLength: 100,\r\n disabled: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeOtherText\", UIControlsText.DealAffiliationTypeOtherText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0].statusCode, undefined, undefined, props?.internalPricingDealType),\r\n required: true,\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isAffiliationTypeOthersVisible && isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeOtherText\", UIControlsText.DealAffiliationTypeOtherText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealAffiliationTypeOtherText\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeOtherText\", UIControlsText.DealAffiliationTypeOtherText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeOtherText\", UIControlsText.DealAffiliationTypeOtherText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n value: AffiliationTypeOptions.filter(x => x.key == (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.affiliationTypeOthers))[0]?.text,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackItemForEmailCC\",\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: (props?.internalPricingDealType == PageConstants.OTLEDealtype?.toLowerCase()) && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients), internalPricingContextState.pageMode, props?.internalPricingDealType) && internalPricingContextState?.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.PendingSecondaryReview,\r\n data: {\r\n id: \"EmailRecipientsTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n multiline: true,\r\n validateOnLoad: false,\r\n maxLength: 5000,\r\n value: emailRecipientsValue, \r\n onChange: onEmailCCNotificationTextBoxChange,\r\n onBlur: onEmailCCNotificationTextBoxBlur,\r\n onGetErrorMessage: onEmailCCNotificationTextBoxBlur,\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n visible: internalPricingContextState?.pageMode === PageMode.Edit && internalPricingContextState?.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview ? true : false,\r\n data: {\r\n id: \"StackItemForEmailCCView\",\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"EmailRecipientsTextFieldView\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n styles: PageStyles.textFieldStylesTwoColumn,\r\n value: internalPricingContextState?.opportunityChannelContacts && internalPricingContextState?.opportunityChannelContacts.find(t => t.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText))?.channelContactEmails || UIControlsText.None\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n \r\n ]\r\n }\r\n } \r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForDealVolAndAttachments\",\r\n styles: stackContainerStyles,\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"CardForCommittedDealVolume\",\r\n baseState: internalPricingContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CommittedDealVolumeText\", UIControlsText.CommittedDealVolumeText),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CommittedDealVolumeIcon\", UIControlsText.CommittedDealVolumeIcon),\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForDealVolItems\",\r\n styles: stackContainerStyles,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForDealVolumeText',\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !(internalPricingContextState.pageMode?.toLowerCase() === PageMode.View || internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview ? true :\r\n (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies)),\r\n data: {\r\n id: \"DealVolumeText\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVolume\", UIControlsText.DealVolume),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVolume\", UIControlsText.DealVolume),\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealVolumePlaceHolderText\", UIControlsText.DealVolumePlaceHolderText),\r\n styles: PageStyles.textFieldStylesFourColumn,\r\n onGetErrorMessage: getInputQuantityZeroErrorMessage,\r\n validateOnFocusOut: true,\r\n validateOnLoad: false,\r\n onChange: onDealVolumeChange,\r\n onBlur: onDealVolumeChangeSetWarning,\r\n type: \"number\",\r\n min: 0,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].dealVolume?.toString(),\r\n required: props?.internalPricingDealType == PageConstants.OTLEDealtype,\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: !JavaScriptExtensions.isNullOrUndfinedOrEmpty(warningMessageForDealVolume) && warningMessageForDealVolume.length > 1 && props?.internalPricingDealType == PageConstants.OTLEDealtype\r\n && !(internalPricingContextState.pageMode?.toLowerCase() === PageMode.View ? true :\r\n (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies)),\r\n data: {\r\n id: \"MessageBarForWarning\",\r\n ariaLabel: warningMessageForDealVolume,\r\n contolType: UIControlType.MessageBar,\r\n message: warningMessageForDealVolume,\r\n styles: mergeStyles(PageStyles.warningMessageWidth),\r\n messageBarType: MessageBarType.error,\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: internalPricingContextState.pageMode?.toLowerCase() === PageMode.View || internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview ? true :\r\n (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.affiliationType === AffiliationType.AffiliateCompanies),\r\n data: {\r\n id: \"DealVolumeTextPageModeEdit\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVolume\", UIControlsText.DealVolume),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVolume\", UIControlsText.DealVolume),\r\n styles: PageStyles.textFieldStylesFourColumn,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.dealVolume?.toString(),\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForExpiration\",\r\n horizontal: true,\r\n styles: stackContainerStyles, \r\n components: [\r\n { \r\n type: 'CustomTileCardComponent',\r\n data: {\r\n id: \"CustomCardForExpiration\",\r\n baseState: internalPricingContextState,\r\n name: \"Expiration Details\",\r\n iconName: UIControlsText.DateCalendarIcon,\r\n components:[ \r\n {\r\n type: 'Stack',\r\n data: {\r\n id: \"StackContainerForExpiration\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: 'StackItemForDatePicker',\r\n verticalAlign: \"start\",\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"DatePicker\",\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", UIControlsText.DealExpirationDateText), internalPricingContextState.pageMode, props?.internalPricingDealType) &&\r\n ! (isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", UIControlsText.DealExpirationDateText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType)),\r\n data: {\r\n id: \"DealExpirationDateText\",\r\n styles: DatePickerStyles,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", UIControlsText.DealExpirationDateText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", UIControlsText.DealExpirationDateText),\r\n // DatePicker uses English strings by default. For localized apps, you must override this prop.\r\n strings: defaultDatePickerStrings,\r\n minDate: new Date(Date.now()),\r\n maxDate: maxDateForExpirationField,\r\n highlightCurrentMonth: true,\r\n highlightSelectedMonth: true,\r\n onSelectDate: onDealRequestedExpirationDate,\r\n value: getDatePart(internalPricingContextState.opportunityDeals[0].expirationDate),\r\n onGetErrorMessage: (props?.internalPricingDealType == PageConstants.OTLEDealtype ? getExpirationDateErrorMessage : getTextFieldErrorMessage),\r\n disabled: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", UIControlsText.DealExpirationDateText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n textField: {\r\n validateOnLoad: false, validateOnFocusOut: true,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", UIControlsText.DealExpirationDateText)),\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealExpirationDatePlaceHolderText\", UIControlsText.DealExpirationDatePlaceHolderText),\r\n required: isRequired(),\r\n onGetErrorMessage: (props?.internalPricingDealType == PageConstants.OTLEDealtype ? getExpirationDateErrorMessage : getTextFieldErrorMessage),\r\n }\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", UIControlsText.DealExpirationDateText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"DealExpirationDateText\",\r\n contolType: UIControlType.LabelValueView,\r\n styles: DatePickerStyles,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", UIControlsText.DealExpirationDateText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", UIControlsText.DealExpirationDateText),\r\n value: internalPricingContextState.opportunityDeals[0]?.expirationDate && Moment(internalPricingContextState.opportunityDeals[0]?.expirationDate)?.format('MM/DD/YYYY'),\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: props?.internalPricingDealType == PageConstants.OTLEDealtype && internalPricingContextState.pageMode == PageMode.Edit,\r\n data: {\r\n id: \"StackItemForDealCasesStartDateText\",\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealCasesStartDateText\",\r\n contolType: UIControlType.LabelValueView,\r\n styles: PageStyles.textFieldStylesWidth146,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCasesStartDateText\", UIControlsText.DealCasesStartDateText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCasesStartDateText\", UIControlsText.DealCasesStartDateText),\r\n value: internalPricingContextState.opportunityDeals[0]?.caseStartDate && Moment(internalPricingContextState.opportunityDeals[0]?.caseStartDate)?.format('MM/DD/YYYY'),\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n \r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: props?.internalPricingDealType == PageConstants.CPStrategicDealtype?.toLowerCase() \r\n && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateJustificationText\", UIControlsText.DealExpirationDateJustificationText), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: \"StackItemForDealExpirationDateJustificationText\",\r\n styles: stackContainerStylesShift,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateJustificationText\", UIControlsText.DealExpirationDateJustificationText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: \r\n {\r\n id: \"DealExpirationDateJustificationText\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateJustificationText\", UIControlsText.DealExpirationDateJustificationText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateJustificationText\", UIControlsText.DealExpirationDateJustificationText),\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealExpirationDateJustificationPlaceHolderText\", UIControlsText.DealExpirationDateJustificationPlaceHolderText),\r\n validateOnFocusOut: true,\r\n validateOnLoad: false,\r\n onGetErrorMessage: getTextFieldErrorMessage,\r\n onChange: onExpirationDateJustification,\r\n styles: DefaultPageStyles.oneColumnWidthStyles,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.expirationDateJustification,\r\n maxLength: 2000,\r\n disabled: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateJustificationText\", UIControlsText.DealExpirationDateJustificationText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n required: isRequired(),\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateJustificationText\", UIControlsText.DealExpirationDateJustificationText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: \r\n {\r\n id: \"DealExpirationDateJustificationTextPageModeEdit\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateJustificationText\", UIControlsText.DealExpirationDateJustificationText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateJustificationText\", UIControlsText.DealExpirationDateJustificationText),\r\n styles: DefaultPageStyles.oneColumnWidthStyles,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.expirationDateJustification,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExceptionRequest\", UIControlsText.ExceptionRequest), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: \"StackForExceptionRequest\",\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForExceptionRequest',\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExceptionRequest\", UIControlsText.ExceptionRequest), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"ExceptionRequest\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExceptionRequest\", UIControlsText.ExceptionRequest),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExceptionRequest\", UIControlsText.ExceptionRequest),\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ExceptionRequestPlaceHolderText\", UIControlsText.ExceptionRequestPlaceHolderText),\r\n onChange: onExceptionRequestChange,\r\n styles: DefaultPageStyles.oneColumnWidthStyles,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.exceptionRequest,\r\n maxLength: 100,\r\n multiline: true,\r\n rows: 3,\r\n resizable: false,\r\n disabled: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExceptionRequest\", UIControlsText.ExceptionRequest), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n \r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExceptionRequest\", UIControlsText.ExceptionRequest), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n data: {\r\n id: \"ExceptionRequest\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExceptionRequest\", UIControlsText.ExceptionRequest),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExceptionRequest\", UIControlsText.ExceptionRequest),\r\n styles: DefaultPageStyles.oneColumnWidthStyles,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.exceptionRequest,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n } \r\n ]\r\n }\r\n },\r\n {\r\n type: 'CustomTileCardComponent',\r\n data: {\r\n id: \"CustomCardForAttachment\",\r\n baseState: internalPricingContextState,\r\n name: \"Attachment Details\",\r\n iconName: UIControlsText.AttachIcon,\r\n styles: PageStyles.multiLineTextWidth,\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForAttachments\",\r\n horizontal: true,\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: 'StackItem',\r\n visible: props?.internalPricingDealType == PageConstants.OTLEDealtype && \r\n isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProofOfPreference\", UIControlsText.ProofOfPreference), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: 'StackItemForProofofEndCustomerPreference',\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"Attachment\",\r\n data: {\r\n id: \"AttachmentListforProofEndCustomerPreference\",\r\n labelText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProofOfPreference\", UIControlsText.ProofOfPreference),\r\n source: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProofOfPreference\", UIControlsText.ProofOfPreference),\r\n attachmentList: endCustomerAttachment,\r\n handleAttachmentChanges: onEndCustomerProofAttachmentChange,\r\n required: true,\r\n pageMode: internalPricingContextState.pageMode,\r\n savedAttachments: endCustomerAttachment || savedAttachments?.filter(x => x?.source == getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProofOfPreference\", UIControlsText.ProofOfPreference)) || [],\r\n attachmentDisplayMode: AttachmentDisplayMode.Grid,\r\n opportunityDealStatusCode: internalPricingContextState.opportunityDeals[0].statusCode,\r\n disabled: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProofOfPreference\", UIControlsText.ProofOfPreference), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n allowedFileExtensions: UIControlsText.AllowedFileExtensionsForEndCustomerProof.split(','),\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: 'StackItemForAttachmentList',\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"Attachment\",\r\n data: {\r\n id: \"AttachmentList\",\r\n labelText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment),\r\n source: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment),\r\n attachmentList: attachmentList,\r\n handleAttachmentChanges: onAttachmentChange,\r\n pageMode: internalPricingContextState.pageMode,\r\n savedAttachments: attachmentList || savedAttachments?.filter(x => x?.source == getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment)) || [],\r\n attachmentDisplayMode: AttachmentDisplayMode.Grid,\r\n opportunityDealStatusCode: internalPricingContextState.opportunityDeals[0].statusCode,\r\n disabled: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n allowedFileExtensions: props?.internalPricingDealType == PageConstants.CPStrategicDealtype?.toLowerCase() ? UIControlsText.AllowedFileExtensionsForCPStrategic.split(',') : UIControlsText.AllowedFileExtensionsForOTLE.split(','),\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: \"StackForAdditionalInformation\",\r\n horizontal: true,\r\n styles: stackContainerStyles, \r\n components: [\r\n { \r\n type: 'CustomTileCardComponent',\r\n data: {\r\n id: \"CustomCardForAdditionalInformation\",\r\n baseState: internalPricingContextState,\r\n name: \"Additional Information\",\r\n iconName: UIControlsText.CaseDetailsIcon,\r\n components:[ \r\n {\r\n type: \"Stack\",\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: \"StackForAdditionalInformation\",\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForAdditionalInformation',\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: \"AdditionalInformation\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation),\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"AdditionalInformationPlaceHolderText\", UIControlsText.AdditionalInformationPlaceHolderText),\r\n onChange: onAdditionalInfoChange,\r\n styles: DefaultPageStyles.oneColumnWidthStyles,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.additionalInformation,\r\n maxLength: 100,\r\n multiline: true,\r\n rows: 3,\r\n resizable: false,\r\n disabled: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n } \r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n };\r\n\r\n const DealDetailsJsonForView : IComponent = \r\n {\r\n type: \"Stack\",\r\n data: \r\n {\r\n id: \"StackMain\",\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackTileForDeal\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"CreateCardForDeal\",\r\n baseState: internalPricingContextState,\r\n name: UIControlsText.DealDetailsText,\r\n iconName: UIControlsText.DealDetailsIcon,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'DealsDetailsContainer',\r\n vertical: true,\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForDealitems\",\r\n horizontal: true,\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: UIConfigIdentifierConstants.StackDealsNameRowId,\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealProductGroupText\",\r\n contolType: UIControlType.LabelValueView,\r\n label:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText),\r\n ariaLabel:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText),\r\n title:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealProductGroupPlaceHolderText\", UIControlsText.DealProductGroupPlaceHolderText),\r\n styles:PageStyles.textFieldStylesWidth146,\r\n value: props.productTypes?.filter(x => x.productId === internalPricingContextState.productGroup)[0]?.productName\r\n }\r\n }, \r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackItemContainerDealNameText\",\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealNameText\",\r\n contolType: UIControlType.LabelValueView,\r\n label:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText),\r\n ariaLabel:getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText),\r\n styles: PageStyles.textFieldStylesTwoColumn,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.dealName,\r\n }\r\n },\r\n ]\r\n }\r\n }, \r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: \"StackContainerForDealNameText\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForDealVerticalDropdown',\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealVerticalDropdown\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText),\r\n options: (props?.verticals && props.verticals.map((pt: IVertical) => ({ key: pt.id, text: pt.name } as IDropdownOption))) || [],\r\n styles: PageStyles.textFieldStylesWidth146,\r\n value: props?.verticals?.filter((v: IVertical) => v.id == (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.dealVertical))?.map(verticals => { return verticals?.name }),\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText), internalPricingContextState.pageMode, props?.internalPricingDealType), \r\n data: {\r\n id: 'StackItemForDealOverviewText',\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealOverviewText\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n styles: PageStyles.textFieldStylesTwoColumn,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.dealOverview,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Segments\", UIControlsText.Segments), internalPricingContextState.pageMode, props?.internalPricingDealType)\r\n && props?.internalPricingDealType == PageConstants.CPStrategicDealtype?.toLowerCase() \r\n && (segmentValue() != null && segmentValue()?.length > 0),\r\n data: {\r\n id: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Segments\", UIControlsText.Segments),\r\n styles: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Segments\", UIControlsText.Segments), internalPricingContextState.pageMode, props?.internalPricingDealType)\r\n && props?.internalPricingDealType == PageConstants.CPStrategicDealtype?.toLowerCase() ? DefaultPageStyles.DisplayNone : stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"UnorderList\",\r\n visible: (segmentValue()?.length > 0),\r\n data: {\r\n id: \"UnorderListSegmentValues\",\r\n dataList: segmentValue(),\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Segments\", UIControlsText.Segments),\r\n }\r\n }\r\n ]\r\n }\r\n }, \r\n ]\r\n }\r\n }, \r\n {\r\n type: 'Stack',\r\n data: {\r\n id: \"StackItemForDealStackability\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: 'StackItem',\r\n visible: props?.internalPricingDealType == PageConstants.CPStrategicDealtype?.toLowerCase()\r\n && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealStackability\", UIControlsText.DealStackability), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: 'StackItemForDealStackability',\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealStackability\",\r\n contolType: UIControlType.LabelValueView,\r\n styles: PageStyles.textFieldStylesFourColumn,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealStackability\", UIControlsText.DealStackability),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealStackability\", UIControlsText.DealStackability),\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].dealStackability?.toString() || UIControlsText.None,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n } \r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForCase\",\r\n horizontal: true,\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"CustomCardForCase\",\r\n baseState: internalPricingContextState,\r\n name: UIControlsText.CaseDetailsText,\r\n iconName: UIControlsText.CaseDetailsIcon,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: \"StackForCaseDetails\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: \"StackItemForDealGeoCoverageText\",\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealGeoCoverageText\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealGeoCoverageText\", UIControlsText.DealGeoCoverageText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealGeoCoverageText\", UIControlsText.DealGeoCoverageText),\r\n styles: PageStyles.textFieldStylesWidth146,\r\n value: DealGeoCoverageOptions.filter(x => x.key == Number(internalPricingContextState.isMultiNational))[0]?.text,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackItemDealOverviewId,\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: CssClassConstants.DealCountryDropdownId,\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCountryText\", UIControlsText.DealCountryText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCountryText\", UIControlsText.DealCountryText),\r\n styles: PageStyles.textFieldStylesWidth146,\r\n value: selectedCountries?.map((c: ICountry) => { return c.countryName} )?.join(\",\"), }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"SecondRowForCase\",\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: \"StackItemForEmailCCView\",\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"EmailRecipientsTextFieldView\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n styles: PageStyles.textFieldStylesTwoColumn,\r\n value: internalPricingContextState?.opportunityChannelContacts && internalPricingContextState?.opportunityChannelContacts.find(t => t.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText))?.channelContactEmails || UIControlsText.None\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackForAffiliationandClosure',\r\n horizontal: true, \r\n components: [\r\n {\r\n type: 'StackItem',\r\n visible: props?.internalPricingDealType == PageConstants.CPStrategicDealtype?.toLowerCase(),\r\n data: {\r\n id: 'StackItemForOther',\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealAffiliationTypeText\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeText\", UIControlsText.DealAffiliationTypeText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeText\", UIControlsText.DealAffiliationTypeText),\r\n styles: PageStyles.textFieldStylesWidth146,\r\n value: AffiliationTypeOptions.filter(x => x.key == (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.affiliationType))[0]?.text,\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealAffiliationTypeOtherText\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeOtherText\", UIControlsText.DealAffiliationTypeOtherText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealAffiliationTypeOtherText\", UIControlsText.DealAffiliationTypeOtherText),\r\n styles: PageStyles.textFieldStylesWidth146,\r\n value: AffiliationTypeOptions.filter(x => x.key == (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].affiliationTypeOthers))[0]?.text || UIControlsText.None,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: (internalPricingContextState.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.Draft) \r\n && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ClosureDecisionCommentsText\", UIControlsText.ClosureDecisionCommentsText), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: \"StackItemForClosureDecisionCommentsText\",\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n \r\n data: {\r\n id: \"ClosureDecisionCommentsText\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ClosureDecisionCommentsText\", UIControlsText.ClosureDecisionCommentsText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ClosureDecisionCommentsText\", UIControlsText.ClosureDecisionCommentsText),\r\n styles: PageStyles.textFieldStylesTwoColumn,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.closureDecisionComments\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n \r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForCommittedDealVolumeView\",\r\n baseState: internalPricingContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CommittedDealVolumeText\", UIControlsText.CommittedDealVolumeText),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CommittedDealVolumeIcon\", UIControlsText.CommittedDealVolumeIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackForDealVolumeTextView',\r\n styles: stackContainerStyles,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForDealVolumeText',\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealVolumeText\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVolume\", UIControlsText.DealVolume),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVolume\", UIControlsText.DealVolume),\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].dealVolume?.toString(),\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: (internalPricingContextState.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.Unassigned) ||\r\n isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealTransactedVolumeText\", UIControlsText.DealTransactedVolumeText), internalPricingContextState.pageMode, props?.internalPricingDealType),//Decision Pending Status should not be visible\r\n data: {\r\n id: \"DealTransactedVolumeText\",\r\n contolType: UIControlType.LabelValueView,\r\n styles: PageStyles.textFieldStylesTwoColumn,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealTransactedVolumeText\", UIControlsText.DealTransactedVolumeText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealTransactedVolumeText\", UIControlsText.DealTransactedVolumeText),\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].unitsTransacted?.toString() || UIControlsText.None\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackFor\",\r\n horizontal: true,\r\n styles: stackContainerStyles, \r\n components: [\r\n { \r\n type: 'CustomTileCardComponent',\r\n data: {\r\n id: \"ViewCardForExpiration\",\r\n baseState: internalPricingContextState,\r\n name: \"Expiration Details\",\r\n iconName: UIControlsText.DateCalendarIcon,\r\n components:[ \r\n {\r\n type: 'Stack',\r\n data: {\r\n id: \"StackContainerForExpiration\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: \"StackItem\",\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", UIControlsText.DealExpirationDateText), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: 'StackItemForDatePicker',\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealExpirationDateText\",\r\n contolType: UIControlType.LabelValueView,\r\n styles: PageStyles.textFieldStylesWidth146,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", UIControlsText.DealExpirationDateText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateText\", UIControlsText.DealExpirationDateText),\r\n value: internalPricingContextState.opportunityDeals[0]?.expirationDate && Moment(internalPricingContextState.opportunityDeals[0]?.expirationDate)?.format('MM/DD/YYYY'),\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: \"StackItemForDealCasesStartDateText\",\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealCasesStartDateText\",\r\n contolType: UIControlType.LabelValueView,\r\n styles: PageStyles.textFieldStylesWidth146,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCasesStartDateText\", UIControlsText.DealCasesStartDateText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCasesStartDateText\", UIControlsText.DealCasesStartDateText),\r\n value: internalPricingContextState.opportunityDeals[0]?.caseStartDate && Moment(internalPricingContextState.opportunityDeals[0]?.caseStartDate)?.format('MM/DD/YYYY'),\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: \"StackItemForDealCasesEndDateText\",\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealCasesEndDateText\",\r\n contolType: UIControlType.LabelValueView,\r\n styles: PageStyles.textFieldStylesWidth146,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCasesEndDateText\", UIControlsText.DealCasesEndDateText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealCasesEndDateText\", UIControlsText.DealCasesEndDateText),\r\n value: internalPricingContextState.opportunityDeals[0]?.caseEndDate && Moment(internalPricingContextState.opportunityDeals[0]?.caseEndDate).format('MM/DD/YYYY'),\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: props?.internalPricingDealType == PageConstants.CPStrategicDealtype?.toLowerCase() &&\r\n isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateJustificationText\", UIControlsText.DealExpirationDateJustificationText), internalPricingContextState.pageMode, props?.internalPricingDealType), \r\n data: {\r\n id: \"StackItemForDealExpirationDateJustificationText\",\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: props?.internalPricingDealType == PageConstants.CPStrategicDealtype?.toLowerCase(),\r\n data: \r\n {\r\n id: \"DealExpirationDateJustificationText\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateJustificationText\", UIControlsText.DealExpirationDateJustificationText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealExpirationDateJustificationText\", UIControlsText.DealExpirationDateJustificationText),\r\n styles: PageStyles.textFieldStylesTwoColumn,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.expirationDateJustification,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExceptionRequest\", UIControlsText.ExceptionRequest), internalPricingContextState.pageMode, props?.internalPricingDealType), \r\n data: {\r\n id: \"StackForExceptionView\",\r\n styles: stackContainerStyles, \r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForExceptionRequest',\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"ExceptionRequest\",\r\n contolType: UIControlType.LabelValueView,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExceptionRequest\", UIControlsText.ExceptionRequest),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExceptionRequest\", UIControlsText.ExceptionRequest),\r\n styles: DefaultPageStyles.oneColumnWidthStyles,\r\n value: internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0]?.exceptionRequest || UIControlsText.None,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'emptyHeight31',\r\n components: [\r\n ]\r\n },\r\n },\r\n \r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n visible: (attachmentList?.length > 0 && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment), internalPricingContextState.pageMode, props?.internalPricingDealType))\r\n || (endCustomerAttachment?.length > 0 && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProofOfPreference\", UIControlsText.ProofOfPreference), internalPricingContextState.pageMode, props?.internalPricingDealType)),\r\n data: {\r\n id: \"StackForCustomCardForAttachmentView\",\r\n styles: stackContainerStyles,\r\n components: [\r\n {\r\n type: 'CustomTileCardComponent',\r\n data: {\r\n id: \"CustomCardForAttachment\",\r\n baseState: internalPricingContextState,\r\n name: \"Attachment Details\",\r\n iconName: UIControlsText.AttachIcon,\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackforAttachmentsViewMode\",\r\n horizontal: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n visible: props?.internalPricingDealType == PageConstants.OTLEDealtype\r\n && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProofOfPreference\", UIControlsText.ProofOfPreference), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: 'StackItemForProofofEndCustomerPreferenceView',\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"Attachment\",\r\n data: {\r\n id: \"AttachmentListforProofEndCustomerPreferenceView\",\r\n labelText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProofOfPreference\", UIControlsText.ProofOfPreference),\r\n source: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProofOfPreference\", UIControlsText.ProofOfPreference),\r\n attachmentList: endCustomerAttachment,\r\n pageMode: internalPricingContextState.pageMode,\r\n savedAttachments: endCustomerAttachment || savedAttachments?.filter(x => x?.source == \"Proof of End Customer's Preference\") || [],\r\n attachmentDisplayMode: AttachmentDisplayMode.Grid,\r\n opportunityDealStatusCode: internalPricingContextState.opportunityDeals[0].statusCode,\r\n disabled: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: attachmentList.length > 0 \r\n && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment), internalPricingContextState.pageMode, props?.internalPricingDealType),\r\n data: {\r\n id: 'StackItemForAttachmentList',\r\n styles: stackItemCustomerStyles,\r\n components: [\r\n {\r\n type: \"Attachment\",\r\n data: {\r\n id: \"AttachmentList\",\r\n labelText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment),\r\n source: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText),\r\n attachmentList: attachmentList,\r\n handleAttachmentChanges: onAttachmentChange,\r\n pageMode: internalPricingContextState.pageMode,\r\n savedAttachments: attachmentList || savedAttachments?.filter(x => x?.source == getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment)) || [],\r\n attachmentDisplayMode: AttachmentDisplayMode.Grid,\r\n opportunityDealStatusCode: internalPricingContextState.opportunityDeals[0].statusCode,\r\n disabled: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachment\", UIControlsText.Attachment), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, props?.internalPricingDealType),\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }, \r\n ]\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <Stack id=\"mdppAccessibility-cardStack\" horizontal {...defaultColumnProps} styles={PageStyles.labelStyles}>\r\n <Stack>\r\n {FormRenderingService((internalPricingContextState.pageMode == PageMode.Create || internalPricingContextState.pageMode == PageMode.Edit) ? DealDetailsJsonForCreateEdit : DealDetailsJsonForView, register, internalPricingContextState)}\r\n { <><hr></hr>\r\n <Stack styles={{ root: { width: 1300, paddingRight: 30, paddingBottom: 20} }}>\r\n <Paper id=\"CardForCustomerDetails\" elevation={1} style={{border: `0px solid `, borderLeftWidth: \"4px\" }}>\r\n <Stack horizontal wrap verticalAlign='start'>\r\n <StackItem grow styles={{ root: {paddingLeft: 10} }}>\r\n <Stack id=\"ContainerForDetails\" horizontal wrap tokens={smallAlignmentTokens} >\r\n <StackItem>\r\n {cardHeaderIcon(UIControlsText.ContactIconName, \"Deal V-Team\", UIControlsText.DealVTeamMemberAddtext + 1)}\r\n </StackItem>\r\n <StackItem>\r\n <InnerHTMLContainer id=\"DetailsField\" value={\"Deal V-Team\"} contolType={UIControlType.SubHeading} styles={{verticalAlign:'center', display:\"inline-block\", fontWeight:'bold'}}>\r\n </InnerHTMLContainer>\r\n </StackItem>\r\n </Stack>\r\n <div>\r\n <Stack horizontal tokens={stackTokens} styles={stackStyles}>\r\n {isDealteamSectionVisible() && (\r\n <div>\r\n {dealContact.length > 0 && (\r\n <Stack className={_Styles.LegalEntityLabel} horizontal {...defaultColumnProps}>\r\n <Col>\r\n <Label>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactAliasText\", UIControlsText.DealContactAliasText)}\r\n </Label>\r\n </Col>\r\n <Col>\r\n <Label styles={DefaultPageStyles.customWidthForDealTeamLabels}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactName\", UIControlsText.DealContactName)}\r\n </Label>\r\n </Col>\r\n <Col>\r\n <Label>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactRoleText\", UIControlsText.DealContactRoleText)}\r\n </Label>\r\n </Col>\r\n {otherContactIndex !== -1 &&\r\n <Col>\r\n <Label styles={DefaultPageStyles.customWidth40Styles}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOtherRoleText\", UIControlsText.DealOtherRoleText)}\r\n </Label>\r\n </Col>}\r\n <Col>\r\n <Label styles={DefaultPageStyles.customWidth40Styles}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactCoOwner\", UIControlsText.DealContactCoOwner)}\r\n </Label>\r\n </Col>\r\n </Stack>\r\n )\r\n }\r\n <Stack className={_Styles.LegalEntityLabel} {...defaultColumnProps}>\r\n {dealContact.map((k, i) => (\r\n <div key={k.id} style={{ margin: 0 }}>\r\n <DealContact\r\n {...{\r\n id: k.id,\r\n dealContact: k,\r\n contactRoles,\r\n removeDealContact,\r\n updateDealContact,\r\n otherRoleStyle: otherLabelStyle,\r\n pageMode: internalPricingContextState.pageMode,\r\n opportunityDealStatusCode: internalPricingContextState.opportunityDeals[0].statusCode,\r\n }}\r\n />\r\n </div>\r\n ))}\r\n </Stack>\r\n {isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVTeamMemberAddtext\", UIControlsText.DealVTeamMemberAddtext), internalPricingContextState.pageMode, props?.internalPricingDealType) &&\r\n <Stack>\r\n <ActionButton name={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVTeamMemberAddtext\", UIControlsText.DealVTeamMemberAddtext)}\r\n className={CssClassConstants.AddItemButtonClass}\r\n iconProps={{ iconName: CssClassConstants.AddItemIconName }}\r\n style={PageStyles.addItemButtonStyles}\r\n disabled={isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVTeamMemberAddtext\", UIControlsText.DealVTeamMemberAddtext), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0].statusCode, undefined, undefined, props?.internalPricingDealType)}\r\n onClick={() => {\r\n setDealContact([\r\n ...dealContact,\r\n { id: Guid.newGuid() },\r\n ]);\r\n }}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVTeamMemberAddtext\", UIControlsText.DealVTeamMemberAddtext)}\r\n </ActionButton>\r\n </Stack>\r\n }\r\n {internalPricingContextState?.pageMode == PageMode.View && dealContact?.length == 0 &&\r\n <Stack styles={{ root: { paddingBottom: 20} }}>\r\n <MessageBar messageBarType={MessageBarType.info}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"NoDealVTeamMessage\", GuidanceText.NoDealVTeamMessage)}\r\n </MessageBar>\r\n </Stack>\r\n }\r\n </div>\r\n )}\r\n </Stack>\r\n </div>\r\n </StackItem>\r\n </Stack>\r\n </Paper>\r\n </Stack>\r\n </>\r\n }\r\n { isMicrosoftContactSectionVisible() && (<><hr></hr>\r\n <Stack styles={{ root: { width: 1300, paddingRight: 30, paddingBottom: 20} }}>\r\n <Paper id=\"CardForCustomerDetails\" elevation={1} style={{border: `0px solid `, borderLeftWidth: \"4px\" }}>\r\n <Stack horizontal wrap verticalAlign='start'>\r\n <StackItem grow styles={{ root: {paddingLeft: 10} }}>\r\n <Stack id=\"ContainerForDetails\" horizontal wrap tokens={smallAlignmentTokens} >\r\n <StackItem>\r\n {cardHeaderIcon(UIControlsText.ContactIconName, \"Microsoft Contact\")}\r\n </StackItem>\r\n <StackItem>\r\n <InnerHTMLContainer id=\"DetailsField\" value={\"Microsoft Contact\"} contolType={UIControlType.SubHeading} styles={{verticalAlign:'center', display:\"inline-block\", fontWeight:'bold'}}>\r\n </InnerHTMLContainer>\r\n </StackItem>\r\n </Stack>\r\n <div>\r\n <Stack horizontal tokens={stackTokens} styles={stackStyles}>\r\n {\r\n <div>\r\n {\r\n <Stack className={_Styles.LegalEntityLabel} horizontal {...defaultColumnProps}>\r\n <Col>\r\n <Label>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactAliasText\", UIControlsText.DealContactAliasText)}\r\n </Label>\r\n </Col>\r\n <Col>\r\n <Label styles={DefaultPageStyles.customWidthForDealTeamLabels}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealContactName\", UIControlsText.DealContactName)}\r\n </Label>\r\n </Col>\r\n <Col>\r\n <Label></Label>\r\n </Col>\r\n <Col>\r\n <Label styles={DefaultPageStyles.customWidth40Styles}></Label>\r\n </Col>\r\n </Stack>\r\n }\r\n <Stack className={_Styles.LegalEntityLabel} {...defaultColumnProps}>\r\n <DealContact\r\n {...{\r\n dealContact: \r\n {\r\n email: internalPricingContextState?.submitterDetails?.email || \"\",\r\n firstName: internalPricingContextState?.submitterDetails?.firstName || \"\",\r\n lastName: internalPricingContextState?.submitterDetails?.lastName || \"\",\r\n },\r\n otherRoleStyle: DefaultPageStyles.noColumnMinWidthStyles,\r\n pageMode: internalPricingContextState.pageMode,\r\n isMicrosoftContact: true\r\n }}\r\n />\r\n </Stack>\r\n </div>\r\n }\r\n </Stack>\r\n </div>\r\n </StackItem>\r\n </Stack>\r\n </Paper>\r\n </Stack>\r\n </>\r\n )}\r\n </Stack>\r\n </Stack>\r\n </>\r\n );\r\n}\r\n\r\nexport default InternalPricingDealOverview;","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { IStackTokens, Label, Panel, PanelType, Stack, TextField } from \"office-ui-fabric-react\";\r\nimport { IEntityLookupProps } from \"../../../../components/shared/props/IEntityLookupProps\";\r\nimport { useBoolean } from '@fluentui/react-hooks';\r\nimport { UIControlsText } from \"../../../../content/UIControlsText\";\r\nimport NextGenKendoGrid from \"../../../../components/shared/grid/nextgenkendogrid\";\r\nimport { IGridProps } from \"../../../../components/shared/grid/IGridProps\";\r\nimport { isEditableAccount, readGridConfig } from \"../../../../components/shared/common/util\";\r\nimport { GridType } from \"../../../../models/GridType\";\r\nimport { getter } from \"@progress/kendo-data-query\";\r\nimport { sortArray, getRuleValidationMessage, getEntityDataFromSession } from \"../../../../components/shared/common/util\";\r\nimport { IEntityLookupColumnConfig } from \"../../../../models/IEntityLookupColumnConfig\";\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { MdppAccessibilityPanelGrid, useToFixAriaRowIndexNan } from \"../../../../hooks/accessiblity-hooks\";\r\n\r\nconst stackTokens: Partial<IStackTokens> = { childrenGap: 20 };\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nexport const EntityLookup: React.FunctionComponent<IEntityLookupProps> = (props: IEntityLookupProps) => {\r\n const [showPanel, { setTrue: openPanel, setFalse: dismissPanel }] = useBoolean(false);\r\n const [accountsListConfig, setAccountsListConfig] = useState<IGridProps>(readGridConfig(GridType.AccountsList));\r\n const idGetter = getter(accountsListConfig.kendoGridProps.dataItemKey);\r\n\r\n const onRowSelectionCallBack = (selectedState: any) => {\r\n const selectedItems: any = [];\r\n const accountGridDatawithSelection = accountsListConfig.kendoGridProps.data.map((item: any) => (\r\n {\r\n ...item, [accountsListConfig.kendoGridProps.selectedField]:\r\n isEditableAccount(props.countryId, props.PageMode, props.statusCode, { ...item, accountId: item.key }, props.partnerType) ? true : selectedState[idGetter(item)],\r\n }));\r\n accountGridDatawithSelection.map((item: any) => {\r\n if (item.selected === true) {\r\n selectedItems.push(Object.assign(item));\r\n }\r\n });\r\n defaultStateUpdate(selectedItems);\r\n reOrderSelectedItems(accountGridDatawithSelection);\r\n };\r\n\r\n const reOrderSelectedItems = (gridSelectedItems: any) => {\r\n let selectedAccountListConfig = { ...accountsListConfig };\r\n const selectedValues = gridSelectedItems.filter((item: any) => item.selected);\r\n const nonSelectedValues = gridSelectedItems.filter((item: any) => !item.selected);\r\n const modifiedData = selectedValues.concat(nonSelectedValues);\r\n if (props?.itemSelectionUpdate) {\r\n props?.itemSelectionUpdate(selectedValues);\r\n }\r\n selectedAccountListConfig = {\r\n kendoGridProps: {\r\n ...selectedAccountListConfig.kendoGridProps,\r\n data: modifiedData,\r\n }\r\n };\r\n const listUpdated = { ...selectedAccountListConfig };\r\n setAccountsListConfig(listUpdated)\r\n return listUpdated;\r\n }\r\n\r\n //Function to call to set the selected values\r\n const setSelectedItems = () => {\r\n const keysSelected = props.selectedItems.map((item: any) => item.key);\r\n const columns = accountsListConfig.kendoGridProps.data;\r\n const sortedData = columns?.length ? columns.map((val: any) => {\r\n const selected = keysSelected.includes(val.key) ? true : undefined;\r\n const item = props.selectedItems.filter((item: any) => item.key === val.key)\r\n var iseditMode = val.editMode;\r\n if (item.length > 0) {\r\n iseditMode = item[0].editMode\r\n }\r\n return {\r\n ...val,\r\n selected,\r\n editMode: iseditMode\r\n };\r\n }) : [];\r\n let list = reOrderSelectedItems(sortedData);\r\n const updatedConfig = defaultStateUpdate(props.selectedItems);\r\n list.kendoGridProps.defaultMainGridSelectionstate = updatedConfig;\r\n return list;\r\n }\r\n\r\n const defaultStateUpdate = (selectedValues: any) => {\r\n const state: any = {};\r\n selectedValues.forEach((item: any) => { state[idGetter(item)] = true });\r\n return accountsListConfig.kendoGridProps.defaultMainGridSelectionstate = state;\r\n }\r\n\r\n const updateColumnConfig = () => {\r\n let selectedAccountListConfig = { ...accountsListConfig };\r\n //add selected property\r\n const modifiedData = props?.items.map((val: any) => {\r\n return {\r\n ...val,\r\n selected: val.selected || undefined,\r\n };\r\n });\r\n const sortedData: any = sortArray(modifiedData);\r\n selectedAccountListConfig.kendoGridProps.data = sortedData;\r\n //setMultiple columns -- displayOrder is the unique Key \r\n let updatedResellerColumns: any = [];\r\n const columns: IEntityLookupColumnConfig[] = props.columnProps || [];\r\n selectedAccountListConfig.kendoGridProps.columns.map((item: any, i) => {\r\n const selectedIndex: any = columns.findIndex(x => x.displayOrder === item.displayOrder);\r\n const obj = {\r\n ...item,\r\n ...columns[selectedIndex],\r\n };\r\n updatedResellerColumns = [...updatedResellerColumns, obj];\r\n return updatedResellerColumns;\r\n });\r\n selectedAccountListConfig.kendoGridProps.columns = updatedResellerColumns;\r\n selectedAccountListConfig.kendoGridProps.totalRecords = props.items.length;\r\n setAccountsListConfig(selectedAccountListConfig)\r\n }\r\n\r\n //To enable interaction with the popup - Click on close button will dismiss the panel\r\n const onDismiss = React.useCallback(\r\n (ev?: React.SyntheticEvent<HTMLElement>) => {\r\n if (!ev) return;\r\n // eslint-disable-next-line\r\n const srcElement = ev.nativeEvent.srcElement as Element | null;\r\n if ((srcElement && srcElement.className.indexOf('ms-Button-flexContainer') !== -1)\r\n || (srcElement && srcElement.className.indexOf('ms-Button-icon') !== -1)) {\r\n dismissPanel();\r\n } else return;\r\n },\r\n [dismissPanel],\r\n );\r\n\r\n\r\n useEffect(() => {\r\n //Fixing Accessibility issue for PanelGrid checkbox\r\n var gridCheckbox = document.getElementsByClassName(\".k-checkbox\");\r\n for (let i = 0; i < gridCheckbox.length; i++) {\r\n gridCheckbox[i].setAttribute('aria-label', 'checkbox');\r\n }\r\n\r\n //Fixing Accessibility issue for PanelGrid FilterOption\r\n var gridFilter = document.querySelectorAll(\"#EntityLookupPanel .k-dropdown-wrap .k-input\");\r\n for (let i = 0; i < gridFilter.length; i++) {\r\n gridFilter[i].setAttribute('role', 'option');\r\n gridFilter[i].setAttribute('title', 'option');\r\n }\r\n\r\n //Fixing Accessibility issue for Panel grid filterTextbox\r\n const filterTextFieldColumns = accountsListConfig.kendoGridProps.columns.filter(item => item.allowFilter && !item.categoryFilterCell && item.isVisible === true);\r\n var filterTextbox = document.querySelectorAll(\"#EntityLookupPanel .k-filtercell .k-filtercell-wrapper > .k-textbox\");\r\n filterTextbox && filterTextbox.forEach(c => {\r\n for (let i = 0; i < filterTextbox.length; i++) {\r\n if (filterTextFieldColumns[i]) {\r\n filterTextbox[i].setAttribute('aria-label', `${ filterTextFieldColumns[i].columnTitle }`);\r\n }\r\n }\r\n });\r\n });\r\n\r\n return (\r\n <Stack tokens={stackTokens}>\r\n <TextField\r\n placeholder={props.lookUpTextFieldProps.placeholder}\r\n title={props.lookUpTextFieldProps.title}\r\n required={props.lookUpTextFieldProps.required}\r\n disabled={props.lookUpTextFieldProps.disabled}\r\n onClick={openPanel}\r\n value={props.lookUpTextFieldProps.value}\r\n style={props.lookUpTextFieldProps.style}\r\n />\r\n <Panel\r\n id=\"EntityLookupPanel\"\r\n isOpen={showPanel}\r\n type={PanelType.custom}\r\n customWidth='610px'\r\n onDismiss={onDismiss}\r\n closeButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n onOpen={() => {\r\n updateColumnConfig();\r\n if (props.selectedItems && props.selectedItems.length > 0) {\r\n const updatedItems = setSelectedItems();\r\n setAccountsListConfig(updatedItems);\r\n }\r\n }}\r\n headerText={props.headerText}>\r\n {props.subHeaderText &&\r\n <Label><div>{props.subHeaderText}</div></Label>\r\n }\r\n {props.isCountrySelected ?\r\n <MdppAccessibilityPanelGrid\r\n {...{\r\n kendoGridProps: { ...accountsListConfig.kendoGridProps },\r\n onRowSelectionCallBack,\r\n showFilterTextBox: true,\r\n disableSelectAllCheckbox: props.disableSelectAllSelection,\r\n dropDownFilterContent: Array.from(new Set(props.items.map((p: any) => p.data ? p.data : ''))),\r\n }}\r\n /> : <div>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"NoCountrySelectedPlaceHolderText\", UIControlsText.NoCountrySelectedPlaceHolderText)}</div>\r\n }\r\n </Panel>\r\n </Stack >\r\n );\r\n};","import { ActionButton, Checkbox, Dropdown, IDropdownOption, Stack } from \"@fluentui/react\";\r\nimport { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { CommonStyles, defaultColumnProps, DefaultPageStyles, DeleteButtonIconStyles } from \"../../content/styles/Page.styles\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { PartnerType } from \"../../models/PartnerType\";\r\nimport { IAccount } from \"../../models/IAccount\";\r\nimport { ICountry } from \"../../models/ICountry\";\r\nimport { IOpportunityAccount } from \"../../models/IOpportunityAccount\";\r\nimport { AccountTypeOptions, partnerTypeValues } from \"../../services/StaticData\";\r\nimport { ActionType } from \"../../models/ActionType\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { AccountAllType } from \"../../models/AccountAllType\";\r\nimport { CssClassConstants } from \"../../content/CssClassConstants\";\r\nimport { IAccountBaseProps } from \"./props/IAccountBaseProps\";\r\nimport { EntityLookup } from \"../../pages/pricingprogram/common/components/EntityLookup\";\r\nimport { IProductType } from \"../../models/IProductType\";\r\nimport { getAction, getParentAccountAction, getPartnerAction, isEditableAccount, isEditableAccountById, isFieldDisabled, isMSStoreDisable, gridAccessibilityFix } from \"./common/util\";\r\nimport { isRoleBasedFilterRequired } from \"./common/util\";\r\nimport { PageMode } from \"../../models/PageMode\";\r\nimport _ from \"lodash\";\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { IEntityLookupColumnConfig } from \"../../models/IEntityLookupColumnConfig\";\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"./common/util\";\r\nimport { MessageTypeText } from \"../../models/MessageTypeText\";\r\nimport { PageConstants } from \"../../pages/pageconstants/Constants\";\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n/**\r\n * Reseller component.\r\n * @function component\r\n */\r\nconst Reseller: React.FunctionComponent<IAccountBaseProps> = (props?: IAccountBaseProps) => {\r\n const [customerCountry, setCustomerCountry] = useState<ICountry | undefined>(props?.customerCountry);\r\n const [resellerType, setResellerType] = useState<PartnerType>(props?.partnerType || PartnerType.ADR);\r\n const [selectedResellers, setSelectedResellers] = useState<Array<IAccount>>(\r\n props?.opportunityAccounts?.find(opp => opp.partnerType === resellerType)?.accounts\r\n || []);\r\n const [countries] = useState<ICountry[]>(props?.countries || []);\r\n //always single object\r\n const [productType] = useState<IProductType[]>(props?.productType || []);\r\n\r\n /**\r\n * Get TDistributor name from session storage.\r\n * @method\r\n * @@returns {IAccount[]} List of Distributor Accounts.\r\n */\r\n const getDistributorAccounts = (): IAccount[] => {\r\n var allDistributors = sessionStorage.getItem(SessionStorageConsts.distributors);\r\n if (allDistributors !== null) {\r\n return JSON.parse(allDistributors);\r\n }\r\n\r\n return [];\r\n };\r\n\r\n const userRole = sessionStorage.getItem(SessionStorageConsts.userRole);\r\n const resellers = useRef<IAccount[]>([]);\r\n if (props?.resellerAccounts && props?.resellerAccounts.length > 0) {\r\n if (props.pageMode?.toLowerCase() === PageMode.View.toLowerCase() && isRoleBasedFilterRequired(userRole || '')) {\r\n resellers.current = props?.resellerAccounts.filter(resellerAccount => selectedResellers.find(({ accountId }) => resellerAccount.accountId === accountId));\r\n }\r\n else {\r\n resellers.current = props?.resellerAccounts;\r\n }\r\n }\r\n\r\n if (resellers.current && resellers.current.length > 0) {\r\n if (customerCountry) {\r\n if (customerCountry.isEUEFTA) {\r\n resellers.current = resellers.current.filter((x: IAccount) => x.countryId === customerCountry.countryId\r\n || x.isEueftaAccount);\r\n }\r\n else {\r\n resellers.current = resellers.current.filter((x: IAccount) => x.applicablePriceListGeo === customerCountry.applicablePriceListGeo);\r\n }\r\n }\r\n\r\n if (resellerType) {\r\n resellers.current = resellers.current.filter((x: IAccount) => x.partnerType === resellerType);\r\n }\r\n }\r\n\r\n //Fixing Accessibility for noRecords, sortIcons, GridPagerBtns & gridFootercell\r\n useEffect(() => {\r\n gridAccessibilityFix();\r\n });\r\n\r\n useEffect(() => {\r\n\r\n if (resellerType === PartnerType.MsStore) {\r\n let msStoreAccount: IOpportunityAccount = { id: props && props.id, partnerType: PartnerType.MsStore, };\r\n msStoreAccount = {\r\n id: props && props.id,\r\n countryId: customerCountry?.countryId,\r\n partnerType: PartnerType.MsStore,\r\n isAllSelected: AccountAllType.None,\r\n isComplete: true,\r\n action: getParentAccountAction(customerCountry?.countryId, PartnerType.MsStore)\r\n };\r\n props && props.updateAccounts && props.updateAccounts([msStoreAccount, {}], ActionType.Update);\r\n return;\r\n }\r\n\r\n let resellerSelectionComplete: boolean = false;\r\n if (customerCountry && selectedResellers.length > 0) {\r\n resellerSelectionComplete = true;\r\n }\r\n\r\n let resellerSelection: IOpportunityAccount = {\r\n id: props && props.id,\r\n partnerType: resellerType,\r\n countryId: customerCountry?.countryId,\r\n accounts: selectedResellers,\r\n isAllSelected: AccountAllType.None,\r\n isComplete: resellerSelectionComplete,\r\n };\r\n\r\n if (customerCountry && resellerType === PartnerType.DMP && selectedResellers.length > 0 && props?.partnerAccounts) {\r\n\r\n let existingDMPs = Object.entries(props?.opportunityAccounts?.find(opp => opp.partnerType === resellerType)?.availableRelatedAccounts || []).map(x => x[0]);\r\n let newDMPs = selectedResellers.filter(x => !existingDMPs.includes(x.accountId)).map(x => x.accountId);\r\n if (newDMPs.length > 0) {\r\n let newRelatedAccounts = GetNewRelatedAccountsCopy();\r\n\r\n resellerSelection = {\r\n id: props && props.id,\r\n partnerType: resellerType,\r\n countryId: customerCountry?.countryId,\r\n accounts: selectedResellers,\r\n isAllSelected: AccountAllType.None,\r\n isComplete: resellerSelectionComplete,\r\n availableRelatedAccounts: props?.opportunityAccounts?.find(opp => opp.partnerType === resellerType)?.availableRelatedAccounts || GetNewRelatedAccountsCopy(),\r\n partnerAccounts: props?.opportunityAccounts?.find(opp => opp.partnerType === resellerType)?.partnerAccounts || GetNewRelatedAccountsCopy()\r\n };\r\n\r\n selectedResellers.forEach((reseller) => {\r\n if (resellerSelection.availableRelatedAccounts && (!resellerSelection.availableRelatedAccounts[reseller.accountId] || (resellerSelection.availableRelatedAccounts[reseller.accountId] && resellerSelection.availableRelatedAccounts[reseller.accountId].length === 0))) {\r\n if (newRelatedAccounts[reseller.accountId] && newRelatedAccounts[reseller.accountId].length === 0) {\r\n resellerSelection.availableRelatedAccounts[reseller.accountId] = [];\r\n }\r\n }\r\n\r\n if (resellerSelection.partnerAccounts && (!resellerSelection.partnerAccounts[reseller.accountId] || (resellerSelection.partnerAccounts[reseller.accountId] && resellerSelection.partnerAccounts[reseller.accountId].length === 0))) {\r\n resellerSelection.partnerAccounts[reseller.accountId] = [];\r\n }\r\n })\r\n\r\n if (resellerSelection?.partnerAccounts) {\r\n for (const [key, value] of Object.entries(resellerSelection?.partnerAccounts)) {\r\n resellerSelection!.partnerAccounts[key] = value.map(p => { return { ...p, action: getPartnerAction(p, resellerSelection.countryId, PartnerType.DMP, key) } });\r\n }\r\n }\r\n\r\n props && props.updateAccounts && props.updateAccounts([resellerSelection, {}], ActionType.Update);\r\n }\r\n else {\r\n let removedAvailableAccounts = Object.entries(props?.opportunityAccounts?.find(opp => opp.partnerType === resellerType)?.availableRelatedAccounts || []).filter(x => !selectedResellers.map(res => res.accountId).includes(x[0])).map(x => x[0]);\r\n let removedPartnerAccounts = Object.entries(props?.opportunityAccounts?.find(opp => opp.partnerType === resellerType)?.partnerAccounts || []).filter(x => !selectedResellers.map(res => res.accountId).includes(x[0])).map(x => x[0]);\r\n let updatedAvailableAccounts = props?.opportunityAccounts?.find(opp => opp.partnerType === resellerType)?.availableRelatedAccounts;\r\n let updatedPartnerAccounts = props?.opportunityAccounts?.find(opp => opp.partnerType === resellerType)?.partnerAccounts;\r\n if (updatedAvailableAccounts && updatedPartnerAccounts && removedAvailableAccounts.length > 0) {\r\n delete updatedAvailableAccounts[removedAvailableAccounts[0]];\r\n delete updatedPartnerAccounts[removedPartnerAccounts[0]];\r\n }\r\n resellerSelection.availableRelatedAccounts = updatedAvailableAccounts;\r\n resellerSelection.partnerAccounts = updatedPartnerAccounts;\r\n props && props.updateAccounts && props.updateAccounts([resellerSelection, {}], ActionType.Update);\r\n }\r\n }\r\n else {\r\n resellerSelection = {\r\n id: props && props.id,\r\n partnerType: resellerType,\r\n countryId: customerCountry?.countryId,\r\n accounts: selectedResellers,\r\n isAllSelected: AccountAllType.None,\r\n isComplete: resellerSelectionComplete\r\n };\r\n props && props.updateAccounts && props.updateAccounts([resellerSelection], ActionType.Update);\r\n }\r\n\r\n function GetNewRelatedAccountsCopy(): { [key: string]: IAccount[]; } {\r\n let accounts: { [key: string]: IAccount[]; } = {};\r\n if (props?.partnerAccounts) {\r\n // accounts = props.partnerAccounts;\r\n\r\n const resellerIDs = selectedResellers.map(x => x.accountId);\r\n for (var i in props.partnerAccounts) {\r\n if (resellerIDs.includes(i)) {\r\n accounts[i] = props.partnerAccounts[i];\r\n }\r\n }\r\n }\r\n return accounts;\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [resellerType, customerCountry, selectedResellers, props?.partnerAccounts]);\r\n\r\n /**\r\n * PartnerType Options change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {IDropdownOption} item Clicked Option from Dropdown.\r\n */\r\n const onAccountTypeOptionsChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n setSelectedResellers([]);\r\n setResellerType(item.key as PartnerType);\r\n }\r\n }\r\n\r\n /**\r\n * Reseller Country Options change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {IDropdownOption} item Clicked Option from Dropdown.\r\n */\r\n const onResellerCountryOptionsChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n let selectedCountry = countries.find(x => x.countryId === item.key as string);\r\n setCustomerCountry(selectedCountry);\r\n setSelectedResellers([]);\r\n }\r\n }\r\n\r\n /**\r\n * Reseller Country Options change Callback function.\r\n * @method\r\n * @param SelectedOptions Clicked Option from Dropdown.\r\n */\r\n const onResellerChange = (selectedItems: any[]): void => {\r\n if (selectedItems) {\r\n const updatedValues = resellers.current.map(item => {\r\n return {\r\n ...item,\r\n key: `${item.accountId}-${item.partnerType}`,\r\n };\r\n });\r\n const modifiedResellers = {\r\n current: updatedValues,\r\n };\r\n let updatedResellers: IAccount[] = [];\r\n selectedItems.forEach(x => {\r\n let reseller: any;\r\n reseller = modifiedResellers.current?.find(y => y.key === x.key);\r\n if (reseller) {\r\n reseller = _.omit(reseller, 'key');\r\n reseller.action = getAction(reseller, customerCountry?.countryId, reseller.partnerType);\r\n updatedResellers.push(reseller);\r\n }\r\n });\r\n setSelectedResellers(updatedResellers);\r\n }\r\n }\r\n\r\n const columnDefinitions: IEntityLookupColumnConfig[] = [\r\n {\r\n apiField: 'name',\r\n key: 'name',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText),\r\n displayOrder: 2\r\n }, {\r\n apiField: 'country',\r\n key: 'country',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CountryFacetText\", UIControlsText.CountryFacetText),\r\n displayOrder: 3,\r\n }, {\r\n apiField: 'organizationId',\r\n key: 'organizationId',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MpnIdText\", UIControlsText.MpnIdText),\r\n displayOrder: 4\r\n }]\r\n return (\r\n <Stack horizontal {...defaultColumnProps} id={props?.id}>\r\n <Dropdown\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ResellerCountryPlaceholderText\", UIControlsText.ResellerCountryPlaceholderText)}\r\n options={countries.map((pt: ICountry) => ({ key: pt.countryId, text: pt.countryName } as IDropdownOption))}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ResellerCountryPlaceholderText\", UIControlsText.ResellerCountryPlaceholderText)}\r\n selectedKey={customerCountry?.countryId}\r\n disabled={JavaScriptExtensions.isDefined(props?.customerCountry)}\r\n onChange={onResellerCountryOptionsChange}\r\n styles={DefaultPageStyles.customWidthStyles}\r\n style={JavaScriptExtensions.isDefined(props?.customerCountry) ? CommonStyles.blackBorder : {}}\r\n required />\r\n <Dropdown\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"PartnerTypePlaceHolderText\", UIControlsText.PartnerTypePlaceHolderText)}\r\n options={customerCountry?.isMsStore ? AccountTypeOptions.filter(x => x.key !== PartnerType.ADD) : AccountTypeOptions.filter(x => x.key !== PartnerType.MsStore && x.key !== PartnerType.ADD)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"PartnerTypePlaceHolderText\", UIControlsText.PartnerTypePlaceHolderText)}\r\n defaultSelectedKey={props?.partnerType}\r\n onChange={onAccountTypeOptionsChange}\r\n styles={DefaultPageStyles.customWidthStyles}\r\n disabled={isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerRegistration\", UIControlsText.ResellerRegistration), props?.pageMode, props?.opportunityDealStatusCode, undefined, undefined, PageConstants.CPStrategicDealtype) || !isEditableAccountById(props?.id)}\r\n required />\r\n {resellerType !== PartnerType.MsStore &&\r\n <label>\r\n <EntityLookup\r\n headerText={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerLookupText\", getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerLookupText\", UIControlsText.ResellerLookupText))}\r\n subHeaderText={`${productType && productType[0]?.productName} - ${props?.customerCountry?.countryName}`}\r\n items={(resellers.current && resellers.current.map((pt: IAccount) => ({\r\n key: `${pt.accountId}-${pt.partnerType}`, accountId: pt.accountId, name: pt.companyName, data: partnerTypeValues[`${pt.partnerType}`], partnerType: pt.partnerType, country: pt.countryName, organizationId: pt.organizationId,\r\n editMode: props?.pageMode?.toLowerCase() === PageMode.View.toLowerCase()\r\n }))) || []}\r\n lookUpTextFieldProps={{\r\n label: props?.customerCountry?.countryName,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ResellerNamePlaceholderText\", UIControlsText.ResellerNamePlaceholderText),\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ResellerNamePlaceholderText\", UIControlsText.ResellerNamePlaceholderText),\r\n style: CommonStyles.entityLookupWidth,\r\n disabled: props?.disableResellerAndMSStoreField,\r\n value: (selectedResellers && selectedResellers.length) ?\r\n selectedResellers.length > 1 ? selectedResellers.length + ' Resellers Selected'\r\n : selectedResellers.length + ' Reseller Selected'\r\n : ''\r\n }}\r\n isCountrySelected={!customerCountry ? false : true}\r\n columnProps={columnDefinitions}\r\n itemSelectionUpdate={onResellerChange}\r\n selectedItems={selectedResellers && selectedResellers.map(x => ({\r\n key: `${x.accountId}-${x.partnerType}`, accountId: x.accountId, name: x.companyName, data: partnerTypeValues[`${x.partnerType}`], partnerType: x.partnerType, country: x.country,\r\n editMode: isEditableAccount(customerCountry?.countryId, props?.pageMode, props?.opportunityDealStatusCode, x, x.partnerType)\r\n } as any))}\r\n disableSelectAllSelection={props?.pageMode?.toLowerCase() === PageMode.View.toLowerCase()}\r\n countryId={customerCountry?.countryId}\r\n PageMode={props?.pageMode}\r\n partnerType={resellerType}\r\n statusCode={props?.opportunityDealStatusCode}\r\n />\r\n </label>\r\n }\r\n {props?.hideDeleteIcon && props.pageMode?.toLowerCase() !== PageMode.View.toLowerCase() && isEditableAccountById(props?.id) &&\r\n <ActionButton\r\n iconProps={{ iconName: CssClassConstants.DeleteIconName, ariaLabel: CssClassConstants.DeleteIconName, styles: DeleteButtonIconStyles }}\r\n disabled={!props?.hideDeleteIcon}\r\n style={resellerType === PartnerType.MsStore ? CommonStyles.DeleteIconMargin : {}}\r\n id={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeleteChannelAccount\", UIControlsText.DeleteChannelAccount)}\r\n onClick={() => {\r\n props?.updateAccounts && props?.updateAccounts([{ id: props?.id, partnerType: resellerType }], ActionType.Delete);\r\n }}>\r\n </ActionButton>\r\n }\r\n </Stack>\r\n );\r\n}\r\n\r\nexport default Reseller;","import { Checkbox, ChoiceGroup, Dropdown, IChoiceGroupOption, IDropdownOption, Link, mergeStyles, PanelType, Stack } from \"office-ui-fabric-react\";\r\nimport { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { CssClassConstants } from \"../../../../content/CssClassConstants\";\r\nimport { CommonStyles, defaultColumnProps, DefaultPageStyles } from \"../../../../content/styles/Page.styles\";\r\nimport { UIControlsText } from \"../../../../content/UIControlsText\";\r\nimport { JavaScriptExtensions } from \"../../../../infrastructure/JavaScriptExtensions\";\r\nimport { AccountAllType } from \"../../../../models/AccountAllType\";\r\nimport { ActionType } from \"../../../../models/ActionType\";\r\nimport { IAccount } from \"../../../../models/IAccount\";\r\nimport { ICountry } from \"../../../../models/ICountry\";\r\nimport { IOpportunityAccount } from \"../../../../models/IOpportunityAccount\";\r\nimport { PartnerType } from \"../../../../models/PartnerType\";\r\nimport { IAccountBaseProps } from \"../../../../components/shared/props/IAccountBaseProps\";\r\nimport { EntityLookup } from \"../../common/components/EntityLookup\";\r\nimport { IProductType } from \"../../../../models/IProductType\";\r\nimport { getAction, getParentAccountAction, hideResellerSectionsInViewModeForReseller, isEditableAccount, isFieldVisible, getRuleValidationMessage, getEntityDataFromSession } from \"../../../../components/shared/common/util\";\r\nimport { getURLParamValue, isMSStoreDisable } from \"../../../../components/shared/common/util\";\r\nimport { isRoleBasedFilterRequired } from \"../../../../components/shared/common/util\";\r\nimport { useInternalPricingContext } from '../context/internalpricing-context';\r\nimport { PageMode } from \"../../../../models/PageMode\";\r\nimport { useHistory } from \"react-router\";\r\nimport { ApplicationConstants } from \"../../../../models/ApplicationConstants\";\r\nimport { Guid } from \"../../../../infrastructure/Guid\";\r\nimport _ from \"lodash\";\r\nimport { SessionStorageConsts } from \"../../../../models/SessionStorageConsts\";\r\nimport { UserSubRole } from \"../../../../models/UserSubRole\";\r\nimport { partnerTypeValues } from \"../../../../services/StaticData\";\r\nimport { IEntityLookupColumnConfig } from \"../../../../models/IEntityLookupColumnConfig\";\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { PageConstants } from \"../../../pageconstants/Constants\";\r\nimport { OpportunityDealStatusCodes } from \"../../../../models/OpportunityDealStatusCodes\";\r\n/**\r\n * Channel Accounts component.\r\n * @function component\r\n */\r\nconst ChannelAccounts: React.FunctionComponent<IAccountBaseProps> = (props: IAccountBaseProps) => {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n let history = useHistory();\r\n const { internalPricingContextState } = useInternalPricingContext();\r\n const [allResellerSelected, setallResellerSelected] = useState<boolean>(false)\r\n const [allResellerEUSelected, setallResellerEUSelected] = useState<boolean>(false)\r\n const [customerCountry] = useState<ICountry | undefined>(props?.customerCountry);\r\n const [selectedResellers, setSelectedResellers] = useState<Array<IAccount>>(\r\n props?.opportunityAccounts?.find(opp => (opp.partnerType === PartnerType.Reseller || opp.partnerType === PartnerType.ADR || opp.partnerType === PartnerType.DMP) && opp.isAllSelected == AccountAllType.None)?.accounts\r\n || []);\r\n const [selectedDistributors, setSelectedDistributors] = useState<Array<IAccount>>(\r\n props?.opportunityAccounts?.find(opp => opp.partnerType === PartnerType.ADD && opp.isAllSelected == AccountAllType.None)?.accounts\r\n || []);\r\n const [distributorOption, setDistributorOption] = useState<string>(\r\n (props?.opportunityAccounts?.find(opp => opp.partnerType === PartnerType.ADD) && props?.opportunityAccounts?.find(opp => opp.partnerType === PartnerType.ADD)?.isAllSelected?.toString())\r\n || (props?.customerCountry && props?.customerCountry?.isEUEFTA ? '2' : '1')\r\n || '1');\r\n const [resellerOption, setResellerOption] = useState<string>(\r\n (props?.opportunityAccounts?.find(opp => opp.partnerType === PartnerType.Reseller || opp.partnerType === PartnerType.ADR || opp.partnerType === PartnerType.DMP) && props?.opportunityAccounts?.find(opp => opp.partnerType === PartnerType.Reseller || opp.partnerType === PartnerType.ADR || opp.partnerType === PartnerType.DMP)?.isAllSelected?.toString())\r\n || (props?.customerCountry && props?.customerCountry?.isEUEFTA ? '2' : '1')\r\n || '1');\r\n const [isMsStoreChecked, setIsMsStoreChecked] = useState(\r\n !JavaScriptExtensions.isNullOrUndfinedOrEmpty(props?.opportunityAccounts?.find(opp => opp.partnerType === PartnerType.MsStore))\r\n || false);\r\n const onMsStoreCheckBoxChange = useCallback(\r\n (ev?: React.FormEvent<HTMLElement | HTMLInputElement>, checked?: boolean): void => {\r\n setIsMsStoreChecked(!!checked);\r\n },\r\n [],\r\n );\r\n const [productType, setProductType] = useState<IProductType | undefined>(props.productType?.find(x => x.productId === internalPricingContextState.productGroup));\r\n const userRole = sessionStorage.getItem(SessionStorageConsts.userRole);\r\n const resellers = useRef<IAccount[]>([]);\r\n if (props?.resellerAccounts && props?.resellerAccounts.length > 0) {\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()) {\r\n resellers.current = props?.resellerAccounts.filter(resellerAccount => selectedResellers.find(({ accountId }) => resellerAccount.accountId === accountId));\r\n }\r\n else {\r\n resellers.current = props?.resellerAccounts;\r\n }\r\n }\r\n if (resellers.current && resellers.current.length > 0) {\r\n if (customerCountry) {\r\n if (customerCountry.isEUEFTA) {\r\n resellers.current = resellers.current.filter((x: IAccount) => x.countryId === customerCountry.countryId\r\n || (x.isEueftaAccount));\r\n }\r\n else {\r\n resellers.current = resellers.current.filter((x: IAccount) => x.applicablePriceListGeo === customerCountry.applicablePriceListGeo);\r\n }\r\n }\r\n\r\n }\r\n var distributors: IAccount[] = [];\r\n if (props?.distiAccounts && props?.distiAccounts.length > 0) {\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()) {\r\n distributors = props?.distiAccounts.filter(distiAccount => selectedDistributors.find(({ accountId }) => distiAccount.accountId === accountId));\r\n }\r\n else {\r\n distributors = props?.distiAccounts;\r\n }\r\n }\r\n //var distributors = props?.distiAccounts;\r\n if (distributors && distributors.length > 0) {\r\n if (customerCountry) {\r\n if (customerCountry.isEUEFTA) {\r\n distributors = distributors.filter((x: IAccount) => x.countryId === customerCountry.countryId\r\n || (x.isEueftaAccount));\r\n }\r\n else {\r\n distributors = distributors.filter((x: IAccount) => x.applicablePriceListGeo === customerCountry.applicablePriceListGeo);\r\n }\r\n }\r\n\r\n if (productType) {\r\n distributors = distributors.filter((x: IAccount) => x.productTypeId === productType.productId);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setProductType(props.productType?.find(x => x.productId === internalPricingContextState.productGroup));\r\n }, [props.productType, internalPricingContextState.productGroup]);\r\n\r\n useEffect(() => {\r\n let resellerSelectionComplete: boolean = true;\r\n let distributorSelectionComplete: boolean = true;\r\n if (!customerCountry || (distributorOption === AccountAllType.None.toString() && selectedDistributors.length === 0)) {\r\n distributorSelectionComplete = false;\r\n }\r\n\r\n if (!customerCountry || (resellerOption === AccountAllType.None.toString() && selectedResellers.length === 0)) {\r\n resellerSelectionComplete = false;\r\n }\r\n\r\n let distiSelection = props && props.opportunityAccounts?.find(x => x.partnerType === PartnerType.ADD) as IOpportunityAccount;\r\n\r\n if (distiSelection) {\r\n distiSelection.accounts = selectedDistributors;\r\n distiSelection.isAllSelected = parseInt(distributorOption) as AccountAllType;\r\n distiSelection.isComplete = distributorSelectionComplete;\r\n }\r\n\r\n let resellerSelection = props && props.opportunityAccounts?.find(x => x.partnerType === PartnerType.Reseller) as IOpportunityAccount;\r\n\r\n if (resellerSelection) {\r\n resellerSelection.accounts = selectedResellers;\r\n resellerSelection.isAllSelected = parseInt(resellerOption) as AccountAllType;\r\n resellerSelection.isComplete = resellerSelectionComplete;\r\n\r\n if (resellerSelection.isAllSelected === 1\r\n && internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() && userRole === UserSubRole.ADD) {\r\n setallResellerSelected(true)\r\n }\r\n if (resellerSelection.isAllSelected === 2\r\n && internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() && userRole === UserSubRole.ADD) {\r\n setallResellerEUSelected(true)\r\n }\r\n }\r\n props && props.updateAccounts && props.updateAccounts([distiSelection, resellerSelection], ActionType.Update);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [selectedResellers, selectedDistributors, distributorOption, resellerOption]);\r\n\r\n useEffect(() => {\r\n let msStoreAccount = props && props.opportunityAccounts?.find(x => x.partnerType === PartnerType.MsStore) as IOpportunityAccount;\r\n\r\n if (!msStoreAccount) {\r\n msStoreAccount = { id: Guid.newGuid(), countryId: customerCountry?.countryId, partnerType: PartnerType.MsStore, };\r\n }\r\n\r\n msStoreAccount = {\r\n ...msStoreAccount,\r\n isAllSelected: AccountAllType.None,\r\n isComplete: isMsStoreChecked,\r\n action: getParentAccountAction(customerCountry?.countryId, PartnerType.MsStore)\r\n };\r\n\r\n\r\n props && props.updateAccounts && props.updateAccounts([msStoreAccount], ActionType.Update);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isMsStoreChecked]);\r\n\r\n /**\r\n * A callback for receiving a notification when the distributor choice has been changed.\r\n */\r\n const onDistributorChoiceGroupChange = (ev?: React.FormEvent<HTMLElement | HTMLInputElement>, option?: IChoiceGroupOption): void => {\r\n if (option && option.key) {\r\n setDistributorOption(option.key);\r\n if (option.key !== '3') {\r\n setSelectedDistributors([]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * A callback for receiving a notification when the Reseller choice has been changed.\r\n */\r\n const onResellerChoiceGroupChange = (ev?: React.FormEvent<HTMLElement | HTMLInputElement>, option?: IChoiceGroupOption): void => {\r\n if (option && option.key) {\r\n setResellerOption(option.key);\r\n if (option.key !== '3') {\r\n setSelectedResellers([]);\r\n }\r\n }\r\n }\r\n\r\n const updateLookupList = (itemsSelected: any[], itemsList: IAccount[]) => {\r\n const updatedItemsList = itemsList && itemsList.map(item => {\r\n return {\r\n ...item,\r\n key: `${ item.accountId }-${ item.partnerType }`,\r\n };\r\n });\r\n let selectedItems: IAccount[] = [];\r\n itemsSelected.forEach(x => {\r\n let list: any;\r\n list = updatedItemsList?.find(y => y.key === x.key);\r\n if (list) {\r\n list = _.omit(list, 'key');\r\n selectedItems.push(list);\r\n }\r\n });\r\n return selectedItems;\r\n };\r\n\r\n //callback method to add new ADDs from entity lookup\r\n const onAddSelectionUpdate = (selectedItems: any[]): void => {\r\n if (selectedItems) {\r\n let selectedAdds = distributors?.length ? updateLookupList(selectedItems, distributors) : [];\r\n selectedAdds = selectedAdds.map(x => { return { ...x, action: getAction(x, customerCountry?.countryId, PartnerType.ADD) } });\r\n setSelectedDistributors(selectedAdds);\r\n }\r\n }\r\n\r\n const onResellerSelectionUpdate = (selectedItems: any[]): void => {\r\n if (selectedItems) {\r\n let updatedResellers = resellers.current?.length ? updateLookupList(selectedItems, resellers.current) : [];\r\n updatedResellers = updatedResellers.map(rs => { return { ...rs, action: getAction(rs, customerCountry?.countryId, PartnerType.Reseller) } })\r\n setSelectedResellers(updatedResellers);\r\n }\r\n }\r\n\r\n const optionRootClass = mergeStyles({ display: 'flex', alignItems: 'baseline' });\r\n const distiOptions: IChoiceGroupOption[] = [\r\n { key: '1', text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AllAddsText\", UIControlsText.AllAddsText), },\r\n { key: '2', text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AllAddsEuText\", UIControlsText.AllAddsEuText) },\r\n {\r\n key: '3',\r\n text: '',\r\n onRenderField: (props, render) => {\r\n const columnDefinitions: IEntityLookupColumnConfig[] = [\r\n {\r\n apiField: 'name',\r\n key: 'name',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddNameText\", UIControlsText.AddNameText),\r\n displayOrder: 2\r\n\r\n }, {\r\n apiField: 'country',\r\n key: 'country',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CountryFacetText\", UIControlsText.CountryFacetText),\r\n displayOrder: 3\r\n }, {\r\n apiField: 'data',\r\n key: 'data',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerTypeText\", UIControlsText.PartnerTypeText),\r\n displayOrder: 4,\r\n isVisible: true\r\n }]\r\n return (\r\n <div className={optionRootClass}>\r\n {render!(props)}\r\n <label>\r\n <EntityLookup\r\n headerText={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddLookupText\", UIControlsText.AddLookupText)}\r\n subHeaderText={`${ productType && productType.productName } - ${ customerCountry?.countryName }`}\r\n items={(distributors && distributors.map((pt: IAccount) => ({\r\n key: `${ pt.accountId }-${ pt.partnerType }`, accountId: pt.accountId, name: pt.companyName, data: partnerTypeValues[`${ pt.partnerType }`], partnerType: pt.partnerType, country: pt.countryName,\r\n editMode: internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.PendingSecondaryReview || internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()\r\n }))) || []}\r\n lookUpTextFieldProps={{\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"AddNamePlaceHolderText\", UIControlsText.AddNamePlaceHolderText),\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"AddNamePlaceHolderText\", UIControlsText.AddNamePlaceHolderText),\r\n disabled: props ? !props.checked : false,\r\n required: props ? props.checked : false,\r\n style: CommonStyles.entityLookupWidth,\r\n value: (selectedDistributors && selectedDistributors.length) ?\r\n selectedDistributors.length > 1 ? selectedDistributors.length + ' ADDs Selected'\r\n : selectedDistributors.length + ' ADD Selected'\r\n : ''\r\n }}\r\n isCountrySelected={true}\r\n columnProps={columnDefinitions}\r\n itemSelectionUpdate={onAddSelectionUpdate}\r\n selectedItems={selectedDistributors && selectedDistributors.map(x => ({\r\n key: `${ x.accountId }-${ x.partnerType }`, accountId: x.accountId, name: x.companyName, data: partnerTypeValues[`${ x.partnerType }`], partnerType: x.partnerType, country: x.countryName,\r\n editMode: isEditableAccount(customerCountry?.countryId, internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, x, PartnerType.ADD)\r\n } as any))}\r\n disableSelectAllSelection={internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()}\r\n countryId={customerCountry?.countryId}\r\n PageMode={internalPricingContextState.pageMode}\r\n partnerType={PartnerType.ADD}\r\n statusCode={internalPricingContextState.opportunityDeals[0]?.statusCode}\r\n />\r\n </label>\r\n </div>\r\n );\r\n },\r\n },\r\n ];\r\n const viewResellers = () => {\r\n var isEUEFTA: any;\r\n var country: any;\r\n if (allResellerEUSelected === true) {\r\n isEUEFTA = true;\r\n\r\n } else {\r\n country = customerCountry?.countryName\r\n }\r\n history.push({\r\n pathname: '/viewresellers',\r\n search: '?' + ApplicationConstants.OpportunityNumberParamName + \"=\" + getURLParamValue(ApplicationConstants.OpportunityNumberParamName),\r\n state: { countryName: { country }, isEUEFTA: { isEUEFTA } }\r\n });\r\n }\r\n const resellerOptions: IChoiceGroupOption[] = [\r\n {\r\n key: '1', text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AllResellersText\", UIControlsText.AllResellersText),\r\n onRenderLabel: () => {\r\n return (\r\n <div>\r\n <label style={{ marginLeft: \"28px\" }}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AllResellersText\", UIControlsText.AllResellersText)}</label>\r\n {allResellerSelected === true ? (\r\n <Link underline className=\"ps-2\" onClick={viewResellers}><i>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ViewReseller\", UIControlsText.ViewReseller)}</i></Link>\r\n ) : \"\"}\r\n\r\n </div>\r\n );\r\n },\r\n },\r\n {\r\n key: '2', text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AllResellersEuText\", UIControlsText.AllResellersEuText),\r\n onRenderLabel: () => {\r\n return (\r\n <div>\r\n <label style={{ marginLeft: \"28px\" }}>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AllResellersEuText\", UIControlsText.AllResellersEuText)}</label>\r\n {allResellerEUSelected === true ? (\r\n <Link underline className=\"ps-2\" onClick={viewResellers}><i>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ViewReseller\", UIControlsText.ViewReseller)}</i></Link>\r\n ) : \"\"}\r\n\r\n </div>\r\n );\r\n },\r\n },\r\n {\r\n key: '3',\r\n text: '',\r\n onRenderField: (props, render) => {\r\n const columnDefinitions: IEntityLookupColumnConfig[] = [{\r\n apiField: 'name',\r\n key: 'name',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText),\r\n displayOrder: 2\r\n }, {\r\n apiField: 'country',\r\n key: 'country',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CountryFacetText\", UIControlsText.CountryFacetText),\r\n displayOrder: 3\r\n }, {\r\n apiField: 'organizationId',\r\n key: 'organizationId',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MpnIdText\", UIControlsText.MpnIdText),\r\n displayOrder: 4\r\n }, {\r\n apiField: 'data',\r\n key: 'data',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerTypeText\", UIControlsText.PartnerTypeText),\r\n displayOrder: 5,\r\n isVisible: true\r\n }]\r\n return (\r\n <div className={optionRootClass}>\r\n {render!(props)}\r\n <label>\r\n <EntityLookup\r\n headerText={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerLookupText\", UIControlsText.ResellerLookupText)}\r\n subHeaderText={`${ productType && productType.productName } - ${ customerCountry?.countryName }`}\r\n items={(resellers && resellers.current.map((pt: IAccount) => ({\r\n key: `${ pt.accountId }-${ pt.partnerType }`, accountId: pt.accountId, name: pt.companyName, data: partnerTypeValues[`${ pt.partnerType }`], partnerType: pt.partnerType, country: pt.countryName, organizationId: pt.organizationId,\r\n editMode: internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()\r\n }))) || []}\r\n lookUpTextFieldProps={{\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNamePlaceholderText\", UIControlsText.ResellerNamePlaceholderText),\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNamePlaceholderText\", UIControlsText.ResellerNamePlaceholderText),\r\n disabled: props ? !props.checked : false,\r\n required: props ? props.checked : false,\r\n style: CommonStyles.entityLookupWidth,\r\n value: (selectedResellers && selectedResellers.length) ?\r\n selectedResellers.length > 1 ? selectedResellers.length + ' Resellers Selected'\r\n : selectedResellers.length + ' Reseller Selected'\r\n : ''\r\n }}\r\n isCountrySelected={true}\r\n columnProps={columnDefinitions}\r\n itemSelectionUpdate={onResellerSelectionUpdate}\r\n selectedItems={selectedResellers && selectedResellers.map(x => ({\r\n key: `${ x.accountId }-${ x.partnerType }`, accountId: x.accountId, name: x.companyName, data: partnerTypeValues[`${ x.partnerType }`], partnerType: x.partnerType, country: x.countryName,\r\n editMode: isEditableAccount(customerCountry?.countryId, internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, x, PartnerType.Reseller)\r\n } as any))}\r\n disableSelectAllSelection={internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()}\r\n countryId={customerCountry?.countryId}\r\n PageMode={internalPricingContextState.pageMode}\r\n partnerType={PartnerType.Reseller}\r\n statusCode={internalPricingContextState.opportunityDeals[0]?.statusCode}\r\n />\r\n </label>\r\n </div>\r\n );\r\n },\r\n },\r\n ];\r\n return (\r\n <div className={CssClassConstants.ChannelAccounts}>\r\n <Stack horizontal {...defaultColumnProps} id={props?.id} style={{ marginTop: \"15px\" }}>\r\n <Dropdown\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntityCountry\", UIControlsText.LegalEntityCountry)}\r\n options={(props?.countries.map((pt: ICountry) => ({ key: pt.countryId, text: pt.countryName } as IDropdownOption))) || []}\r\n defaultSelectedKey={customerCountry?.countryId}\r\n disabled={JavaScriptExtensions.isDefined(props?.customerCountry)}\r\n styles={DefaultPageStyles.customWidthStyles}\r\n style={JavaScriptExtensions.isDefined(props?.customerCountry) ? CommonStyles.blackBorder : {}}\r\n required />\r\n {isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ADDRegistration\", UIControlsText.ADDRegistration), internalPricingContextState.pageMode, PageConstants.CPStrategicDealtype) &&\r\n <ChoiceGroup\r\n defaultSelectedKey={distributorOption}\r\n options={customerCountry && !customerCountry.isEUEFTA ? distiOptions.filter(x => x.key !== \"2\") : distiOptions}\r\n style={{ marginLeft: \"24px\" }}\r\n onChange={onDistributorChoiceGroupChange}\r\n disabled={internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() || internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.PendingSecondaryReview} />\r\n }\r\n {hideResellerSectionsInViewModeForReseller(userRole || \"\", internalPricingContextState.pageMode) &&\r\n <ChoiceGroup\r\n defaultSelectedKey={resellerOption}\r\n options={customerCountry && !customerCountry.isEUEFTA ? resellerOptions.filter(x => x.key !== \"2\") : resellerOptions}\r\n style={{ marginLeft: \"24px\", width: '300px' }}\r\n onChange={onResellerChoiceGroupChange}\r\n disabled={internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() || internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.PendingSecondaryReview} />\r\n }\r\n <Stack style={{ marginLeft: \"48px\" }} >\r\n {hideResellerSectionsInViewModeForReseller(userRole || \"\", internalPricingContextState.pageMode) &&\r\n <Checkbox\r\n checked={isMsStoreChecked}\r\n onChange={onMsStoreCheckBoxChange}\r\n disabled={isMSStoreDisable(customerCountry, PartnerType.MsStore, internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0].statusCode)} />\r\n }\r\n </Stack>\r\n\r\n </Stack>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ChannelAccounts;","/**\r\n * Page Style for InternalPricing.\r\n * @constant\r\n */\r\nexport const PageStyles = {\r\n disabledTabs: {\r\n opacity: 0.5,\r\n cursor: \"default\"\r\n },\r\n missingFieldTabs: {\r\n borderBottom: \"solid 3px red\"\r\n },\r\n commandButtonStyles: {\r\n root: { marginTop: 20 },\r\n },\r\n commandButtonPadding: {\r\n root: { marginRight: 16 },\r\n },\r\n labelStyles: {\r\n root: { marginTop: 10 },\r\n },\r\n dropdownStyles: {\r\n dropdown: { width: 300 },\r\n },\r\n dropdownStylesTwoColumn: {\r\n dropdown: { width: 400 },\r\n },\r\n addItemButtonStyles: {\r\n height: \"25px\",\r\n width: \"150px\",\r\n padding: 0\r\n },\r\n addResellerAlignement: {\r\n height: \"25px\",\r\n width: \"150px\",\r\n padding: 0,\r\n marginTop : 0,\r\n marginBottom: 15\r\n },\r\n textFieldStylesOneColumn: {\r\n root: { width: 300 },\r\n },\r\n textFieldStylesTwoColumn: {\r\n root: { width: 250 },\r\n },\r\n textFieldStylesFourColumn: {\r\n root: { width: 140 },\r\n },\r\n dealContactAddButton: {\r\n height: \"25px\",\r\n width: \"150px\",\r\n padding: 0\r\n },\r\n ErrorMessageStyles: {\r\n paddingBottom: '30px'\r\n },\r\n missingFieldHighlight: {\r\n border: \"solid 1px red\"\r\n },\r\n gridCellDropDownStyles: {\r\n dropdown: { width: 80 },\r\n },\r\n paddingBottom15: {\r\n paddingBottom: '15px'\r\n }\r\n}","\r\nimport { Dropdown, IDropdownOption } from \"@fluentui/react\";\r\nimport { useState } from \"react\";\r\nimport { IDropDownCellProps } from \"./IDropDownCellProps\";\r\nimport { UIControlsText } from \"../../../content/UIControlsText\";\r\nimport React from \"react\";\r\nimport { PageStyles } from \"../../../pages/pricingprogram/CPStrategic/content/Page.InternalPricingProgram.Styles\";\r\nimport { SessionStorageConsts } from \"../../../models/SessionStorageConsts\";\r\nimport { getEntityDataFromSession, getRuleValidationMessage } from \"../common/util\";\r\nimport { MessageTypeText } from \"../../../models/MessageTypeText\";\r\n\r\n/**\r\n * DropDownGridCell component.\r\n * @function component\r\n */\r\nexport const DropDownGridCell = (props: IDropDownCellProps) => {\r\n\r\n const [values, setValues] = useState(props.selectedValues || []); \r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n \r\n /**\r\n * Event to handle dropdown updates\r\n * @method\r\n * @param {IDropdownOption} item Updated dropdown selection \r\n */\r\n const dropdownChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n if (props.isMultiSelect) {\r\n setValues((prevState: IDropdownOption[]) => {\r\n let newState = item.selected ? [...prevState, item] : prevState.filter(x => x.key !== item.key);\r\n props.itemSelectionUpdate && props.itemSelectionUpdate(props.cellId, newState);\r\n return newState;\r\n });\r\n }\r\n else {\r\n if(props.isUploadedRecord != false){\r\n setValues([item.key]);\r\n props.itemSelectionUpdate && props.itemSelectionUpdate(props.cellId, [item.key]);\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n {props.isMultiSelect &&\r\n <td>\r\n <Dropdown\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DropdownText\", UIControlsText.DropdownText)}\r\n multiSelect\r\n onChange={dropdownChange}\r\n options={props.data}\r\n selectedKeys={values.map(i => i.key)}\r\n />\r\n </td>\r\n }\r\n {!props.isMultiSelect &&\r\n <td>\r\n <Dropdown\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DropdownText\", UIControlsText.DropdownText)}\r\n onChange={dropdownChange}\r\n options={props.data}\r\n selectedKey={values[0]}\r\n styles={PageStyles.gridCellDropDownStyles}\r\n />\r\n </td>\r\n }\r\n </React.Fragment>\r\n )\r\n}\r\nexport default DropDownGridCell;","import { ActionButton, DefaultButton, Dropdown, IDropdownOption, IStackTokens, Label, MessageBar, PrimaryButton, Spinner, Stack, TextField } from \"@fluentui/react\";\r\nimport { SetStateAction, useEffect, useRef, useState } from \"react\";\r\nimport Reseller from \"../../../../components/shared/reseller\";\r\nimport { ErrorMessages } from \"../../../../content/ErrorMessages\";\r\nimport { defaultColumnProps, DefaultPageStyles, _Styles } from \"../../../../content/styles/Page.styles\";\r\nimport { UIControlsText } from \"../../../../content/UIControlsText\";\r\nimport { Guid } from \"../../../../infrastructure/Guid\";\r\nimport { JavaScriptExtensions } from \"../../../../infrastructure/JavaScriptExtensions\";\r\nimport { ChannelStructure } from \"../../../../models/ChannelStructure\";\r\nimport { IAccount } from \"../../../../models/IAccount\";\r\nimport { SessionStorageConsts } from \"../../../../models/SessionStorageConsts\";\r\nimport { nextGenService } from \"../../../../services/NextGenService\";\r\nimport { useInternalPricingContext } from \"../context/internalpricing-context\";\r\nimport { PageStyles } from \"../../common/content/Page.Styles\";\r\nimport { CaseActionTypes } from \"../../common/reducer/CaseActionTypes\";\r\nimport { IAttachment } from \"../../../../models/IAttachment\";\r\nimport Attachment from \"../../../../components/shared/attachment\";\r\nimport { IOpportunityAccount } from \"../../../../models/IOpportunityAccount\";\r\nimport { ArrayExtensions } from \"../../../../infrastructure/ArrayExtensions\";\r\nimport { PartnerType } from \"../../../../models/PartnerType\";\r\nimport { ActionType } from \"../../../../models/ActionType\";\r\nimport { CssClassConstants } from \"../../../../content/CssClassConstants\";\r\nimport { ICountry } from \"../../../../models/ICountry\";\r\nimport { Grid, GridCellProps, GridColumn as Column, GridToolbar } from \"@progress/kendo-react-grid\";\r\nimport { ChannelStructureOptions, partnerTypeValues } from \"../../../../services/StaticData\";\r\nimport ChannelAccounts from \"./cp-strategic-channel-accounts\";\r\nimport { IBaseProps } from \"../../common/props/IBaseProps\";\r\nimport { AccountAllType } from \"../../../../models/AccountAllType\";\r\nimport { mergeStyles } from \"@uifabric/merge-styles\";\r\nimport { PageMode } from \"../../../../models/PageMode\";\r\nimport { DropDownGridCell } from \"../../../../components/shared/grid/dropDownGridCell\";\r\nimport _ from \"lodash\";\r\nimport { getsavedContext, isFieldDisabled, isFieldVisible, getLoggedinUserRoleDetails, getPartnerAction, getParentAccountAction, isPartnerAccount, isRoleBasedFilterRequired, hideResellerSectionsInViewModeForReseller, addExportExcelHeader, getUserRole, getURLParamValue, getRuleValidationMessage, getEntityDataFromSession } from \"../../../../components/shared/common/util\";\r\nimport { IUserRoleDetail } from \"../../../../models/IUserRoleDetail\";\r\nimport { UserSubRole } from \"../../../../models/UserSubRole\";\r\nimport { OpportunityDealStatusCodes } from \"../../../../models/OpportunityDealStatusCodes\";\r\nimport { ExcelExport } from \"@progress/kendo-react-excel-export\";\r\nimport { UserRole } from \"../../../../models/UserRole\";\r\nimport { PartnerTypeLabel } from \"../../../../models/PartnerTypeLabel\";\r\nimport { ApplicationConstants } from \"../../../../models/ApplicationConstants\";\r\nimport { useHistory } from \"react-router\";\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { useToHandleSettingViewResellerNavState as mdppaccessibilitySetNavForFocus, MdppAccessibilityLink as Link } from \"../../../../hooks/accessiblity-hooks\";\r\nimport { PageConstants } from \"../../../pageconstants/Constants\";\r\nimport { expireDialog, extendDialogButtonStyles, stackButtonStyles, stackStyles } from '../../../../content/styles/Page.styles';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { ChannelSubType } from \"../../../../models/ChannelSubType\";\r\nconst stackTokens: IStackTokens = { childrenGap: 24 };\r\n/**\r\n * CP Strategic Channel Component.\r\n * @function component\r\n */\r\nconst CPStrategicChannel: React.FunctionComponent<IBaseProps> = (props: IBaseProps) => {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const { internalPricingContextState, internalPricingContextDispatch } = useInternalPricingContext();\r\n const msStoreClass = mergeStyles({ width: \"85px\" });\r\n const getInitialAccountsState = (structureChange: boolean, partnerType: PartnerType, isComplete: boolean, accountAllType?: AccountAllType): IOpportunityAccount[] => {\r\n let oppAccounts: IOpportunityAccount[] = [{ id: Guid.newGuid() }];\r\n if (!structureChange) { //Append only if channel structure is not changed.\r\n if (partnerType === PartnerType.Reseller || partnerType === PartnerType.ADR) {\r\n oppAccounts = [...resellers, ...msStores];\r\n }\r\n else if (partnerType === PartnerType.ADD) {\r\n oppAccounts = [...distributors];\r\n }\r\n }\r\n\r\n oppAccounts = oppAccounts.filter(a => internalPricingContextState.opportunityDeals[0].geoCountries && internalPricingContextState.opportunityDeals[0].geoCountries?.filter(c => c.action !== ActionType.Delete).map(c => c.countryId).indexOf(a?.countryId as string) >= 0);\r\n\r\n let newOppAccounts = (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].geoCountries\r\n && internalPricingContextState.opportunityDeals[0].geoCountries.filter(c => c.action !== ActionType.Delete).filter(x => oppAccounts.map(a => a.countryId).indexOf(x.countryId) === -1).map(x =>\r\n ({\r\n id: Guid.newGuid(),\r\n partnerType,\r\n countryId: x.countryId,\r\n isAllSelected: accountAllType ? accountAllType : (x.isEUEFTA ? AccountAllType.AllEuefta : AccountAllType.All),\r\n isComplete,\r\n applicablePriceListGeo: x.applicablePriceListGeo,\r\n } as IOpportunityAccount)));\r\n\r\n if (newOppAccounts && newOppAccounts.length > 0) {\r\n oppAccounts = oppAccounts.concat(newOppAccounts);\r\n }\r\n\r\n return oppAccounts.filter(x => x.partnerType !== PartnerType.MsStore);\r\n }\r\n \r\n const stackButtonTokens: IStackTokens = { childrenGap: 16 };\r\n const [oppdealId, setOppdealId] = useState<string>((internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].id) || \"\");\r\n let history = useHistory();\r\n /**\r\n * Get TDistributor name from session storage.\r\n * @method\r\n * @@returns {IAccount[]} List of Distributor Accounts.\r\n */\r\n const getDistributorAccounts = (): IAccount[] => {\r\n var allDistributors = sessionStorage.getItem(SessionStorageConsts.distributors);\r\n if (allDistributors !== null) {\r\n return JSON.parse(allDistributors);\r\n }\r\n\r\n return [];\r\n };\r\n\r\n const [productTypeId, setProductTypeId] = useState<string>(\"\");\r\n const [distributors, setDistributors] = useState<IOpportunityAccount[]>([]);\r\n const [resellers, setResellers] = useState<IOpportunityAccount[]>([]);\r\n const [msStores, setMsStores] = useState<IOpportunityAccount[]>([]);\r\n const [resellerChannelAccounts, setResellerChannelAccounts] = useState<IOpportunityAccount[]>([]);\r\n const [availableCountries, setAvailableCountries] = useState<ICountry[]>([]);\r\n const [isChannelInfoVisible, setIsChannelInfoVisible] = useState<boolean>((internalPricingContextState.opportunityDeals[0] && internalPricingContextState.opportunityDeals[0].channelStructure) ? (internalPricingContextState.opportunityDeals[0].channelStructure !== ChannelStructure.Skip) : false);\r\n const [isCasToReseller, setCasToReseller] = useState<boolean>((internalPricingContextState.opportunityDeals[0] && internalPricingContextState.opportunityDeals[0].channelStructure) ? internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Customer : false);\r\n const [isChannelJustificationVisible, setChannelJustificationVisible] = useState<boolean>(false);\r\n const [isAttachmentVisible, setAttachmentVisible] = useState<boolean>(false);\r\n const [isAttachmentRequired, setAttachmentRequired] = useState<boolean>(true);\r\n const [isSkipReasoningVisible, setIsSkipReasoningVisible] = useState<boolean>((internalPricingContextState.opportunityDeals[0] && internalPricingContextState.opportunityDeals[0].channelStructure) ? internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Skip : false);\r\n const resellerAccounts = useRef<IAccount[]>([]);\r\n const [distributorAccounts] = useState<IAccount[]>(getDistributorAccounts());\r\n const [attachmentList, setAttachmentList] = useState<Array<IAttachment | undefined>>(internalPricingContextState.attachments?.filter(x => x?.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)) || []);\r\n const [isResellerLoading, setIsResellerLoading] = useState<boolean>(false);\r\n const userRole = sessionStorage.getItem(SessionStorageConsts.userRole) || \"\";\r\n const [addtionalADRIdList, setAddtionalADRIdList] = useState<Array<string>>([]);\r\n const [oppAccountAvailableCountries, setOppAccountAvailableCountries] = useState<ICountry[]>([]);\r\n const [partnerAccounts, setPartnerAccounts] = useState<{ [key: string]: IAccount[]; }>();\r\n const [invalidResellers, setInvalidResellers] = useState<string>(\"\");\r\n const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n async function getResellers(countries: ICountry[]) {\r\n setIsResellerLoading(true);\r\n\r\n //Remove resellers when the countries are removed.\r\n resellerAccounts.current = resellerAccounts.current.filter(r => r.productTypeId === productGroup).filter(r => countries.map(c => c.countryId).indexOf(r.countryId as string) >= 0);\r\n\r\n //Newly selected countries\r\n let newCountries = countries.filter(c => resellerAccounts.current.filter(r => r.productTypeId === productGroup).map(r => r.countryId).indexOf(c.countryId) === -1);\r\n let count = newCountries.length;\r\n\r\n if (newCountries.length === 0) {\r\n setIsResellerLoading(false);\r\n }\r\n\r\n //Get resellers for newly selected countries\r\n newCountries.forEach(async c => {\r\n let response = await nextGenService.getAllActiveResellersByProductCountriesAndType(productGroup, new Array(c.countryId));\r\n count--;\r\n if (count === 0) {\r\n setIsResellerLoading(false);\r\n }\r\n\r\n if (response.status === 200) {\r\n resellerAccounts.current = resellerAccounts.current.concat(response.data);\r\n resellerAccounts.current = _.uniqBy(resellerAccounts.current, v => [v.accountId, v.partnerType].join());\r\n }\r\n });\r\n }\r\n let selectedGeoCountries = (internalPricingContextState.opportunityDeals && internalPricingContextState?.opportunityDeals[0]?.geoCountries && internalPricingContextState?.opportunityDeals[0]?.geoCountries.filter(c => c.action !== ActionType.Delete)) || [];\r\n let userRelatedCountries: SetStateAction<ICountry[]> = [];\r\n let userCountries: SetStateAction<ICountry[]> = [];\r\n if (selectedGeoCountries.length > 0) {\r\n let countries = props.countries.filter(x => selectedGeoCountries.filter(y => y.countryId == x.countryId).length > 0);\r\n if (isRoleBasedFilterRequired(userRole || \"\")) {\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n const userCountriesIds = userRoleDetails.map(function (userRoleDetail) { return userRoleDetail.countryId }).join(',');\r\n userCountries = countries.filter(country => userCountriesIds.includes(country.countryId));\r\n if (userRole === UserSubRole.Reseller) {\r\n if (internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Customer) {\r\n userRelatedCountries = countries.filter(country => internalPricingContextState?.opportunityAccounts?.find(({ countryId, partnerType, partnerAccounts }) => (countryId === country.countryId && (partnerType === PartnerType.ADD || Object.keys(partnerAccounts || []).length > 0))));\r\n\r\n const resellerAccountContries = countries.filter(country => internalPricingContextState?.opportunityAccounts?.find(({ countryId }) => (countryId === country.countryId)));\r\n setOppAccountAvailableCountries(resellerAccountContries);\r\n }\r\n }\r\n else if (userRole === UserSubRole.ADD) {\r\n userRelatedCountries = countries.filter(country => internalPricingContextState?.opportunityAccounts?.find(({ countryId, partnerType }) => (countryId === country.countryId && (partnerType === PartnerType.ADR || partnerType === PartnerType.DMP || partnerType === PartnerType.Reseller))));\r\n setOppAccountAvailableCountries(userRelatedCountries);\r\n }\r\n else {\r\n userRelatedCountries = userCountries;\r\n setOppAccountAvailableCountries(userRelatedCountries);\r\n }\r\n sessionStorage.setItem(SessionStorageConsts.userCountries, JSON.stringify(userCountries.map(country => country.countryId).join(',')));\r\n }\r\n else {\r\n userRelatedCountries = countries;\r\n sessionStorage.setItem(SessionStorageConsts.userCountries, JSON.stringify(countries));\r\n setOppAccountAvailableCountries(userRelatedCountries);\r\n }\r\n }\r\n\r\n let productGroup = internalPricingContextState?.productGroup || \"\";\r\n setProductTypeId((prevState: string) => {\r\n if (prevState !== productGroup) {\r\n if (isChannelInfoVisible) {\r\n initializeAccounts(true);\r\n }\r\n }\r\n\r\n return productGroup;\r\n });\r\n setAvailableCountries(userRelatedCountries);\r\n if (internalPricingContextState?.opportunityDeals[0]?.id) {\r\n setOppdealId(internalPricingContextState?.opportunityDeals[0]?.id);\r\n }\r\n\r\n if (isChannelInfoVisible) {\r\n initializeAccounts(false);\r\n }\r\n\r\n if (JavaScriptExtensions.isDefined(productGroup) && selectedGeoCountries.length > 0) {\r\n let countries = props.countries.filter(x => selectedGeoCountries.filter(y => y.countryId == x.countryId).length > 0);\r\n let isEueftaCountrySelected = countries.some(x => x.isEUEFTA);\r\n let eueftaCountries = isEueftaCountrySelected ? props.countries.filter(x => x.isEUEFTA) : [];\r\n let resellerContries = props.countries.filter(x => selectedGeoCountries.filter(y => y.applicablePriceListGeo === x.applicablePriceListGeo).length > 0);\r\n\r\n if (eueftaCountries.length > 0) {\r\n resellerContries = ArrayExtensions.mergeArrays(resellerContries, eueftaCountries);\r\n }\r\n\r\n if (internalPricingContextState.pageMode === PageMode.Edit || internalPricingContextState.pageMode === PageMode.Create)\r\n {\r\n getResellers(resellerContries);\r\n } \r\n }\r\n\r\n function initializeAccounts(structureChange: boolean) {\r\n if (isCasToReseller) {\r\n setResellers(getInitialAccountsState(structureChange, PartnerType.ADR, false, AccountAllType.None));\r\n setMsStores(msStores.filter(ms => selectedGeoCountries.map(c => c.countryId).includes(ms.countryId || \"\")));\r\n }\r\n else {\r\n setResellers(getInitialAccountsState(structureChange, PartnerType.Reseller, true));\r\n setDistributors(getInitialAccountsState(structureChange, PartnerType.ADD, true));\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [internalPricingContextState?.opportunityDeals && internalPricingContextState?.opportunityDeals[0]?.geoCountries, internalPricingContextState?.opportunityDeals[0]?.id, internalPricingContextState?.productGroup]);\r\n\r\n useEffect(() => {\r\n if (internalPricingContextState.opportunityAccounts && internalPricingContextState.opportunityAccounts?.length > 0) {\r\n //update iscompleted flag to avoid validation error on edit\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n internalPricingContextState.opportunityAccounts.map(oppAccount => {\r\n if ((oppAccount.isAllSelected === AccountAllType.None && oppAccount?.accounts && oppAccount.accounts?.length > 0) ||\r\n oppAccount.isAllSelected !== AccountAllType.None ||\r\n oppAccount.partnerType === PartnerType.MsStore) {\r\n oppAccount.isComplete = true;\r\n }\r\n });\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: internalPricingContextState.opportunityAccounts })\r\n }\r\n if (internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Customer) {\r\n setResellers(internalPricingContextState.opportunityAccounts.filter(acc => acc.partnerType === PartnerType.ADR || acc.partnerType === PartnerType.DMP));\r\n if (userRole == UserSubRole.Reseller && internalPricingContextState.pageMode?.toLowerCase() !== PageMode.Create.toLowerCase()) {\r\n setDistributors(internalPricingContextState.opportunityAccounts.filter(acc => acc.partnerType === PartnerType.ADD));\r\n }\r\n }\r\n else {\r\n setResellers(internalPricingContextState.opportunityAccounts.filter(acc => acc.partnerType === PartnerType.Reseller || acc.partnerType === PartnerType.ADR || acc.partnerType === PartnerType.DMP));\r\n setDistributors(internalPricingContextState.opportunityAccounts.filter(acc => acc.partnerType === PartnerType.ADD));\r\n }\r\n\r\n if (internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Customer\r\n && internalPricingContextState.opportunityAccounts.some(acc => acc.partnerType === PartnerType.ADR)\r\n && !internalPricingContextState.opportunityAccounts.some(acc => acc.partnerType === PartnerType.DMP)) {\r\n setChannelJustificationVisible(false);\r\n setAttachmentVisible(true);\r\n }\r\n else if (internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Customer\r\n && internalPricingContextState.opportunityAccounts.some(acc => acc.partnerType === PartnerType.DMP)) {\r\n let modifiedPartners = internalPricingContextState.opportunityAccounts\r\n .filter(x => availableCountries.map(c => c.countryId).indexOf(x.countryId as string) >= 0)\r\n .filter(x => x.accounts && x.accounts.length > 0 && x.partnerType === PartnerType.DMP)\r\n .map((value: IOpportunityAccount) => {\r\n return value.accounts?.some((account: IAccount) =>\r\n (value?.availableRelatedAccounts && value?.availableRelatedAccounts[account.accountId]\r\n && value?.partnerAccounts && value?.partnerAccounts[account.accountId]\r\n && value?.availableRelatedAccounts[account.accountId].length !== value?.partnerAccounts[account.accountId].length)\r\n );\r\n });\r\n\r\n if (modifiedPartners.some(x => x && x === true)) {\r\n setChannelJustificationVisible(true);\r\n setAttachmentVisible(true);\r\n }\r\n else {\r\n setChannelJustificationVisible(false);\r\n setAttachmentVisible(true);\r\n }\r\n }\r\n else if (internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Distributor) {\r\n setChannelJustificationVisible(true);\r\n setAttachmentRequired(false);\r\n if (internalPricingContextState.opportunityAccounts.some(acc => acc.isAllSelected === AccountAllType.None && acc.partnerType !== PartnerType.MsStore)) {\r\n setAttachmentVisible(true);\r\n }\r\n else {\r\n setAttachmentVisible(false);\r\n }\r\n }\r\n else if (internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Skip) {\r\n setChannelJustificationVisible(false);\r\n setAttachmentVisible(false);\r\n }\r\n\r\n let msStore = internalPricingContextState.opportunityAccounts.filter(acc => acc.partnerType === PartnerType.MsStore);\r\n if (msStore && msStore.length > 0) {\r\n msStore[0].isComplete = true;\r\n }\r\n setMsStores(msStore);\r\n setIsChannelInfoVisible(internalPricingContextState.opportunityDeals[0].channelStructure !== ChannelStructure.Skip);\r\n setCasToReseller(internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Customer);\r\n\r\n if (internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Customer) {\r\n let dmpAccounts: string[] = [];\r\n let relatedAccounts: [{ [key: string]: IAccount[]; }] = [{}];\r\n internalPricingContextState?.opportunityAccounts?.filter(opp => opp.partnerType === PartnerType.DMP).map(acc => acc?.accounts?.map(ac => dmpAccounts.push(ac.accountId)));\r\n internalPricingContextState?.opportunityAccounts?.filter(opp => opp.partnerType === PartnerType.DMP && opp.availableRelatedAccounts).forEach(acc => acc.availableRelatedAccounts && relatedAccounts.push(acc.availableRelatedAccounts));\r\n let dmpsWithParters: string[] = [];\r\n relatedAccounts.forEach(acc => Object.entries(acc).map(x => dmpsWithParters.push(x[0])))\r\n\r\n let newDMPs = dmpAccounts.filter(x => !dmpsWithParters.includes(x));\r\n\r\n if (newDMPs.length > 0) {\r\n nextGenService.getAddsAccountsByDmpAccountIds(internalPricingContextState?.productGroup || \"\", _.uniq(newDMPs) || [])\r\n .then((response) => {\r\n let accounts: { [key: string]: IAccount[]; } = JSON.parse(JSON.stringify(response.data));\r\n\r\n newDMPs.forEach(dmp => {\r\n if (accounts[dmp]) {\r\n accounts[dmp] = accounts[dmp].map(ac => { return { ...ac, partnerType: PartnerType.ADD } });\r\n }\r\n else {\r\n accounts[dmp] = [];\r\n }\r\n })\r\n setPartnerAccounts(accounts);\r\n let oppAccounts = internalPricingContextState.opportunityAccounts;\r\n oppAccounts && oppAccounts.filter(opp => opp.partnerType === PartnerType.DMP)\r\n .map(acc => acc.accounts?.map(x => {\r\n if (accounts.hasOwnProperty(x.accountId)) {\r\n let relatedAccount = accounts[x.accountId];\r\n if (relatedAccount && relatedAccount.length) {\r\n if (!acc.availableRelatedAccounts) {\r\n acc.availableRelatedAccounts = {};\r\n }\r\n\r\n acc.availableRelatedAccounts[x.accountId] = relatedAccount;\r\n }\r\n }\r\n }));\r\n\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: oppAccounts });\r\n });\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [internalPricingContextState.opportunityAccounts]);\r\n\r\n\r\n useEffect(() => {\r\n if (internalPricingContextState.attachments && internalPricingContextState.attachments.length > 0) {\r\n setAttachmentList(internalPricingContextState.attachments?.filter(x => x?.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)));\r\n }\r\n\r\n }, [internalPricingContextState.attachments]);\r\n\r\n useEffect(() => {\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelJustificationRequiredChanged, dealBoolValue: { key: oppdealId, value: isChannelJustificationVisible } })\r\n }, [isChannelJustificationVisible]);\r\n\r\n //Accessibility fix to set role of button\r\n useEffect(() => {\r\n accessibilityHook();\r\n });\r\n function accessibilityHook() {\r\n var gridCell = document.getElementsByClassName('ms-Link ps-2');\r\n for (let i = 0; i < gridCell.length; i++) {\r\n gridCell[i].setAttribute('role', 'link');\r\n }\r\n }\r\n\r\n /**\r\n * Get TextField ErrorMessage.\r\n * @method\r\n * @param {string} value Text Box value.\r\n * @@returns {string} Error Message.\r\n */\r\n const getTextFieldErrorMessage = (value: string): string => {\r\n return internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() ? '' :\r\n !value ? getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldError\", ErrorMessages.RequiredFieldError) : '';\r\n };\r\n\r\n /**\r\n * ChannelOverview change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onChannelOverviewChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelOverviewInputChanged, dealInputValue: { key: oppdealId, value: newValue } })\r\n }\r\n\r\n /**\r\n * ChannelJustification change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onChannelJustificationChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelJustificationInputChanged, dealInputValue: { key: oppdealId, value: newValue } })\r\n }\r\n\r\n /**\r\n * ChannelStructure change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {IDropdownOption} item Clicked Option from Dropdown.\r\n */\r\n const onChannelStructureChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n switch (item.key) {\r\n case ChannelStructure.Skip:\r\n setIsChannelInfoVisible(false);\r\n setIsSkipReasoningVisible(true);\r\n setAttachmentVisible(false);\r\n setChannelJustificationVisible(false);\r\n setCasToReseller(false);\r\n setDistributors([]);\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: [] });\r\n break;\r\n case ChannelStructure.Customer:\r\n setIsChannelInfoVisible(true);\r\n setAttachmentRequired(true);\r\n setAttachmentVisible(true);\r\n setChannelJustificationVisible(false);\r\n setIsSkipReasoningVisible(false);\r\n setCasToReseller(true);\r\n setResellers(getInitialAccountsState(true, PartnerType.ADR, false, AccountAllType.None))\r\n setDistributors([]);\r\n setMsStores([]);\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: resellers });\r\n break;\r\n case ChannelStructure.Distributor:\r\n setChannelJustificationVisible(true);\r\n setIsChannelInfoVisible(true);\r\n setIsSkipReasoningVisible(false);\r\n setCasToReseller(false);\r\n setMsStores([]);\r\n let resellersToAdd = getInitialAccountsState(true, PartnerType.Reseller, true);\r\n setResellers(resellersToAdd);\r\n let addsToAdd = getInitialAccountsState(true, PartnerType.ADD, true);\r\n setDistributors(addsToAdd);\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: resellersToAdd.concat(addsToAdd) });\r\n break;\r\n }\r\n }\r\n\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelStructureChanged, dealDropDownValue: { key: oppdealId, value: item?.key } });\r\n }\r\n\r\n /**\r\n * Attachment change Callback function.\r\n * @param {Array<IAttachment | undefined>} attachmentList Updated list of attachments \r\n */\r\n const handleAttachmentChanges = (attachmentList: Array<IAttachment | undefined>): void => {\r\n setAttachmentList(attachmentList.filter(item => item?.action !== ActionType.Delete));\r\n let otherAttachments = internalPricingContextState.attachments?.filter(x => x?.source !== getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)) || [];\r\n internalPricingContextDispatch({ type: CaseActionTypes.attachmentChanged, attachments: ArrayExtensions.mergeArrays(otherAttachments, attachmentList) });\r\n }\r\n\r\n /**\r\n * Add/Update accounts entry Callback function.\r\n * @method\r\n * @param {IOpportunityAccount} accounts updated accounts details.\r\n * @param {ActionType} actiontype Action to perform.\r\n */\r\n const updateAccounts = (accounts: IOpportunityAccount[], actiontype?: ActionType): void => {\r\n let newResellerList = resellers;\r\n let newDistiList = [...distributors];\r\n let newMsStoreList = [...msStores];\r\n switch (actiontype) {\r\n case ActionType.Update:\r\n {\r\n if (accounts.length) {\r\n var distiAccount = accounts.find(x => x !== undefined && x.partnerType === PartnerType.ADD);\r\n if (distiAccount) {\r\n if (distiAccount.isAllSelected != AccountAllType.None) {\r\n distiAccount.action = getParentAccountAction(distiAccount?.countryId, PartnerType.ADD);\r\n }\r\n else {\r\n distiAccount.action = '';\r\n }\r\n\r\n let idx = newDistiList.findIndex((item) => item.id === distiAccount?.id);\r\n if (idx >= 0 && distiAccount) {\r\n newDistiList[idx] = distiAccount;\r\n }\r\n }\r\n\r\n var resellerAccount = accounts.find(x => x !== undefined && (x.partnerType === PartnerType.Reseller || x.partnerType === PartnerType.ADR || x.partnerType === PartnerType.DMP));\r\n if (resellerAccount) {\r\n if (resellerAccount.isAllSelected != AccountAllType.None) {\r\n resellerAccount.action = getParentAccountAction(resellerAccount?.countryId, PartnerType.Reseller);\r\n }\r\n else {\r\n resellerAccount.action = '';\r\n }\r\n\r\n let idx = newResellerList.findIndex((item) => item.id === resellerAccount?.id);\r\n if (idx >= 0) {\r\n newResellerList[idx] = resellerAccount;\r\n }\r\n else {\r\n //In ChannelStructure.Customer, if dropdown is changed from MSStore to pther partner type \r\n newResellerList.push(resellerAccount);\r\n newMsStoreList = newMsStoreList.filter(item => item.id !== resellerAccount?.id);\r\n }\r\n }\r\n\r\n var msStoreAccount = accounts.find(x => x !== undefined && x.partnerType === PartnerType.MsStore);\r\n newMsStoreList = newMsStoreList.filter(item => item.id !== msStoreAccount?.id);\r\n if (msStoreAccount && msStoreAccount.isComplete) {\r\n //In ChannelStructure.Customer, if dropdown is changed from pther partner type to MSStore \r\n newMsStoreList.push(msStoreAccount);\r\n newResellerList = newResellerList.filter(x => x.id !== msStoreAccount?.id);\r\n }\r\n else if (msStoreAccount && !msStoreAccount.isComplete) {\r\n newMsStoreList = newMsStoreList.filter((item) => item.id !== msStoreAccount?.id);\r\n }\r\n }\r\n break;\r\n }\r\n\r\n case ActionType.Delete:\r\n {\r\n if (accounts.length) {\r\n newResellerList = newResellerList.filter((item) => item.id !== accounts[0]?.id);\r\n newMsStoreList = newMsStoreList.filter((item) => item.id !== accounts[0]?.id);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n setResellers(newResellerList);\r\n setDistributors(() => [...newDistiList]);\r\n setMsStores(() => [...newMsStoreList]);\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: [...newResellerList, ...newDistiList, ...newMsStoreList] })\r\n };\r\n\r\n let listItems: any = [];\r\n if (isChannelInfoVisible && isCasToReseller\r\n && (internalPricingContextState.opportunityAccounts && internalPricingContextState.opportunityAccounts.length > 0)\r\n ) {\r\n const opportunityAvailablecountries = internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() ? oppAccountAvailableCountries : availableCountries;\r\n const countries: ICountry[] = JSON.parse(sessionStorage.getItem(SessionStorageConsts.countries) || \"{}\");\r\n internalPricingContextState.opportunityAccounts\r\n .filter(x => opportunityAvailablecountries.map(c => c.countryId).indexOf(x.countryId as string) >= 0)\r\n .forEach((value: IOpportunityAccount) => {\r\n if (value.partnerType === PartnerType.MsStore) {\r\n let item: any = {\r\n key: value.countryId,\r\n countryName: countries.find(x => x.countryId === value.countryId)?.countryName,\r\n countryId: countries.find(x => x.countryId === value.countryId)?.countryId,\r\n country: countries.find(x => x.countryId === value.countryId),\r\n partnerType: partnerTypeValues[`${value.partnerType}`],\r\n resellerName: partnerTypeValues[`${value.partnerType}`],\r\n availableRelatedAdds: [],\r\n selectedRelatedAdds: []\r\n }\r\n listItems.push(item);\r\n }\r\n if (value.partnerType !== PartnerType.MsStore) { //MSStore has accounts in View Mode \r\n value.accounts?.forEach((account: IAccount) => {\r\n let availableRelatedAccounts = value?.availableRelatedAccounts && value?.availableRelatedAccounts[account.accountId];\r\n let selectedRelatedAccounts = value?.partnerAccounts && value?.partnerAccounts[account.accountId];\r\n selectedRelatedAccounts = selectedRelatedAccounts?.map((acc: IAccount) => { return { ...acc, action: getPartnerAction(acc, value.countryId, PartnerType.DMP, account.accountId) } });\r\n {\r\n let item: any = {\r\n key: value.countryId + \"_\" + account.accountId + \"_relatedAdds\",\r\n countryName: countries.find(x => x.countryId === value.countryId)?.countryName,\r\n countryId: countries.find(x => x.countryId === value.countryId)?.countryId,\r\n country: countries.find(x => x.countryId === value.countryId),\r\n partnerType: partnerTypeValues[`${value.partnerType}`],\r\n resellerName: account.companyName,\r\n accountId: account.accountId,\r\n availableRelatedAdds: !JavaScriptExtensions.isNullOrUndfinedOrEmpty(availableRelatedAccounts) ? availableRelatedAccounts : [],\r\n selectedRelatedAdds: !JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedRelatedAccounts) ? selectedRelatedAccounts : [],\r\n };\r\n listItems.push(item);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * SkipChannelReason change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onSkipChannelReason = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n internalPricingContextDispatch({ type: CaseActionTypes.skipChannelReasonChanged, dealInputValue: { key: oppdealId, value: newValue } })\r\n }\r\n\r\n //this method is to hide required field error message on view mode\r\n const isRequired = (): boolean => {\r\n return internalPricingContextState.pageMode?.toLowerCase() !== PageMode.View.toLowerCase()\r\n }\r\n\r\n /**\r\n * Related ADD change Callback function.\r\n * @method\r\n * @param {string} cellId Grid Cell ID.\r\n * @param {IDropdownOption[]} selectedAdds List of selected ADDs.\r\n */\r\n const onRelatedADDChange = (cellId: string, selectedAdds: IDropdownOption[]): void => {\r\n let countryID = cellId.split('_')[0];\r\n let dmpAccountID = cellId.split('_')[1];\r\n let newRellers = resellers;\r\n let reseller = newRellers.find(r => r.countryId === countryID && r.partnerType === PartnerType.DMP && r.accounts?.find(a => a.accountId === dmpAccountID));\r\n let newRelatedAccounts = selectedAdds.map((a: IDropdownOption) => a.data as IAccount);\r\n\r\n newRelatedAccounts = newRelatedAccounts.map(x => { return { ...x, action: getPartnerAction(x, countryID, PartnerType.DMP, dmpAccountID) } as IAccount });\r\n if (reseller?.partnerAccounts && newRelatedAccounts) {\r\n reseller!.partnerAccounts[dmpAccountID] = newRelatedAccounts;\r\n }\r\n setResellers(newRellers);\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: [...newRellers, ...distributors, ...msStores] });\r\n }\r\n //disable account when case status is not draft or page mdoe is view\r\n const disableAccount = (partnerAccount: IAccount, accountId: string, countryId: string): boolean => {\r\n var isDisabled = false;\r\n var pageMode = internalPricingContextState.pageMode?.toLowerCase();\r\n var isSaved = isPartnerAccount(countryId, PartnerType.DMP, partnerAccount, accountId)\r\n if (pageMode === PageMode.View.toLowerCase()) {\r\n return true;\r\n }\r\n else if (pageMode === PageMode.Edit.toLowerCase() && internalPricingContextState.opportunityDeals[0].statusCode !== OpportunityDealStatusCodes.Draft\r\n && isSaved) {\r\n isDisabled = true;\r\n }\r\n return isDisabled;\r\n }\r\n\r\n const addDropdownCell = (props: GridCellProps) => {\r\n const excludeDMPList = ['ADR', 'MS Store'];\r\n let selectedAccounts: IAccount[] = props.dataItem.availableRelatedAdds && props.dataItem.selectedRelatedAdds.length > 0 ?\r\n props.dataItem.selectedRelatedAdds :\r\n [];\r\n let countryID = props.dataItem.key.split('_')[0];\r\n let dmpAccountID = props.dataItem.key.split('_')[1];\r\n\r\n selectedAccounts = selectedAccounts.map(x => {\r\n return {\r\n ...x, action: getPartnerAction(x, countryID, PartnerType.DMP, dmpAccountID)\r\n }\r\n })\r\n if (internalPricingContextState.pageMode === PageMode.View || internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.PendingSecondaryReview) {\r\n if (internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Draft) {\r\n selectedAccounts = selectedAccounts.filter(acc => acc.action?.toLowerCase() === ActionType.Add.toLowerCase());\r\n }\r\n else {\r\n selectedAccounts = selectedAccounts.filter(acc => acc.action?.toLowerCase() === ActionType.Created.toLowerCase());\r\n }\r\n\r\n return (excludeDMPList.includes(props.dataItem.partnerType) ? (userRole == UserSubRole.Reseller ? <div></div> : <div className={CssClassConstants.NotAvailableTextMargin}>N/A(<i>only shown for DMP</i>)</div>) : <DropDownGridCell\r\n isMultiSelect={true}\r\n cellId={props.dataItem.key}\r\n selectedValues={selectedAccounts.map((add: IAccount) => ({ key: add.accountId, data: add, disabled: disableAccount(add, props.dataItem.accountId, props.dataItem.country.countryId) } as IDropdownOption))}\r\n data={props.dataItem.availableRelatedAdds && props.dataItem.availableRelatedAdds.length > 0 ?\r\n props.dataItem.availableRelatedAdds.filter((account: any) => selectedAccounts.some(selectedAcc => selectedAcc.accountId === account.accountId)).map((add: IAccount) => ({ key: add.accountId, text: add.companyName, data: add, disabled: disableAccount(add, props.dataItem.accountId, props.dataItem.country.countryId) } as IDropdownOption)) :\r\n []}\r\n itemSelectionUpdate={onRelatedADDChange}\r\n />)\r\n }\r\n else {\r\n return (excludeDMPList.includes(props.dataItem.partnerType) ? <div className={CssClassConstants.NotAvailableTextMargin}>N/A(<i>only shown for DMP</i>)</div> : <DropDownGridCell\r\n isMultiSelect={true}\r\n cellId={props.dataItem.key}\r\n selectedValues={selectedAccounts.map((add: IAccount) => ({ key: add.accountId, data: add, disabled: disableAccount(add, props.dataItem.accountId, props.dataItem.country.countryId) } as IDropdownOption))}\r\n data={props.dataItem.availableRelatedAdds && props.dataItem.availableRelatedAdds.length > 0 ?\r\n props.dataItem.availableRelatedAdds.map((add: IAccount) => ({ key: add.accountId, text: add.companyName, data: add, disabled: disableAccount(add, props.dataItem.accountId, props.dataItem.country.countryId) } as IDropdownOption)) : []}\r\n itemSelectionUpdate={onRelatedADDChange}\r\n />)\r\n }\r\n };\r\n\r\n const getDistributorAccountsByCountry = (country: ICountry) => {\r\n let distributors: IAccount[] = [];\r\n\r\n if (distributorAccounts && distributorAccounts.length > 0) {\r\n if (country.isEUEFTA) {\r\n distributors = distributorAccounts.filter((x: IAccount) => x.countryId === country.countryId\r\n || x.isEueftaAccount);\r\n }\r\n else {\r\n distributors = distributorAccounts.filter((x: IAccount) => x.applicablePriceListGeo === country.applicablePriceListGeo);\r\n }\r\n\r\n distributors = distributors.filter((x: IAccount) => x.productTypeId === internalPricingContextState?.productGroup);\r\n }\r\n return distributors;\r\n }\r\n //specific validation to disable/enable channel structure dropdown: enable in edit mode only when channel structure is skip and status is pending channel. \r\n //otherwise follow as per isFieldDisabled configuration\r\n const channelStructureDisable = (): boolean => {\r\n var isChannelStructureDisable = false;\r\n isChannelStructureDisable =\r\n isFieldDisabled(UIControlsText.ChannelStructureText, internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0].statusCode, undefined, undefined, PageConstants.PropCPStrategictype) ?\r\n (internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.DealPricingApprovedPendingChannelStatus &&\r\n getsavedContext().opportunityDeals[0].channelStructure === ChannelStructure.Skip &&\r\n internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) ? false : true : false\r\n return isChannelStructureDisable;\r\n }\r\n\r\n // method for downloading the excel\r\n const download = useRef<ExcelExport | null>(null);\r\n const excelExport = () => {\r\n if (download && download.current && download.current !== null) {\r\n addExportExcelHeader(download);\r\n }\r\n };\r\n\r\n const onAddADR = () => {\r\n const newGuidId = Guid.newGuid();\r\n const newReseller = { id: newGuidId, partnerType: PartnerType.ADR };\r\n const ADRList = addtionalADRIdList.concat([newGuidId]);\r\n setResellers([...resellers, newReseller]);\r\n setAddtionalADRIdList(ADRList);\r\n }\r\n\r\n const uniqueSelection = resellers.concat(msStores).reduce((unique: any, o) => {\r\n if (!unique.some((obj: any) => obj.countryId === o.countryId && obj.partnerType === o.partnerType)) {\r\n unique.push(o);\r\n }\r\n return unique;\r\n }, []);\r\n\r\n const uniqueEntries = uniqueSelection.map((item: any) => item.id);\r\n const duplicateEntries = resellers.concat(msStores).filter(i => !uniqueEntries.includes(i.id)).map(key => key.id);\r\n\r\n //Holds first reseller id for each country\r\n const firstResellers = _(resellerChannelAccounts).groupBy('countryId')\r\n .map(acc => _.first(acc)?.id);\r\n\r\n useEffect(() => {\r\n //In ChannelStructure.Customer, maintain consolidated list of both MS Store and other partner types\r\n let resellerChannels = [...resellerChannelAccounts].filter(x => [...resellers, ...msStores].map(r => r.id).includes(x.id)) //Delete removed accounts\r\n resellerChannels = resellerChannels.map(r => { return [...resellers, ...msStores].find(x => x.id === r.id) || {} }); //Update existing accounts\r\n let newResellers = resellers.filter(x => !resellerChannels.map(r => r.id).includes(x.id));\r\n resellerChannels = ArrayExtensions.mergeArrays(resellerChannels, newResellers); //Add new resellers\r\n let newMSStores = msStores.filter(x => !resellerChannels.map(m => m.id).includes(x.id));\r\n resellerChannels = ArrayExtensions.mergeArrays(resellerChannels, newMSStores); //Add new MSStores\r\n setResellerChannelAccounts(resellerChannels);\r\n }, [resellers, msStores])\r\n\r\n useEffect(() => {\r\n if (internalPricingContextState.opportunityAccounts) {\r\n\r\n //Validate if selected account is still valid when editing Draft case\r\n if (internalPricingContextState.pageMode === PageMode.Edit\r\n && internalPricingContextState.opportunityDeals.length\r\n && internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.Draft) {\r\n //Reseller account validation\r\n const invalidResellers = internalPricingContextState.opportunityAccounts.filter(a =>a.accounts?.some(x => JavaScriptExtensions.isDefined(x.isActive) && !x.isActive));\r\n\r\n //Distributor account validation\r\n const invalidDistributors = internalPricingContextState.opportunityAccounts.filter(a => a.channelSubType !== ChannelSubType.Requester && a.partnerType === PartnerType.ADD && a.accounts?.some(x => JavaScriptExtensions.isDefined(x.isActive) && !x.isActive));\r\n\r\n let updatedAccounts = [...internalPricingContextState.opportunityAccounts];\r\n let invalidPartners: string = \"\";\r\n if (invalidResellers && invalidResellers.length > 0) {\r\n //Remove the invalid reseller & Show message\r\n updatedAccounts = updatedAccounts.filter(a => !invalidResellers.map(inv => inv?.id).includes(a.id));\r\n if(internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Customer){\r\n updatedAccounts.push(...invalidResellers.map(r => ({ id: r.id, partnerType: r.partnerType, countryId: r.countryId, countryName: r.countryName, isComplete: r.isComplete, contactEmail: r.contactEmail, accounts: [] })));\r\n }\r\n invalidPartners = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"UnavailablePartner\", ErrorMessages.UnavailablePartner) + invalidResellers.map(r => r?.accounts?.map(a => a.companyName)).join(', ');\r\n }\r\n\r\n if (invalidDistributors && invalidDistributors.length > 0) {\r\n //Remove the invalid Distributor & Show message\r\n updatedAccounts = updatedAccounts.filter(a => !invalidDistributors.map(inv => inv?.id).includes(a.id));\r\n invalidPartners = invalidPartners === \"\" ? getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"UnavailablePartner\", ErrorMessages.UnavailablePartner) : invalidPartners + ', ';\r\n invalidPartners = invalidPartners + invalidDistributors.map(r => r?.accounts?.map(a => a.companyName)).join(', ')\r\n }\r\n\r\n if (invalidPartners != \"\") {\r\n setInvalidResellers(invalidPartners);\r\n setIsDialogOpen(true);\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: updatedAccounts });\r\n }\r\n }\r\n }\r\n }, [internalPricingContextState.opportunityAccounts]);\r\n\r\n\r\n useEffect(() => {\r\n if (duplicateEntries.length > 0) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.missingFieldTab, inputArray: [getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)] });\r\n internalPricingContextDispatch({ type: CaseActionTypes.validationErrors, inputArray: [getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DuplicateADRErrorText\", ErrorMessages.DuplicateADRErrorText)] });\r\n } else {\r\n internalPricingContextDispatch({ type: CaseActionTypes.missingFieldTab, inputArray: [] });\r\n internalPricingContextDispatch({ type: CaseActionTypes.validationErrors, inputArray: [] });\r\n }\r\n }, [duplicateEntries.length])\r\n const sortedListItems = _.sortBy(listItems.filter((account: any) => account.partnerType !== PartnerTypeLabel.get(PartnerType.ADD)), ['countryName', 'partnerType', 'resellerName']);\r\n\r\n const distributorNamesCell = (props: GridCellProps) => {\r\n const excludeDMPList = ['MS Store'];\r\n let selectedAccounts: IAccount[] = props.dataItem.availableRelatedAdds && props.dataItem.selectedRelatedAdds.length > 0 ?\r\n props.dataItem.selectedRelatedAdds :\r\n [];\r\n\r\n let countryID = props.dataItem.key.split('_')[0];\r\n let dmpAccountID = props.dataItem.key.split('_')[1];\r\n\r\n selectedAccounts = selectedAccounts.map(x => {\r\n return {\r\n ...x, action: isPartnerAccountPresent(countryID, x, dmpAccountID)\r\n }\r\n })\r\n\r\n selectedAccounts = selectedAccounts.filter(acc => acc.action?.toLowerCase() === ActionType.Created.toLowerCase());\r\n return (excludeDMPList.includes(props.dataItem.partnerType) ? <div className={CssClassConstants.NotAvailableTextMargin}>N/A(<i>only shown for ADR/DMP</i>)</div> :\r\n <td>\r\n {\r\n selectedAccounts.length <= 0 ? <div>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoADDAsscociatedWithADRText\", UIControlsText.NoADDAsscociatedWithADRText)}</div> :\r\n selectedAccounts.length > 1 ? <ul className={CssClassConstants.ResellerDistributorULClass}> {selectedAccounts.map((item: IAccount) => {\r\n return <li className={CssClassConstants.ResellerDistributorListClass}>{item.companyName}</li>\r\n })}</ul> : selectedAccounts.map((item: IAccount) => {\r\n return item.companyName\r\n })\r\n }\r\n </td>\r\n )\r\n };\r\n\r\n const isPartnerAccountPresent = (countryId?: string, accountItem?: IAccount, accountID?: string) => {\r\n var action = ActionType.Add.toString();\r\n var dmpAccount = internalPricingContextState.opportunityAccounts?.find(r => r.countryId === countryId && r.accounts?.find(a => a.accountId === accountID));\r\n if (dmpAccount && dmpAccount?.partnerAccounts) {\r\n var idx = dmpAccount?.partnerAccounts && dmpAccount?.partnerAccounts[accountID as string]?.findIndex(item => item.accountId && item.accountId === accountItem?.accountId);\r\n if (idx !== -1 && dmpAccount?.partnerAccounts[accountID as string]) {\r\n action = dmpAccount?.partnerAccounts && dmpAccount?.partnerAccounts[accountID as string][idx].action || \"\";\r\n }\r\n }\r\n return action\r\n }\r\n\r\n const resellerNamesCell = (props: GridCellProps) => {\r\n const excludeDMPList = ['MS Store'];\r\n let selectedAccounts: IAccount[] = props.dataItem.selectedRelatedResellers && props.dataItem.selectedRelatedResellers.length > 0 ?\r\n props.dataItem.selectedRelatedResellers : []\r\n\r\n return (excludeDMPList.includes(props.dataItem.partnerType) ? <div className={CssClassConstants.NotAvailableTextMargin}>N/A(<i>only shown for ADR/DMP</i>)</div> :\r\n <td>\r\n {\r\n selectedAccounts.length > 1 ? <ul className={CssClassConstants.ResellerDistributorULClass}> {selectedAccounts.map((item: IAccount) => {\r\n return <li className={CssClassConstants.ResellerDistributorListClass}>{item.companyName}</li>\r\n })}</ul> : selectedAccounts.map((item: IAccount) => {\r\n return item.companyName\r\n })\r\n }\r\n </td>\r\n )\r\n };\r\n\r\n let listItemsForADD: any = [];\r\n if (isChannelInfoVisible && isCasToReseller && userRole == UserSubRole.ADD\r\n && (internalPricingContextState.opportunityAccounts && internalPricingContextState.opportunityAccounts.length > 0)\r\n ) {\r\n const countries: ICountry[] = JSON.parse(sessionStorage.getItem(SessionStorageConsts.countries) || \"{}\");\r\n internalPricingContextState.opportunityAccounts\r\n .filter(x => oppAccountAvailableCountries.map(c => c.countryId).indexOf(x.countryId as string) >= 0)\r\n .forEach((value: IOpportunityAccount) => {\r\n if (value.partnerType === PartnerType.MsStore) {\r\n let item: any = {\r\n key: value.countryId,\r\n countryName: countries.find(x => x.countryId === value.countryId)?.countryName,\r\n countryId: countries.find(x => x.countryId === value.countryId)?.countryId,\r\n country: countries.find(x => x.countryId === value.countryId),\r\n partnerType: partnerTypeValues[`${value.partnerType}`],\r\n distributorName: partnerTypeValues[`${value.partnerType}`],\r\n selectedRelatedResellers: []\r\n }\r\n listItemsForADD.push(item);\r\n }\r\n if (value.partnerType !== PartnerType.MsStore) { //MSStore has accounts in View Mode\r\n let partnerAccountIndex = !JavaScriptExtensions.isNullOrUndfinedOrEmpty(value.accounts) && value.accounts?.length && value.accounts?.length > 0 ? value.accounts?.[0]?.accountId as string : \"\";\r\n if (partnerAccountIndex != \"\") {\r\n let addAccount = value.partnerAccounts && value.partnerAccounts.hasOwnProperty(partnerAccountIndex) ? value.partnerAccounts[partnerAccountIndex][0] : null;\r\n let selectedRelatedAccounts = value.accounts;\r\n selectedRelatedAccounts = selectedRelatedAccounts?.map((acc: IAccount) => { return { ...acc } });\r\n {\r\n let item: any = {\r\n key: value.countryId + \"_\" + addAccount?.accountId + \"_relatedResellers\",\r\n countryName: countries.find(x => x.countryId === value.countryId)?.countryName,\r\n countryId: countries.find(x => x.countryId === value.countryId)?.countryId,\r\n country: countries.find(x => x.countryId === value.countryId),\r\n partnerType: partnerTypeValues[`${value.partnerType}`],\r\n distributorName: addAccount?.companyName,\r\n accountId: addAccount?.accountId,\r\n selectedRelatedResellers: !JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedRelatedAccounts) ? selectedRelatedAccounts : [],\r\n };\r\n listItemsForADD.push(item);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n let sortedListItemsForADD = _.sortBy(listItemsForADD.filter((account: any) => account.partnerType !== PartnerTypeLabel.get(PartnerType.ADD)), ['countryName', 'partnerType', 'distributorName']);\r\n\r\n if (isChannelInfoVisible && !isCasToReseller\r\n && userRole === UserSubRole.ADD\r\n && internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()\r\n && (internalPricingContextState.opportunityAccounts && internalPricingContextState.opportunityAccounts.length > 0)) {\r\n\r\n const countries: ICountry[] = JSON.parse(sessionStorage.getItem(SessionStorageConsts.countries) || \"{}\");\r\n const loggedInDistributor = getLoggedinUserRoleDetails().find((userRoleDetails: IUserRoleDetail) => userRoleDetails.userSubRole === UserSubRole.ADD && userRoleDetails.productType?.productId === internalPricingContextState.productGroup);\r\n const distributorName = getDistributorAccountsByCountry(\r\n countries.find(c => c.applicablePriceListGeo === loggedInDistributor.applicablePriceListGeo) as ICountry)?.find(acc => acc.accountId === loggedInDistributor.accountId && acc.productTypeId === loggedInDistributor.productType?.productId)?.companyName;\r\n\r\n availableCountries.forEach((value: ICountry) => {\r\n let resellersList = internalPricingContextState.opportunityAccounts?.filter(acc => acc.countryId === value.countryId) || [];\r\n let availableResellers = resellersList.find(opp => opp.partnerType === PartnerType.Reseller || opp.partnerType === PartnerType.ADR || opp.partnerType === PartnerType.DMP)?.accounts\r\n let resellersOption = AccountAllType.All;\r\n const reseller = resellersList.find(opp => opp.partnerType === PartnerType.Reseller || opp.partnerType === PartnerType.ADR || opp.partnerType === PartnerType.DMP);\r\n\r\n if (reseller && reseller?.isAllSelected) {\r\n resellersOption = reseller?.isAllSelected;\r\n\r\n } else if (value && value?.isEUEFTA) {\r\n resellersOption = AccountAllType.AllEuefta\r\n }\r\n\r\n let allResellers: Array<IAccount> = [];\r\n if (resellerAccounts.current && resellerAccounts.current.length > 0) {\r\n allResellers = resellerAccounts.current.filter(resellerAccount => availableResellers?.find(({ accountId }) => resellerAccount.accountId === accountId));\r\n }\r\n if (allResellers && allResellers.length > 0) {\r\n if (value) {\r\n if (value.isEUEFTA) {\r\n allResellers = allResellers.filter((x: IAccount) => x.countryId === value.countryId\r\n || (x.isEueftaAccount));\r\n }\r\n else {\r\n allResellers = allResellers.filter((x: IAccount) => x.applicablePriceListGeo === value.applicablePriceListGeo);\r\n }\r\n }\r\n }\r\n\r\n if (allResellers && allResellers.length > 0) {\r\n const groupedResellers = _.groupBy(allResellers, ApplicationConstants.PartnerType);\r\n Object.entries(groupedResellers).map(([k, r]) => {\r\n let item: any = {\r\n countryName: value.countryName,\r\n opportunityAccounts: [...resellersList],\r\n resellerAccounts: r,\r\n countries: availableCountries,\r\n customerCountry: value,\r\n productType: props.productTypes,\r\n distiAccounts: distributorAccounts,\r\n distributorName: distributorName,\r\n resellersOption: resellersOption,\r\n partnerType: partnerTypeValues[`${k}`],\r\n selectedADDList: resellersList?.find(opp => opp.partnerType === PartnerType.ADD)\r\n };\r\n listItemsForADD.push(item);\r\n })\r\n } else {\r\n let item: any = {\r\n countryName: value.countryName,\r\n opportunityAccounts: [...resellersList],\r\n resellerAccounts: allResellers,\r\n countries: availableCountries,\r\n customerCountry: value,\r\n productType: props.productTypes,\r\n distiAccounts: distributorAccounts,\r\n distributorName: distributorName,\r\n resellersOption: resellersOption,\r\n partnerType: ApplicationConstants.ADRDMPResellerType,\r\n selectedADDList: resellersList?.find(opp => opp.partnerType === PartnerType.ADD)\r\n };\r\n listItemsForADD.push(item);\r\n }\r\n\r\n });\r\n sortedListItemsForADD = _.sortBy(listItemsForADD.filter((account: any) => account.partnerType !== PartnerTypeLabel.get(PartnerType.ADD)), ['countryName', 'partnerType', 'distributorName']);\r\n }\r\n\r\n const resellerNamesCellForCasToADD = (props: GridCellProps) => {\r\n const excludeDMPList = ['MS Store'];\r\n let resellerOption: number = props.dataItem.resellersOption ? props.dataItem.resellersOption : \"\";\r\n let resellerColumn = <div></div>;\r\n let resellerSelection = props.dataItem.opportunityAccounts && props.dataItem.opportunityAccounts.find((x: any) => x.partnerType === PartnerType.Reseller) as IOpportunityAccount;\r\n let mdppaccessibilityResellerNameLinkId = \"mdppaccessibilityResellerName-\" + props.dataIndex;\r\n\r\n if (resellerSelection) {\r\n resellerSelection.isAllSelected = resellerOption as AccountAllType;\r\n if (resellerSelection.isAllSelected === AccountAllType.All) {\r\n resellerColumn = (\r\n <div>\r\n <Link id={mdppaccessibilityResellerNameLinkId} underline className=\"ps-2\" onClick={() => { viewResellers(false, props.dataItem.customerCountry, mdppaccessibilityResellerNameLinkId) }}><i>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AllResellersText\", UIControlsText.AllResellersText)}</i></Link>\r\n </div>\r\n )\r\n }\r\n else if (resellerSelection.isAllSelected === AccountAllType.AllEuefta) {\r\n resellerColumn = (\r\n <div>\r\n <Link id={mdppaccessibilityResellerNameLinkId} underline className=\"ps-2\" onClick={() => { viewResellers(true, {} as ICountry, mdppaccessibilityResellerNameLinkId) }}><i>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AllResellersEuText\", UIControlsText.AllResellersEuText)}</i></Link>\r\n </div>\r\n )\r\n }\r\n else if (resellerSelection.isAllSelected === AccountAllType.None) {\r\n resellerColumn = (\r\n <div>\r\n {\r\n resellerSelection.accounts.length > 1 ? <ul className={CssClassConstants.ResellerDistributorULClass}> {resellerSelection.accounts.map((item: IAccount) => {\r\n return <li className={CssClassConstants.ResellerDistributorListClass}>{item.companyName}</li>\r\n })}</ul> : resellerSelection.accounts.map((item: IAccount) => {\r\n return item.companyName\r\n })\r\n }\r\n </div>\r\n )\r\n }\r\n }\r\n\r\n return (excludeDMPList.includes(props.dataItem.partnerType) ? <div className={CssClassConstants.NotAvailableTextMargin}>N/A(<i>only shown for ADR/DMP</i>)</div> :\r\n <td>\r\n {resellerColumn}\r\n </td>\r\n )\r\n };\r\n\r\n const distributorNamesCellForCasToADD = (props: GridCellProps) => {\r\n let distiColumn = <div></div>;\r\n let distiSelection = props.dataItem.selectedADDList as IOpportunityAccount;\r\n \r\n if (distiSelection) { \r\n distiColumn = (\r\n <div>\r\n {\r\n distiSelection.accounts && distiSelection.accounts.length > 1 ? <ul className={CssClassConstants.ResellerDistributorULClass}> {distiSelection.accounts.map((item: IAccount) => {\r\n return <li className={CssClassConstants.ResellerDistributorListClass}>{item.companyName}</li>\r\n })}</ul> : distiSelection.accounts?.map((item: IAccount) => {\r\n return item.companyName\r\n })\r\n }\r\n </div>\r\n ) \r\n } \r\n\r\n return (\r\n <td>\r\n {distiColumn}\r\n </td>\r\n )\r\n };\r\n const closeDialog = () => {\r\n setIsDialogOpen(false);\r\n };\r\n\r\n let mdppAccessibilityLocation = mdppaccessibilitySetNavForFocus();\r\n const viewResellers = (isEUEFTA: boolean, resellerCountry: ICountry, mdppaccessibilityLinkId: string) => {\r\n var country: any = resellerCountry?.countryName\r\n\r\n history.push({\r\n pathname: '/viewresellers',\r\n search: '?' + ApplicationConstants.OpportunityNumberParamName + \"=\" + getURLParamValue(ApplicationConstants.OpportunityNumberParamName),\r\n state: { countryName: { country }, isEUEFTA: { isEUEFTA }, mdppAccessibilityNavigation: mdppAccessibilityLocation, mdppAccessibilityLinkId: mdppaccessibilityLinkId }\r\n });\r\n }\r\n return (\r\n <div data-nextgen-parent-group={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)} data-nextgen-parentid={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)}>\r\n <Stack horizontal {...defaultColumnProps} styles={PageStyles.labelStyles}>\r\n {isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelOverviewText\", UIControlsText.ChannelOverviewText), internalPricingContextState.pageMode, ApplicationConstants.CPstrategicPageName) &&\r\n <TextField\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelOverviewText\", UIControlsText.ChannelOverviewText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelOverviewText\", UIControlsText.ChannelOverviewText)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ChannelOverviewPlaceHolderText\", UIControlsText.ChannelOverviewPlaceHolderText)}\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n onGetErrorMessage={getTextFieldErrorMessage}\r\n onChange={onChannelOverviewChange}\r\n multiline\r\n rows={3}\r\n styles={PageStyles.textFieldStylesOneColumn}\r\n value={internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].channelOverview}\r\n maxLength={2000}\r\n required={isRequired()}\r\n disabled={isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelOverviewText\", UIControlsText.ChannelOverviewText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0].statusCode, undefined, undefined, PageConstants.PropCPStrategictype)}\r\n />\r\n }\r\n {isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelStructureText\", UIControlsText.ChannelStructureText), internalPricingContextState.pageMode, ApplicationConstants.CPstrategicPageName) &&\r\n <Dropdown\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelStructureText\", UIControlsText.ChannelStructureText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelStructureText\", UIControlsText.ChannelStructureText)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ChannelStructurePlaceholderText\", UIControlsText.ChannelStructurePlaceholderText)}\r\n options={ChannelStructureOptions}\r\n styles={PageStyles.dropdownStyles}\r\n onChange={onChannelStructureChange}\r\n selectedKey={internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].channelStructure}\r\n disabled={channelStructureDisable()}\r\n required={isRequired()} />\r\n }\r\n </Stack>\r\n <Stack horizontal {...defaultColumnProps}>\r\n {isChannelJustificationVisible && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText), internalPricingContextState.pageMode, ApplicationConstants.CPstrategicPageName) &&\r\n <TextField\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelJustificationText\", UIControlsText.ChannelJustificationText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelJustificationText\", UIControlsText.ChannelJustificationText)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ChannelJustificationPlaceHolderText\", UIControlsText.ChannelJustificationPlaceHolderText)}\r\n styles={DefaultPageStyles.oneColumnWidthStyles}\r\n validateOnFocusOut\r\n multiline\r\n rows={3}\r\n validateOnLoad={false}\r\n onGetErrorMessage={getTextFieldErrorMessage}\r\n onChange={onChannelJustificationChange}\r\n disabled={internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()}\r\n value={internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].channelJustification}\r\n required={isRequired()} />\r\n }\r\n\r\n {isAttachmentVisible && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"Attachment\", UIControlsText.Attachment), internalPricingContextState.pageMode, ApplicationConstants.CPstrategicPageName) &&\r\n <Attachment {...\r\n {\r\n labelText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProofOfPreference\", UIControlsText.ProofOfPreference),\r\n source: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText),\r\n required: isAttachmentRequired,\r\n attachmentList: attachmentList,\r\n handleAttachmentChanges,\r\n opportunityDealStatusCode: internalPricingContextState.opportunityDeals[0]?.statusCode,\r\n pageMode: internalPricingContextState.pageMode,\r\n savedAttachments: getsavedContext().attachments,\r\n disabled: internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview || isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"Attachment\", UIControlsText.Attachment), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, PageConstants.PropCPStrategictype)\r\n }} />\r\n }\r\n\r\n {isSkipReasoningVisible &&\r\n <TextField className={_Styles.SkipTextBoxStyle}\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SkipChannelReasonText\", UIControlsText.SkipChannelReasonText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SkipChannelReasonText\", UIControlsText.SkipChannelReasonText)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"SkipChannelReasonPlaceHolderText\", UIControlsText.SkipChannelReasonPlaceHolderText)}\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n onGetErrorMessage={getTextFieldErrorMessage}\r\n onChange={onSkipChannelReason}\r\n value={internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].skipChannelReason}\r\n maxLength={100}\r\n disabled={internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()}\r\n required={isRequired()} />\r\n }\r\n </Stack>\r\n {isResellerLoading &&\r\n <Stack {...defaultColumnProps}>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingReseller\", UIControlsText.LoadingReseller)} />\r\n </div>\r\n </Stack>\r\n }\r\n\r\n {\r\n isChannelInfoVisible && (!isCasToReseller || userRole == UserSubRole.Reseller) && !isResellerLoading && availableCountries.length > 0 && userRole !== UserRole.MSStore && userRole !== UserSubRole.Reseller && userRole !== UserSubRole.ADD &&\r\n <Stack>\r\n <Label className=\"channelLabels\" styles={PageStyles.labelStyles}>\r\n <Stack horizontal tokens={stackTokens}>\r\n <Label styles={DefaultPageStyles.customWidthStyles} >\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntityCountry\", UIControlsText.LegalEntityCountry)}\r\n </Label>\r\n {isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"ADDRegistration\", UIControlsText.ADDRegistration), internalPricingContextState.pageMode, ApplicationConstants.CPstrategicPageName) &&\r\n <Label styles={DefaultPageStyles.customWidthForStackLabels}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddNameText\", UIControlsText.AddNameText)}\r\n </Label>\r\n }\r\n {hideResellerSectionsInViewModeForReseller(userRole || \"\", internalPricingContextState.pageMode) &&\r\n <Label styles={DefaultPageStyles.oneColumnWidthStyles}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText)}\r\n </Label>\r\n }\r\n {hideResellerSectionsInViewModeForReseller(userRole || \"\", internalPricingContextState.pageMode) &&\r\n <Label className={msStoreClass}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MsStoreText\", UIControlsText.MsStoreText)}\r\n </Label>\r\n }\r\n </Stack>\r\n </Label>\r\n <Stack {...defaultColumnProps}>\r\n {\r\n availableCountries.map(\r\n (k, i) =>\r\n <div className=\"ChannelDistributor\" key={k.countryId}>\r\n <ChannelAccounts {\r\n ...{\r\n id: k.countryId,\r\n opportunityAccounts: [...resellers, ...distributors, ...msStores].filter(acc => acc.countryId === k.countryId),\r\n countries: availableCountries,\r\n resellerAccounts: resellerAccounts.current,\r\n customerCountry: k,\r\n updateAccounts,\r\n productType: props.productTypes,\r\n distiAccounts: distributorAccounts\r\n }\r\n } />\r\n </div>\r\n )\r\n }\r\n </Stack>\r\n </Stack>\r\n }\r\n {\r\n isChannelInfoVisible && isCasToReseller && userRole !== UserSubRole.Reseller && !isResellerLoading && availableCountries.length > 0 && userRole !== UserRole.MSStore && userRole !== UserSubRole.ADD &&\r\n <Stack>\r\n <Label className=\"channelLabels\" styles={PageStyles.labelStyles}>\r\n <Stack horizontal {...defaultColumnProps}>\r\n <Label styles={DefaultPageStyles.customWidthStyles} >\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"LegalEntityCountry\", UIControlsText.LegalEntityCountry)}\r\n </Label>\r\n <Label styles={DefaultPageStyles.customWidthStyles}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerTypeText\", UIControlsText.PartnerTypeText)}\r\n </Label>\r\n <Label styles={DefaultPageStyles.customWidthStyles}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText)}\r\n </Label>\r\n </Stack >\r\n </Label >\r\n <Stack {...defaultColumnProps}>\r\n {\r\n resellerChannelAccounts.map(\r\n (k, i) =>\r\n <div className=\"ChannelReseller\" key={k.id} style={{ margin: 0 }}>\r\n <Reseller {\r\n ...{\r\n id: k.id,\r\n opportunityAccounts: [...resellers, ...msStores].filter(acc => acc.countryId === k.countryId),\r\n countries: availableCountries,\r\n resellerAccounts: resellerAccounts.current,\r\n customerCountry: availableCountries.find(x => x.countryId === k.countryId),\r\n updateAccounts,\r\n productType: props.productTypes,\r\n partnerType: k.partnerType || PartnerType.ADR,\r\n hideDeleteIcon: !firstResellers.includes(`${k.id}`),\r\n disableResellerAndMSStoreField: duplicateEntries.includes(`${k.id}`),\r\n pageMode: internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.PendingSecondaryReview ? PageMode.View : internalPricingContextState?.pageMode,\r\n productGroup: internalPricingContextState?.productGroup,\r\n opportunityDealStatusCode: internalPricingContextState.opportunityDeals[0]?.statusCode,\r\n partnerAccounts: partnerAccounts\r\n }} />\r\n </div>\r\n )\r\n }\r\n {isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdrAddtext\", UIControlsText.AdrAddtext), internalPricingContextState.pageMode, ApplicationConstants.CPstrategicPageName) &&\r\n <ActionButton\r\n className={CssClassConstants.AddItemButtonClass}\r\n iconProps={{ iconName: CssClassConstants.AddItemIconName }}\r\n style={PageStyles.addResellerAlignement}\r\n disabled={isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdrAddtext\", UIControlsText.AdrAddtext), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0].statusCode, undefined, undefined, PageConstants.PropCPStrategictype)}\r\n onClick={() => {\r\n onAddADR()\r\n }}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdrAddtext\", UIControlsText.AdrAddtext)}\r\n </ActionButton>\r\n }\r\n </Stack>\r\n </Stack >\r\n }\r\n {isChannelInfoVisible && isCasToReseller && userRole !== UserSubRole.ADD && sortedListItems.length > 0 && !isResellerLoading && userRole !== UserRole.MSStore && availableCountries.length > 0 && !getUserRole().includes(UserSubRole.ADR) && userRole !== UserSubRole.Reseller &&\r\n <>\r\n {(isCasToReseller && sortedListItems.some((x: any) => x.partnerType === PartnerTypeLabel.get(PartnerType.DMP)) && userRole !== UserSubRole.ADD && userRole !== UserSubRole.Reseller) &&\r\n < Stack {...defaultColumnProps}>\r\n <MessageBar>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerAddDisclaimerText\", UIControlsText.PartnerAddDisclaimerText)}\r\n </MessageBar>\r\n </Stack>\r\n }\r\n <Stack {...defaultColumnProps}>\r\n {internalPricingContextState.pageMode === PageMode.View ? (\r\n <ExcelExport data={sortedListItems} ref={download}>\r\n <Grid data={sortedListItems} style={{ maxHeight: 320 }}>\r\n <GridToolbar>\r\n <PrimaryButton\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DownloadExcel\", UIControlsText.DownloadExcel)}\r\n className=\"ms-auto\"\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DownloadExcel\", UIControlsText.DownloadExcel)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DownloadExcel\", UIControlsText.DownloadExcel)}\r\n onClick={excelExport}\r\n />\r\n </GridToolbar>\r\n <Column field=\"countryName\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntityCountry\", UIControlsText.LegalEntityCountry)} />\r\n <Column field=\"partnerType\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerTypeText\", UIControlsText.PartnerTypeText)} />\r\n <Column field=\"resellerName\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerText\", UIControlsText.ResellerText)} />\r\n <Column title={UIControlsText.DistributorText} cell={addDropdownCell} />\r\n </Grid>\r\n </ExcelExport >\r\n ) :\r\n <Grid data={sortedListItems} style={{ maxHeight: 320 }}>\r\n <Column field=\"countryName\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntityCountry\", UIControlsText.LegalEntityCountry)} />\r\n <Column field=\"partnerType\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerTypeText\", UIControlsText.PartnerTypeText)} />\r\n <Column field=\"resellerName\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerText\", UIControlsText.ResellerText)} />\r\n <Column title={UIControlsText.DistributorText} cell={addDropdownCell} />\r\n </Grid>\r\n }\r\n </Stack >\r\n </>\r\n }\r\n\r\n {\r\n internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Customer && userRole !== UserSubRole.Reseller && userRole !== UserRole.MSStore && !isResellerLoading && resellers.length <= 0 && internalPricingContextState.pageMode?.toLowerCase() !== PageMode.Create.toLowerCase() &&\r\n <MessageBar>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoResellerInfo\", UIControlsText.NoResellerInfo)}\r\n </MessageBar>\r\n }\r\n\r\n {\r\n userRole === UserSubRole.Reseller && internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Customer && !isResellerLoading && (availableCountries.length <= 0 || distributors.length <= 0) && internalPricingContextState.pageMode?.toLowerCase() !== PageMode.Create.toLowerCase() &&\r\n <MessageBar>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoDistributorInfo\", UIControlsText.NoDistributorInfo)}\r\n </MessageBar>\r\n }\r\n\r\n {\r\n userRole === UserSubRole.Reseller && internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Distributor && !isResellerLoading && (availableCountries.length <= 0 || distributors.length <= 0) && internalPricingContextState.pageMode?.toLowerCase() !== PageMode.Create.toLowerCase() &&\r\n <MessageBar>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoChannelInfo\", UIControlsText.NoChannelInfo)}\r\n </MessageBar>\r\n }\r\n\r\n {isChannelInfoVisible && isCasToReseller && userRole === UserSubRole.Reseller && sortedListItems.length > 0 && !isResellerLoading && oppAccountAvailableCountries.length > 0 && internalPricingContextState.pageMode?.toLowerCase() == PageMode.View.toLowerCase() &&\r\n <>\r\n {(isCasToReseller && sortedListItems.some((x: any) => x.partnerType === PartnerTypeLabel.get(PartnerType.DMP)) && userRole !== UserSubRole.Reseller) &&\r\n < Stack>\r\n <MessageBar>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerAddDisclaimerText\", UIControlsText.PartnerAddDisclaimerText)}\r\n </MessageBar>\r\n </Stack>\r\n }\r\n <Stack>\r\n <Grid style={{ maxHeight: \"450px\" }} data={sortedListItems}>\r\n <Column className={CssClassConstants.ChannelGridCellContentAlign} width={200} field=\"countryName\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntityCountry\", UIControlsText.LegalEntityCountry)} />\r\n <Column className={CssClassConstants.ChannelGridCellContentAlign} width={130} field=\"partnerType\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerTypeText\", UIControlsText.PartnerTypeText)} />\r\n <Column className={CssClassConstants.ChannelGridCellContentAlign} field=\"resellerName\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerText\", UIControlsText.ResellerText)} />\r\n <Column className={CssClassConstants.ChannelGridCellContentAlign} title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DistributorText\", UIControlsText.DistributorText)} cell={distributorNamesCell} />\r\n </Grid>\r\n </Stack>\r\n </>\r\n }\r\n {isChannelInfoVisible && isCasToReseller && userRole === UserSubRole.ADD && sortedListItemsForADD.length > 0 && !isResellerLoading && oppAccountAvailableCountries.length > 0 && internalPricingContextState.pageMode?.toLowerCase() == PageMode.View.toLowerCase() &&\r\n <Stack>\r\n <Grid style={{ maxHeight: \"450px\" }} data={sortedListItemsForADD}>\r\n <Column className={CssClassConstants.ChannelGridCellContentAlign} width={200} field=\"countryName\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntityCountry\", UIControlsText.LegalEntityCountry)} />\r\n <Column className={CssClassConstants.ChannelGridCellContentAlign} width={130} field=\"partnerType\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerTypeText\", UIControlsText.PartnerTypeText)} />\r\n <Column className={CssClassConstants.ChannelGridCellContentAlign} title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText)} cell={resellerNamesCell} />\r\n <Column className={CssClassConstants.ChannelGridCellContentAlign} field=\"distributorName\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DistributorText\", UIControlsText.DistributorText)} />\r\n </Grid>\r\n </Stack>\r\n }\r\n {isChannelInfoVisible && !isCasToReseller && userRole === UserSubRole.ADD && sortedListItemsForADD.length > 0 && !isResellerLoading && oppAccountAvailableCountries.length > 0 && internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() &&\r\n <Stack>\r\n <Grid style={{ maxHeight: \"450px\" }} data={sortedListItemsForADD}>\r\n <Column className={CssClassConstants.ChannelGridCellContentAlign} width={200} field=\"countryName\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntityCountry\", UIControlsText.LegalEntityCountry)} />\r\n <Column className={CssClassConstants.ChannelGridCellContentAlign} width={130} field=\"partnerType\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerTypeText\", UIControlsText.PartnerTypeText)} />\r\n <Column className={CssClassConstants.ChannelGridCellContentAlign} title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText)} cell={resellerNamesCellForCasToADD} />\r\n <Column className={CssClassConstants.ChannelGridCellContentAlign} title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DistributorText\", UIControlsText.DistributorText)} cell={distributorNamesCellForCasToADD} />\r\n </Grid>\r\n </Stack>\r\n }\r\n { isDialogOpen && <Dialog style={_Styles} onClose={closeDialog}>\r\n <Stack horizontal={false} tokens={stackTokens} styles={stackStyles}>\r\n <Stack>\r\n <h4> {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"UnavailableChannelPartner\", ErrorMessages.UnavailableChannelPartner)}</h4>\r\n </Stack>\r\n\r\n <Stack>\r\n <Label style={expireDialog} className={_Styles.DialogueCheckBox}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"InvalidResellerAccounts\", ErrorMessages.InvalidResellerAccounts)}\r\n <div>\r\n {invalidResellers}\r\n </div>\r\n </Label>\r\n </Stack>\r\n </Stack>\r\n <DialogActionsBar>\r\n <Stack horizontal horizontalAlign=\"end\" tokens={stackButtonTokens} styles={stackButtonStyles}>\r\n <DefaultButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n onClick={closeDialog}\r\n styles={extendDialogButtonStyles}\r\n />\r\n </Stack>\r\n </DialogActionsBar>\r\n </Dialog>\r\n }\r\n </div >\r\n );\r\n}\r\n\r\nexport default CPStrategicChannel;","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport { CoherenceDialog, CoherenceDialogFooter } from \"@cseo/controls\";\r\nimport { DefaultButton, DialogType, PrimaryButton, Stack, StackItem } from \"office-ui-fabric-react\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { UIControlsText } from \"../../../../content/UIControlsText\";\r\nimport { useInternalPricingContext } from \"../context/internalpricing-context\";\r\nimport { PageStyles } from \"../../common/content/Page.Styles\";\r\nimport { IInternalPricingProgramCommandsProps } from \"../props/IInternalPricingProgramCommandsProps\";\r\nimport { CaseActionTypes } from \"../../common/reducer/CaseActionTypes\";\r\nimport { JavaScriptExtensions } from \"../../../../infrastructure/JavaScriptExtensions\";\r\nimport { nextGenService } from \"../../../../services/NextGenService\";\r\nimport { AffiliationType } from \"../../../../models/AffiliationType\";\r\nimport { ChannelStructure } from \"../../../../models/ChannelStructure\";\r\nimport { ErrorCode } from \"../../../../models/ErrorCode\";\r\nimport { isFieldDisabled, isNullOrEmpty, isFieldVisible, getsavedContext, getUserSession, getRuleValidationMessage, getEntityDataFromSession, isDateNotWithinThreshold, getDealType } from \"../../../../components/shared/common/util\";\r\nimport { PageMode } from \"../../../../models/PageMode\";\r\nimport { OpportunityDealStatusCodes } from \"../../../../models/OpportunityDealStatusCodes\";\r\nimport { ILegalEntity } from \"../../../../models/ILegalEntity\";\r\nimport { CustomerType } from \"../../../../models/CustomerType\";\r\nimport { ErrorMessages } from \"../../../../content/ErrorMessages\";\r\nimport { ActionType } from \"../../../../models/ActionType\";\r\nimport { IOpportunityAccount } from \"../../../../models/IOpportunityAccount\";\r\nimport { OpportunityDealClosureDecisionType } from \"../../../../models/OpportunityDealClosureDecisionType\";\r\nimport { PartnerType } from \"../../../../models/PartnerType\";\r\nimport { SessionStorageConsts } from \"../../../../models/SessionStorageConsts\";\r\nimport { Guid } from \"../../../../infrastructure/Guid\";\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { DealType } from \"../../../../models/DealType\";\r\nimport { ApplicationConstants } from \"../../../../models/ApplicationConstants\";\r\nimport { PageConstants } from \"../../../pageconstants/Constants\";\r\nimport { IDealType } from \"../../../../models/IDealType\";\r\n\r\n/**\r\n * CP Strategic Deal Command Component.\r\n * @function component\r\n */\r\nconst InternalPricingCommands: React.FunctionComponent<IInternalPricingProgramCommandsProps> = (props: IInternalPricingProgramCommandsProps) => {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [hideCancelDialog, setHideCancelDialog] = useState<boolean>(true);\r\n const { internalPricingContextState, internalPricingContextDispatch } = useInternalPricingContext();\r\n const history = useHistory();\r\n const [isDraftSaving, setIsDraftSaving] = useState(false);\r\n const [isCaseSaving, setIsCaseSaving] = useState(false);\r\n const [hideErrorDialog, setHideErrorDialog] = useState<boolean>(true);\r\n const [errorDialogMessage, setErrorDialogMessage] = useState<string>(\"\");\r\n const [saveDraftHidden, setSaveDraftHidden] = useState<boolean>(false);\r\n const [hideOwnerDialog, setHideOwnerDialog] = useState<boolean>(true);\r\n const dealType = (history && history?.location && history?.location?.pathname.indexOf(PageConstants.OTLEDealtype) > 0 ? PageConstants.OTLEDealtype : PageConstants.CPStrategicDealtype) || \"\";\r\n\r\n /**\r\n * Save Draft button click event handler.\r\n * @method\r\n */\r\n const saveDraft = (): void => {\r\n props.saveDraftClickHandler(true)\r\n internalPricingContextDispatch({ type: CaseActionTypes.saveDraft, boolValue: true });\r\n }\r\n\r\n /**\r\n * Submit button click event handler.\r\n * @method\r\n */\r\n const submitCase = (): void => {\r\n props.saveDraftClickHandler(false)\r\n\r\n if (isCaseComplete()) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.submitCase, boolValue: true });\r\n }\r\n }\r\n\r\n /**\r\n * Submit Async button click event handler.\r\n * @method\r\n */\r\n const submitCaseAsync = (): void => {\r\n if (isCaseComplete()) {\r\n dispatchBDReviewNeeded();\r\n internalPricingContextDispatch({ type: CaseActionTypes.submitCaseAsync, boolValue: true });\r\n }\r\n }\r\n\r\n /**\r\n * Using Derived state checks if Submit button is diabled.\r\n * @function\r\n * @returns {boolen}\r\n */\r\n const isCaseComplete = (): boolean | undefined => {\r\n let missingTabs: string[] = new Array<string>();\r\n let validationErrors: string[] = [];\r\n if (!internalPricingContextState || !internalPricingContextState.opportunityDeals\r\n || internalPricingContextState.opportunityDeals.length === 0) {\r\n return false;\r\n }\r\n if (isDealOverviewTabIncomplete(validationErrors)) {\r\n missingTabs.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText));\r\n }\r\n else {\r\n if (isLegalEntitiesTabIncomplete(validationErrors)) {\r\n missingTabs.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntitiesText\", UIControlsText.LegalEntitiesText));\r\n }\r\n if (isChannelTabIncomplete(validationErrors)) {\r\n missingTabs.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText));\r\n }\r\n if (isProductSearchTabIncomplete(validationErrors)) {\r\n missingTabs.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSelection\", UIControlsText.ProductSelection));\r\n }\r\n if (isChannelContactTabIncomplete(validationErrors)) {\r\n let isCpStrategicDeal = internalPricingContextState && internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals.length\r\n && internalPricingContextState.opportunityDeals.some(x => x.dealType && x.dealType.name && x.dealType.name.toLocaleLowerCase().trim() === DealType.CPStrategic.toLocaleLowerCase().trim());\r\n if (isCpStrategicDeal) {\r\n missingTabs.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts))\r\n }\r\n else {\r\n missingTabs.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText));\r\n }\r\n }\r\n }\r\n\r\n if (missingTabs.length > 0) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.casePivotChanged, selectedPivot: missingTabs[0] });\r\n internalPricingContextDispatch({ type: CaseActionTypes.missingFieldTab, inputArray: missingTabs });\r\n internalPricingContextDispatch({ type: CaseActionTypes.validationErrors, inputArray: validationErrors });\r\n return false;\r\n }\r\n else {\r\n internalPricingContextDispatch({ type: CaseActionTypes.missingFieldTab, inputArray: missingTabs });\r\n internalPricingContextDispatch({ type: CaseActionTypes.validationErrors, inputArray: [] });\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Check if all required fields in Deal Overview tab are complete.\r\n * @function\r\n * @returns {boolen}\r\n */\r\n const isDealOverviewTabIncomplete = (errors: string[]): boolean | undefined => {\r\n let isIncomplete = false;\r\n let dealCustomers = internalPricingContextState.opportunityDeals[0].dealCustomers?.filter(c => c.action?.toLowerCase() !== ActionType.Delete.toLowerCase());\r\n let isCpStrategicDeal = internalPricingContextState && internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals.length\r\n && internalPricingContextState.opportunityDeals.some(x => x.dealType && x.dealType.name && x.dealType.name.toLocaleLowerCase().trim() === DealType.CPStrategic.toLocaleLowerCase().trim());\r\n\r\n if (JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.productGroup)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredProductGroup);\r\n }\r\n\r\n if (JavaScriptExtensions.isNullOrUndfinedOrEmpty(internalPricingContextState.isMultiNational)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredDealGeoCoverage);\r\n }\r\n if (!internalPricingContextState.opportunityDeals[0].geoCountries\r\n || internalPricingContextState.opportunityDeals[0].geoCountries.length === 0) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredDealCountries);\r\n }\r\n if (isCpStrategicDeal && internalPricingContextState.isMultiNational && internalPricingContextState.isMultiNational === true &&\r\n internalPricingContextState.opportunityDeals[0].geoCountries && internalPricingContextState?.opportunityDeals[0]?.geoCountries.filter(c => c.action !== ActionType.Delete).length === 1) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.MultipleDealCountriesError);\r\n }\r\n if (isCpStrategicDeal && JavaScriptExtensions.isNullOrUndfinedOrEmpty(internalPricingContextState.opportunityDeals[0].affiliationType)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredAffiliationType);\r\n }\r\n if (isCpStrategicDeal && internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.Others\r\n && JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0].affiliationTypeOthers)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredAffiliationTypeOthers);\r\n }\r\n\r\n if (JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0].dealName)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredDealName);\r\n }\r\n\r\n if (JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0].dealOverview)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredDealOverview);\r\n }\r\n\r\n if (JavaScriptExtensions.isNullOrUndfinedOrEmpty(internalPricingContextState.opportunityDeals[0].expirationDate)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredExpirationDate);\r\n }\r\n\r\n if (!isCpStrategicDeal && !JavaScriptExtensions.isNullOrUndfinedOrEmpty(internalPricingContextState.opportunityDeals[0]?.expirationDate)) {\r\n let expirationDate = internalPricingContextState.opportunityDeals[0].expirationDate;\r\n let internalPricingDealType: IDealType = getDealType(PageConstants.OTLEDealtype);\r\n let error: string | undefined = isDateNotWithinThreshold(expirationDate?.toString(), internalPricingDealType) || \"\";\r\n if (JavaScriptExtensions.isDefined(error) && !isNullOrEmpty(error)) {\r\n isIncomplete = true;\r\n errors.push(error);\r\n }\r\n }\r\n\r\n if (isCpStrategicDeal && JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0].expirationDateJustification)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredExpirationDateJustification);\r\n }\r\n\r\n if (dealCustomers?.filter(primary => primary.customerType === CustomerType.Primary).length === 1 && (JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0].dealVertical) || internalPricingContextState.opportunityDeals[0].dealVertical === Guid.emptyGuid())) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredDealVertical);\r\n }\r\n\r\n if (isCpStrategicDeal && internalPricingContextState.opportunityDeals[0].affiliationType !== AffiliationType.AffiliateCompanies &&\r\n internalPricingContextState.opportunityDeals[0].dealVolume === 0) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.TotalDealVolume);\r\n }\r\n if (internalPricingContextState.opportunityDeals[0].dealContacts && internalPricingContextState.opportunityDeals[0].dealContacts?.length > 0 && internalPricingContextState.opportunityDeals[0].dealContacts?.filter(con => con.action !== ActionType.Delete).filter(con => !con.isComplete).length > 0) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredDealContacts);\r\n }\r\n if (!isCpStrategicDeal && (!JavaScriptExtensions.isDefined(internalPricingContextState?.attachments) || (internalPricingContextState?.attachments && (internalPricingContextState?.attachments?.length < 0 || internalPricingContextState?.attachments?.filter(att => att?.source !== \"Proof of End Customer's Preference\").length < 0)))) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredProofOfAttachementException);\r\n }\r\n else if (!isCpStrategicDeal\r\n && (internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Approved || internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Incomplete)\r\n && internalPricingContextState.opportunityAccounts && internalPricingContextState.opportunityAccounts.length\r\n && internalPricingContextState.opportunityAccounts.filter(x => x.action === ActionType.Add).length > 0\r\n && (internalPricingContextState.attachments && internalPricingContextState.attachments.filter(att => att?.action === ActionType.Add).length === 0\r\n || internalPricingContextState.attachments && internalPricingContextState.attachments.filter(att => att?.action === ActionType.Add && att?.source === \"Proof of End Customer's Preference\").length === 0)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredProofOfAttachementException);\r\n }\r\n if (!isCpStrategicDeal && (JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0]?.dealVertical))) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredDealVertical);\r\n }\r\n if (!isCpStrategicDeal && (JavaScriptExtensions.isNullOrUndfinedOrEmpty(internalPricingContextState.opportunityDeals[0]?.dealVolume) || internalPricingContextState.opportunityDeals[0]?.dealVolume == 0)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.TotalDealVolume);\r\n }\r\n \r\n if (!isCpStrategicDeal && (JavaScriptExtensions.isNullOrUndfinedOrEmpty(internalPricingContextState.opportunityDeals[0]?.dealVolume) || Number(internalPricingContextState.opportunityDeals[0]?.dealVolume) < Number(sessionStorage.getItem(SessionStorageConsts.dealQuantityThresholdConfigs)))) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.DealVolumeThresholdWarningForOTLE);\r\n }\r\n\r\n if (!isCpStrategicDeal && (JavaScriptExtensions.isDefined(internalPricingContextState.opportunityChannelContacts))) {\r\n var dealDetailContacts = internalPricingContextState.opportunityChannelContacts?.filter(p => p.source === \"Deal Details\" && p.action?.toLowerCase() !== ActionType.Delete.toLowerCase());\r\n if (dealDetailContacts && dealDetailContacts.some(cc => !cc.isComplete)) {\r\n errors.push(ErrorMessages.EmailShouldBeMicrosoftDomain)\r\n isIncomplete = true;\r\n }\r\n }\r\n return isIncomplete;\r\n }\r\n\r\n /**\r\n * Check if all required fields in Legal Entities tab are complete.\r\n * @function\r\n * @returns {boolen}\r\n */\r\n const isLegalEntitiesTabIncomplete = (errors: string[]): boolean | ILegalEntity[] => {\r\n let isIncomplete = false;\r\n let isCpStrategicDeal = internalPricingContextState && internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals.length\r\n && internalPricingContextState.opportunityDeals.some(x => x.dealType && x.dealType.name && x.dealType.name.toLocaleLowerCase().trim() === DealType.CPStrategic.toLocaleLowerCase().trim());\r\n\r\n if (!internalPricingContextState.opportunityDeals[0].dealCustomers\r\n || internalPricingContextState.opportunityDeals[0].dealCustomers.length === 0) {\r\n isIncomplete = true;\r\n if (internalPricingContextState.opportunityDeals[0].dealType?.name === DealType.OTLE.toString()) {\r\n errors.push(ErrorMessages.SingleRequiredLegalEntity);\r\n }\r\n else {\r\n errors.push(ErrorMessages.RequiredLegalEntity);\r\n }\r\n return isIncomplete;\r\n }\r\n var dealCustomers = internalPricingContextState.opportunityDeals[0].dealCustomers.filter(c => c.action?.toLowerCase() !== ActionType.Delete.toLowerCase());\r\n let distinctGeoCountryCount = [... new Set(internalPricingContextState.opportunityDeals[0]?.geoCountries && internalPricingContextState?.opportunityDeals[0]?.geoCountries.filter(c => c.action !== ActionType.Delete).map(c => c.countryName))].length;\r\n let distinctLegalEntityCountryCount = [... new Set(dealCustomers.map(c => c.country))].length;\r\n\r\n // Check at least one Legal Entity per each selected Geo Country\r\n if (distinctGeoCountryCount != distinctLegalEntityCountryCount) {\r\n isIncomplete = true;\r\n if (internalPricingContextState.opportunityDeals[0].dealType?.name === DealType.OTLE.toString()) {\r\n errors.push(ErrorMessages.SingleRequiredLegalEntity);\r\n }\r\n else {\r\n errors.push(ErrorMessages.RequiredLegalEntity);\r\n }\r\n }\r\n\r\n if (dealCustomers?.filter(name => JavaScriptExtensions.isEmptyOrNullOrUndefined(name.legalEntityName)).length > 0) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.ValidLegalEntityName);\r\n }\r\n\r\n if (dealCustomers?.filter(primary => primary.customerType === CustomerType.Primary).length === 0) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.PrimaryLegalEntityCustomer);\r\n }\r\n\r\n if (internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies\r\n && dealCustomers?.filter(volume => volume.unitsCommitted === null).length > 0) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.LegalEntityDealVolume);\r\n }\r\n if (internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies &&\r\n internalPricingContextState.opportunityDeals[0].dealVolume === 0) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.TotalDealVolume);\r\n }\r\n //customer domain\r\n if (!isCpStrategicDeal && (!(JavaScriptExtensions.isDefined(internalPricingContextState.opportunityDeals)) ||\r\n (internalPricingContextState?.opportunityDeals && internalPricingContextState?.opportunityDeals[0]?.dealCustomers && isNullOrEmpty(internalPricingContextState?.opportunityDeals[0]?.dealCustomers[0]?.dealCustomerDomain)))) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.DealInfoCustomerDomainRequired);\r\n }\r\n return isIncomplete;\r\n }\r\n\r\n const validatePartnerTypeSelection = (opportunityAccounts: any) => {\r\n const accounts = opportunityAccounts.map((item: any) => ({ countryId: item.countryId, partnerType: item.partnerType }));\r\n if (accounts && accounts.Length <= 1) {\r\n return false;\r\n }\r\n return !!accounts && accounts.map((item: any) => item.countryId + item.partnerType)\r\n .some((value: any, index: number, account: any) => account.indexOf(value) !== account.lastIndexOf(value));\r\n };\r\n\r\n /**\r\n * Check if all required fields in Channel tab are complete.\r\n * @function\r\n * @returns {boolen}\r\n */\r\n const isChannelTabIncomplete = (errors: string[]): boolean | undefined => {\r\n let isIncomplete = false;\r\n let isCpStrategicDeal = internalPricingContextState && internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals.length\r\n && internalPricingContextState.opportunityDeals.some(x => x.dealType && x.dealType.name && x.dealType.name.toLocaleLowerCase().trim() === DealType.CPStrategic.toLocaleLowerCase().trim());\r\n if (isCpStrategicDeal) {\r\n if (internalPricingContextState.opportunityAccounts && internalPricingContextState.opportunityAccounts.length > 1 && validatePartnerTypeSelection(internalPricingContextState.opportunityAccounts)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.DuplicateADRErrorText);\r\n }\r\n if (JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0].channelOverview)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredChannelOverview);\r\n }\r\n\r\n if (JavaScriptExtensions.isNullOrUndfinedOrEmpty(internalPricingContextState.opportunityDeals[0].channelStructure)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredChannelStructure);\r\n }\r\n\r\n if (internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Skip && JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0].skipChannelReason)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredChannelSkip);\r\n }\r\n\r\n if (internalPricingContextState.opportunityDeals[0].isChannelJustificationRequired === true && JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0].channelJustification)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredChannelJustification);\r\n }\r\n\r\n if ((JavaScriptExtensions.isNullOrUndfinedOrEmpty(internalPricingContextState.attachments)\r\n || !internalPricingContextState.attachments?.some(t => t?.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)))\r\n && internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Customer) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredAttachementException);\r\n }\r\n\r\n if ((internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Customer || internalPricingContextState.opportunityDeals[0].channelStructure === ChannelStructure.Distributor)\r\n && internalPricingContextState.opportunityAccounts && internalPricingContextState.opportunityAccounts.length > 0 && internalPricingContextState.opportunityAccounts?.filter(acc => !acc.isComplete).length > 0) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredChannelPartner);\r\n }\r\n }\r\n else {\r\n if (internalPricingContextState.opportunityAccounts) {\r\n if (!internalPricingContextState.opportunityAccounts.some(\r\n x => x.partnerType === PartnerType.ADR || x.partnerType === PartnerType.DMP || x.partnerType === PartnerType.MsStore)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredResellerPartner);\r\n }\r\n\r\n if (internalPricingContextState.opportunityAccounts.some(\r\n x => (x.partnerType === PartnerType.ADR || x.partnerType === PartnerType.DMP))) {\r\n let adrDmpAccounts = internalPricingContextState.opportunityAccounts.filter(\r\n x => (x.partnerType === PartnerType.ADR || x.partnerType === PartnerType.DMP));\r\n if (adrDmpAccounts && adrDmpAccounts.length\r\n && adrDmpAccounts.filter(x => !x.accounts || x.accounts.length === 0).length > 0) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredResellerPartner);\r\n }\r\n }\r\n }\r\n else {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredResellerPartner);\r\n }\r\n }\r\n\r\n return isIncomplete;\r\n }\r\n\r\n /**\r\n * Check if all required fields in Product Search tab are complete.\r\n * @function\r\n * @returns {boolen}\r\n */\r\n const isProductSearchTabIncomplete = (errors: string[]): boolean | undefined => {\r\n let isIncomplete = false;\r\n var products = internalPricingContextState.opportunityDeals[0].products?.filter(p => p.action?.toLowerCase() !== ActionType.Delete.toLowerCase());\r\n\r\n if ((!products) || (products && products.length === 0)) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredProduct);\r\n }\r\n\r\n if (products && internalPricingContextState.opportunityDeals[0].dealType?.name?.toLowerCase() === PageConstants.OTLEDealtype) {\r\n for (let item of products) {\r\n if (item.quantity == 0) {\r\n isIncomplete = true;\r\n errors.push(ErrorMessages.RequiredProductQuantity);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n let distinctGeoCountryCount = [... new Set(internalPricingContextState.opportunityDeals[0]?.geoCountries && internalPricingContextState?.opportunityDeals[0]?.geoCountries.filter(c => c.action !== ActionType.Delete).map(c => c.countryId))].length;\r\n let distinctProductCountryCount = [... new Set(products && products.map(p => p.countryId))].length;\r\n\r\n // Check atleast one product for per selected Geo Country\r\n if (distinctGeoCountryCount != distinctProductCountryCount) {\r\n isIncomplete = true;\r\n if (internalPricingContextState.opportunityDeals[0].dealType?.name === DealType.OTLE.toString()) {\r\n errors.push(ErrorMessages.SingleRequiredProductGeoCountry);\r\n }\r\n else {\r\n errors.push(ErrorMessages.RequiredProductGeoCountry);\r\n }\r\n }\r\n return isIncomplete;\r\n }\r\n\r\n const isChannelContactTabIncomplete = (errors: string[]): boolean | undefined => {\r\n let isIncomplete = false;\r\n var channelContacts = internalPricingContextState.opportunityChannelContacts?.filter(p => p.action?.toLowerCase() !== ActionType.Delete.toLowerCase());\r\n\r\n if (channelContacts && channelContacts.some(cc => !cc.isComplete)) {\r\n errors.push(ErrorMessages.RequiredChannelContactError)\r\n isIncomplete = true;\r\n }\r\n return isIncomplete;\r\n }\r\n\r\n useEffect(() => {\r\n setSaveDraftHidden(internalPricingContextState && internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].statusCode !== OpportunityDealStatusCodes.Draft)\r\n }, [internalPricingContextState && internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].statusCode])\r\n\r\n /**\r\n * Check if a deal needs a review by BD when MS Seller edited a approved deal.\r\n */\r\n const dispatchBDReviewNeeded = (): void => {\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() && (internalPricingContextState.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.Draft && internalPricingContextState.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.Incomplete && internalPricingContextState.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.PendingSecondaryReview)) {\r\n var closureDecision = OpportunityDealClosureDecisionType.Approved;\r\n\r\n var savedData = getsavedContext();\r\n //validate deal customer changed/added on edit to set review needed flag\r\n var newCustomers = internalPricingContextState.opportunityDeals[0].dealCustomers?.\r\n filter(c => c.action?.toLowerCase() === ActionType.Add.toLowerCase() || c.action?.toLowerCase() === ActionType.Update.toLowerCase()).length || 0;\r\n\r\n //validate products added on edit to set review needed flag\r\n var newProducts = internalPricingContextState.opportunityDeals[0].products?.filter(p => p.action?.toLowerCase() === ActionType.Add.toLowerCase()).length || 0;\r\n\r\n //validate products updated on edit to set review needed flag\r\n var approvedProductsQuantityChanged = false;\r\n if (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].dealType?.name?.toLowerCase() === PageConstants.OTLEDealtype) {\r\n var updatedProducts = internalPricingContextState.opportunityDeals[0].products?.filter(p => p.action?.toLowerCase() === ActionType.Update.toLowerCase()) || [];\r\n\r\n let savedProducts = getsavedContext().opportunityDeals[0].products || [];\r\n\r\n if (savedProducts && updatedProducts) {\r\n let savedProductsQuantity = 0;\r\n let updatedProductsQuantity = 0;\r\n\r\n savedProducts.forEach(item => {\r\n if (item.quantity) {\r\n savedProductsQuantity = savedProductsQuantity + item.quantity;\r\n }\r\n });\r\n\r\n updatedProducts.forEach(item => {\r\n if (item.quantity) {\r\n updatedProductsQuantity = updatedProductsQuantity + item.quantity;\r\n }\r\n });\r\n\r\n if (updatedProductsQuantity > 0 && savedProductsQuantity !== updatedProductsQuantity) {\r\n approvedProductsQuantityChanged = true;\r\n }\r\n }\r\n\r\n }\r\n\r\n //validate accounts added on edit to set review needed flag\r\n var newAccounts = internalPricingContextState.opportunityAccounts?.map((item: IOpportunityAccount) => {\r\n var addedItems = item.accounts?.filter(a => a.action?.toLowerCase() === ActionType.Add.toLowerCase()) || [];\r\n if (addedItems && addedItems?.length > 0) {\r\n return addedItems;\r\n }\r\n }).filter(acc => acc?.length).length || 0;\r\n\r\n //validate new ADDs as part of DMP\r\n var addedDMPs = 0;\r\n var newAdds = internalPricingContextState.opportunityAccounts?.filter(acc => acc.partnerType === PartnerType.DMP).filter(pt => pt.accounts)\r\n newAdds?.map((dmps) => {\r\n var accounts = dmps?.accounts;\r\n if (accounts && accounts?.length > 0) {\r\n accounts.map((item) => {\r\n if (dmps.partnerAccounts && dmps.partnerAccounts[item.accountId]) {\r\n var addedLength = dmps.partnerAccounts[item.accountId].filter(pa => pa.action === ActionType.Add).length;\r\n if (addedLength > 0) {\r\n addedDMPs = addedLength;\r\n }\r\n }\r\n })\r\n }\r\n });\r\n\r\n //validate new MsStore added \r\n var newMSStore = internalPricingContextState.opportunityAccounts?.filter(acc => acc.partnerType === PartnerType.MsStore && acc.action === ActionType.Add).length || 0;\r\n\r\n //validate attachments on edit to set review needed flag\r\n var attachements = internalPricingContextState.attachments?.filter(item => item && item.action?.toLowerCase() === ActionType.Add.toLowerCase()).length || 0;\r\n\r\n //validate dealOverview on edit to set review needed flag\r\n var dealOverviewChanged = internalPricingContextState.opportunityDeals[0].dealOverview !== savedData.opportunityDeals[0].dealOverview;\r\n\r\n //validate expirationDate on edit to set review needed flag\r\n var expirationDateChanged = internalPricingContextState.opportunityDeals[0].expirationDate !== savedData.opportunityDeals[0].expirationDate;\r\n\r\n //validate channelJustification on edit to set review needed flag\r\n var channelJustificationChanged = internalPricingContextState.opportunityDeals[0].channelJustification !== savedData.opportunityDeals[0].channelJustification;\r\n\r\n //validate exceptionRequest on edit to set review needed flag\r\n var exceptionRequestChanged = internalPricingContextState.opportunityDeals[0].exceptionRequest !== savedData.opportunityDeals[0].exceptionRequest;\r\n\r\n //validate channelStructure on edit to set review needed flag\r\n var channelStructureChanged = internalPricingContextState.opportunityDeals[0].channelStructure !== savedData.opportunityDeals[0].channelStructure;\r\n\r\n //validate channelOverview on edit to set review needed flag\r\n var channelOverviewChanged = internalPricingContextState.opportunityDeals[0].channelOverview !== savedData.opportunityDeals[0].channelOverview;\r\n\r\n //validate expirationDateJustification on edit to set review needed flag\r\n var expirationDateJustificationChanged = internalPricingContextState.opportunityDeals[0].expirationDateJustification !== savedData.opportunityDeals[0].expirationDateJustification;\r\n\r\n //validate dealVolume on edit to set review needed flag\r\n var dealVolumeChanged = internalPricingContextState.opportunityDeals[0].dealVolume !== savedData.opportunityDeals[0].dealVolume;\r\n\r\n if (newCustomers > 0 || newProducts > 0 || newAccounts > 0 || addedDMPs > 0 || newMSStore > 0 || attachements > 0 || dealOverviewChanged || expirationDateChanged || expirationDateJustificationChanged || dealVolumeChanged || channelJustificationChanged || exceptionRequestChanged || channelOverviewChanged || channelStructureChanged || approvedProductsQuantityChanged) {\r\n closureDecision = OpportunityDealClosureDecisionType.EditPendingReview;\r\n }\r\n internalPricingContextDispatch({ type: CaseActionTypes.closureDecisionChanged, closureDecision: { key: internalPricingContextState.opportunityDeals[0].id, value: closureDecision } });\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n (async () => {\r\n if (internalPricingContextState.submitCaseAsync) {\r\n // don't save again while we are saving\r\n if (isCaseSaving) {\r\n return\r\n }\r\n\r\n try {\r\n setIsCaseSaving(true);\r\n var isSaved = await nextGenService.submitOpportunityAsync(internalPricingContextState);\r\n if (isSaved.status === 200) {\r\n props.setOpportunityNumber(isSaved.data);\r\n props.successPageHandler(true)\r\n }\r\n }\r\n catch (error: any) {\r\n if (error && error.response.status === 422) {\r\n resetLegalEntities(error.response);\r\n }\r\n else {\r\n alert('Error' + error);\r\n }\r\n }\r\n finally {\r\n setIsCaseSaving(false)\r\n internalPricingContextDispatch({ type: CaseActionTypes.submitCaseAsync, boolValue: false });\r\n }\r\n }\r\n })();\r\n\r\n }, [internalPricingContextState.submitCaseAsync])\r\n\r\n useEffect(() => {\r\n (async () => {\r\n if (internalPricingContextState.submitCase) {\r\n // don't save again while we are saving\r\n if (isCaseSaving) {\r\n return\r\n }\r\n\r\n try {\r\n setIsCaseSaving(true);\r\n var isSaved = await nextGenService.submitOpportunity(internalPricingContextState);\r\n if (isSaved.status === 200) {\r\n props.setOpportunityNumber(isSaved.data);\r\n props.successPageHandler(true)\r\n }\r\n }\r\n catch (error: any) {\r\n if (error && error.response.status === 422) {\r\n resetLegalEntities(error.response);\r\n }\r\n else {\r\n alert('Error' + error);\r\n }\r\n }\r\n finally {\r\n setIsCaseSaving(false)\r\n internalPricingContextDispatch({ type: CaseActionTypes.submitCase, boolValue: false });\r\n }\r\n }\r\n })();\r\n\r\n }, [internalPricingContextState.submitCase])\r\n\r\n useEffect(() => {\r\n (async () => {\r\n if (internalPricingContextState.saveDraft) {\r\n // don't save again while we are saving\r\n if (isDraftSaving) {\r\n return\r\n }\r\n\r\n try {\r\n setIsDraftSaving(true);\r\n var isSaved = await nextGenService.saveDraftOpportunity(internalPricingContextState);\r\n if (isSaved.status === 200) {\r\n props.setOpportunityNumber(isSaved.data);\r\n props.successPageHandler(true)\r\n }\r\n }\r\n catch (error: any) {\r\n if (error && error.response.status === 422) {\r\n resetLegalEntities(error.response);\r\n }\r\n else {\r\n alert(error);\r\n }\r\n }\r\n finally {\r\n setIsDraftSaving(false)\r\n internalPricingContextDispatch({ type: CaseActionTypes.saveDraft, boolValue: false });\r\n }\r\n }\r\n })();\r\n\r\n }, [internalPricingContextState.saveDraft])\r\n\r\n useEffect(() => {\r\n switch (internalPricingContextState.errorCode) {\r\n case ErrorCode.InvalidCase:\r\n setErrorDialogMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"InvalidCaseMessage\", UIControlsText.InvalidCaseMessage));\r\n setHideErrorDialog(false);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n if (internalPricingContextState.isNotCaseOwner) {\r\n setHideOwnerDialog(false);\r\n }\r\n\r\n }, [internalPricingContextState.errorCode, internalPricingContextState.isNotCaseOwner])\r\n\r\n //resetLegalEntities - Used to reset/refresh the legal entities grid based if API response returns errors.\r\n const resetLegalEntities = (response: any): void => {\r\n if (!isNullOrEmpty(response.data.opportunityDeals[0].dealCustomers) && response.data.opportunityDeals[0].dealCustomers.length > 0) {\r\n let dealCustomers = response.data.opportunityDeals[0].dealCustomers;\r\n dealCustomers.map((item: ILegalEntity) => { item.unManaged = !item.isManaged });\r\n internalPricingContextDispatch({ type: CaseActionTypes.selectedLegalEntityChanged, dealCustomers: { key: response.data.opportunityDeals[0].id, value: dealCustomers } });\r\n internalPricingContextDispatch({ type: CaseActionTypes.missingFieldTab, inputArray: [getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntitiesText\", UIControlsText.LegalEntitiesText)] });\r\n internalPricingContextDispatch({ type: CaseActionTypes.casePivotChanged, selectedPivot: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntitiesText\", UIControlsText.LegalEntitiesText) });\r\n if (dealCustomers.some((c: ILegalEntity) => c.errors && c.errors?.indexOf(ErrorMessages.PrimaryLegalEntityCustomer) >= 0)) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.validationErrors, inputArray: [ErrorMessages.PrimaryLegalEntityCustomer] });\r\n }\r\n else {\r\n internalPricingContextDispatch({ type: CaseActionTypes.validationErrors, inputArray: [ErrorMessages.LegalEntityValidationError] });\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <Stack>\r\n <Stack\r\n horizontal\r\n styles={PageStyles.commandButtonStyles}\r\n className=\"case-command-buttons\"\r\n data-nextgen-parent-group=\"case-command-buttons\"\r\n data-nextgen-parentid=\"case-command-buttons\">\r\n {isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitText\", UIControlsText.SubmitText), internalPricingContextState.pageMode, dealType) &&\r\n <StackItem>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitText\", UIControlsText.SubmitText)}\r\n styles={PageStyles.commandButtonPadding}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitText\", UIControlsText.SubmitText)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitOppButtonTitle\", UIControlsText.SubmitOppButtonTitle)}\r\n disabled={isCaseSaving ||\r\n isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitText\", UIControlsText.SubmitText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0].statusCode, undefined, internalPricingContextState.asyncProcessStatus, dealType)}\r\n onClick={submitCaseAsync}\r\n allowDisabledFocus={false} />\r\n </StackItem>\r\n }\r\n {isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitText\", UIControlsText.SubmitText), internalPricingContextState.pageMode, dealType) &&\r\n <StackItem>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitSync\", UIControlsText.SubmitSync)}\r\n styles={PageStyles.commandButtonPadding}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitSync\", UIControlsText.SubmitSync)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitSyncOppButtonTitle\", UIControlsText.SubmitSyncOppButtonTitle)}\r\n disabled={isCaseSaving}\r\n onClick={submitCase}\r\n hidden={!internalPricingContextState.debugMode}\r\n allowDisabledFocus={false} />\r\n </StackItem>\r\n }\r\n {isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SaveDraftText\", UIControlsText.SaveDraftText), internalPricingContextState.pageMode, dealType) &&\r\n <StackItem>\r\n <DefaultButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SaveDraftText\", UIControlsText.SaveDraftText)}\r\n styles={PageStyles.commandButtonPadding}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SaveDraftText\", UIControlsText.SaveDraftText)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SaveOppDraftButtonTitle\", UIControlsText.SaveOppDraftButtonTitle)}\r\n disabled={props.areCommandButtonsDisabled() || isDraftSaving ||\r\n isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SaveDraftText\", UIControlsText.SaveDraftText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0].statusCode, undefined, internalPricingContextState.asyncProcessStatus, dealType)}\r\n onClick={saveDraft}\r\n hidden={saveDraftHidden}\r\n allowDisabledFocus={false} />\r\n </StackItem>\r\n }\r\n <StackItem>\r\n {\r\n internalPricingContextState.pageMode?.toLowerCase() !== PageMode.View.toLowerCase() ?\r\n <DefaultButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n styles={PageStyles.commandButtonPadding}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelAndNavigateDashboardTitle\", UIControlsText.CancelAndNavigateDashboardTitle)}\r\n onClick={() => {\r\n if (!internalPricingContextState.productGroup || !JavaScriptExtensions.isDefined(internalPricingContextState.isMultiNational)\r\n || !JavaScriptExtensions.isDefined(internalPricingContextState.opportunityDeals)) {\r\n history.push(\"/homePage\");\r\n }\r\n else {\r\n setHideCancelDialog(false);\r\n }\r\n }} />\r\n : <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n styles={PageStyles.commandButtonPadding}\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n onClick={() => {\r\n history.push(\"/homePage\");\r\n }\r\n } />\r\n }\r\n </StackItem>\r\n </Stack>\r\n <CoherenceDialog\r\n hidden={hideCancelDialog}\r\n onDismiss={() => {\r\n setHideCancelDialog(true);\r\n }}\r\n dialogContentProps={{\r\n type: DialogType.normal,\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ConfirmTitle\", UIControlsText.ConfirmTitle),\r\n subText: getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"ConfirmCancelMessage\", UIControlsText.ConfirmCancelMessage)\r\n }}\r\n >\r\n <CoherenceDialogFooter>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n onClick={() => {\r\n setHideCancelDialog(true);\r\n history.push(\"/dashboard\");\r\n }}\r\n />\r\n <DefaultButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)}\r\n onClick={() => {\r\n setHideCancelDialog(true);\r\n }}\r\n />\r\n </CoherenceDialogFooter>\r\n </CoherenceDialog>\r\n\r\n <CoherenceDialog\r\n hidden={hideErrorDialog}\r\n onDismiss={() => {\r\n setHideErrorDialog(true);\r\n }}\r\n dialogContentProps={{\r\n type: DialogType.normal,\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ErrorText\", UIControlsText.ErrorText),\r\n subText: errorDialogMessage\r\n }}\r\n >\r\n <CoherenceDialogFooter>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NavigateDashboardTitle\", UIControlsText.NavigateDashboardTitle)}\r\n onClick={() => {\r\n setHideErrorDialog(true);\r\n history.push(\"/dashboard\");\r\n }}\r\n />\r\n </CoherenceDialogFooter>\r\n </CoherenceDialog>\r\n\r\n <CoherenceDialog\r\n hidden={hideOwnerDialog}\r\n onDismiss={() => {\r\n setHideOwnerDialog(true);\r\n history.push(\"/dashboard\");\r\n }}\r\n isBlocking={true}\r\n dialogContentProps={{\r\n type: DialogType.normal,\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NotCaseOwnerDialogTitle\", UIControlsText.NotCaseOwnerDialogTitle),\r\n subText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NotCaseOwnerDialogMessage\", UIControlsText.NotCaseOwnerDialogMessage)\r\n }}\r\n >\r\n <CoherenceDialogFooter>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n onClick={() => {\r\n setHideOwnerDialog(true);\r\n history.push(\"/dashboard\");\r\n }}\r\n />\r\n </CoherenceDialogFooter>\r\n </CoherenceDialog>\r\n </Stack >\r\n );\r\n}\r\nexport default InternalPricingCommands;","import { AzSearchStore } from \"azsearchstore\";\r\nimport _, { StringIterator } from \"lodash\";\r\nimport moment from \"moment\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { Guid } from \"../../infrastructure/Guid\";\r\nimport { ApplicationConstants } from \"../../models/ApplicationConstants\";\r\nimport { DealType } from \"../../models/DealType\";\r\nimport { GridType } from \"../../models/GridType\";\r\nimport { ICountry } from \"../../models/ICountry\";\r\nimport { IOpportunityDealProductSku } from \"../../models/IOpportunityDealProductSku\";\r\nimport { OpportunityDealStatusCodes } from \"../../models/OpportunityDealStatusCodes\";\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { IGridProps } from \"./grid/IGridProps\";\r\nimport { IKendoGridColumnProps } from \"./grid/IKendoGridColumnProps\";\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"./common/util\";\r\nimport { MessageTypeText } from \"../../models/MessageTypeText\";\r\nimport { appendFunction } from \"@fluentui/react\";\r\nimport { useState } from \"react\";\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n\r\n/**\r\n * GetCompactProductData method : this method is used in both cp strategic and DR/SP pricing to get compact view data\r\n * @returns {IOpportunityDealProductSku[]}.\r\n */\r\nexport function GetCompactProductData(productData: IOpportunityDealProductSku[], gridConfig: IGridProps, dealTypeName?: string, dealStatusCode?: number): IOpportunityDealProductSku[] {\r\n var discountTitle = ApplicationConstants.DiscountTitle;\r\n if (gridConfig.kendoGridProps.gridName === GridType.DRSPExpandView || gridConfig.kendoGridProps.gridName === GridType.DRSPCompactView) {\r\n discountTitle = dealTypeName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealRegistrationText\", UIControlsText.DealRegistrationText) ? ApplicationConstants.CoreDiscountTitle : ApplicationConstants.DiscountTitle;\r\n }\r\n var apiData: any;\r\n const selectedData: IOpportunityDealProductSku[] = [];\r\n let roles: any\r\n\r\n if (productData.length !== 0) {\r\n apiData = productData;\r\n let i: number = 0;\r\n var startDate: string;\r\n var endDate: string;\r\n const defaultDateRanges = apiData.find((element: { dealPeriodStartDate: Date; }) => element.dealPeriodStartDate !== null);\r\n apiData.forEach((element: IOpportunityDealProductSku) => {\r\n roles = gridConfig.kendoGridProps.columns.filter(col => col.columnTitle === ApplicationConstants.Country)[0].allowColumnView;\r\n var column = {} as IKendoGridColumnProps;\r\n column.childColumns = [];\r\n if (element.hasOwnProperty(ApplicationConstants.DealPeriodDate) === false) {\r\n startDate = moment(defaultDateRanges.dealPeriodStartDate).format('MM/DD/YYYY');\r\n endDate = moment(defaultDateRanges.dealPeriodEndDate).format('MM/DD/YYYY');\r\n } else {\r\n startDate = moment(element.dealPeriodStartDate).format('MM/DD/YYYY');\r\n endDate = moment(element.dealPeriodEndDate).format('MM/DD/YYYY');\r\n }\r\n var dateColumnApi = \"column\" + i;\r\n var validityGridColumn = \"From : \" + startDate + \" To \" + endDate;\r\n if (selectedData.find((data) => data.productFamily === element.productFamily &&\r\n data.country === element.country)) {\r\n var discountValue = dateColumnApi;\r\n // var dynamicDiscountApi=discountApi\r\n if (gridConfig.kendoGridProps.columns.find((c) => c.columnTitle === validityGridColumn)) {\r\n discountValue = gridConfig.kendoGridProps.columns.filter(col => col.columnTitle === validityGridColumn)[0].apiField;\r\n } else {\r\n column.apiField = discountValue\r\n column.columnTitle = validityGridColumn\r\n column.isVisible = dealTypeName != undefined && dealStatusCode != undefined && (dealTypeName === DealType.SpecialPricing || dealTypeName === DealType.DealRegistration) && dealStatusCode === OpportunityDealStatusCodes.Denied ? false : true;\r\n column.allowColumnView = roles;\r\n column.childColumns.push(getGridColumn(discountValue, discountTitle, roles));\r\n gridConfig.kendoGridProps.columns.push(column)\r\n }\r\n var idx = selectedData.findIndex(item => item.productFamily === element.productFamily && item.country === element.country)\r\n var newArray: IOpportunityDealProductSku;\r\n var data = selectedData[idx];\r\n if (element.decisionType === ApplicationConstants.DeniedStatus) {\r\n newArray = {\r\n ...data,\r\n [discountValue]: \"\"\r\n };\r\n } else {\r\n newArray = {\r\n ...data,\r\n [discountValue]: element.discountValue\r\n };\r\n }\r\n selectedData[idx] = newArray\r\n } else {\r\n var discountField = dateColumnApi;\r\n if (gridConfig.kendoGridProps.columns.find((c) => c.columnTitle === validityGridColumn)) {\r\n discountField = gridConfig.kendoGridProps.columns.filter(col => col.columnTitle === validityGridColumn)[0].apiField;\r\n }\r\n else {\r\n column.apiField = discountField;\r\n column.columnTitle = validityGridColumn;\r\n column.isVisible = dealTypeName != undefined && dealStatusCode != undefined && (dealTypeName === DealType.SpecialPricing || dealTypeName === DealType.DealRegistration) && dealStatusCode === OpportunityDealStatusCodes.Denied ? false : true;\r\n column.allowColumnView = roles;\r\n column.childColumns.push(getGridColumn(discountField, discountTitle, roles));\r\n gridConfig.kendoGridProps.columns.push(column)\r\n }\r\n if (element.decisionType === ApplicationConstants.DeniedStatus) {\r\n selectedData.push({\r\n ...element,\r\n [discountField]: \"\",\r\n [getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"IDColumnName\", UIControlsText.IDColumnName)]: Guid.newGuid()\r\n });\r\n } else {\r\n selectedData.push({\r\n ...element,\r\n [discountField]: element.discountValue,\r\n [getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"IDColumnName\", UIControlsText.IDColumnName)]: Guid.newGuid()\r\n });\r\n }\r\n }\r\n i += 1;\r\n });\r\n }\r\n const columnNamesDynamic: Array<string> = [];\r\n // Quantity column is added in the grid for OTLE\r\n gridConfig.kendoGridProps.columns.slice(6)?.forEach(element => {\r\n element.childColumns.forEach(element => {\r\n columnNamesDynamic.push(element.apiField)\r\n });\r\n });\r\n \r\n return AddMissingColumnWithValueForProducts(selectedData,columnNamesDynamic);\r\n}\r\n\r\n/**\r\n * Function to populate discount value as 0 if the column/value doesnt exist in the products API response.\r\n * @param selectedData Data Input Array\r\n * @param columnNamesDynamic dynamic columns names prepared earlier.\r\n * @returns Json Array which renders on the compact and expanded view for products & Pricing tab.\r\n */\r\nfunction AddMissingColumnWithValueForProducts(selectedData :IOpportunityDealProductSku[], columnNamesDynamic : Array<string>)\r\n{\r\n columnNamesDynamic.forEach(column =>{\r\n var i : number = 0\r\n selectedData.forEach(product =>\r\n {\r\n if(column in product == false)\r\n {\r\n var newArray: IOpportunityDealProductSku;\r\n newArray = {\r\n ...product,\r\n [column]: 0\r\n }; \r\n selectedData[i]= newArray \r\n }\r\n i++; \r\n });\r\n });\r\n return selectedData;\r\n}\r\n/**\r\n * GetExpandedProductData method : this method is used in both cp strategic and DR/SP pricing to get expanded view data\r\n * @returns {IOpportunityDealProductSku[]}.\r\n */\r\nexport function GetExpandedProductData(productData: IOpportunityDealProductSku[], gridConfig: IGridProps): IOpportunityDealProductSku[] {\r\n var discountTitle = ApplicationConstants.DiscountTitle;\r\n var showAdditionalDiscounts = false;\r\n if (gridConfig.kendoGridProps.gridName === GridType.DRSPExpandView || gridConfig.kendoGridProps.gridName === GridType.DRSPCompactView) {\r\n let isDrDealType = gridConfig.kendoGridProps.dealType === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealRegistrationText\", UIControlsText.DealRegistrationText);\r\n discountTitle = isDrDealType ? ApplicationConstants.CoreDiscountTitle : ApplicationConstants.DiscountTitle;\r\n showAdditionalDiscounts = isDrDealType;\r\n }\r\n var apiData: any\r\n let i: number = 0;\r\n var startDate: string;\r\n var endDate: string;\r\n let roles: any\r\n const selectedData: IOpportunityDealProductSku[] = [];\r\n if (productData.length !== 0) {\r\n apiData = productData\r\n apiData.forEach((element: IOpportunityDealProductSku) => {\r\n roles = gridConfig.kendoGridProps.columns.filter(col => col.columnTitle === ApplicationConstants.Country)[0].allowColumnView;\r\n var column = {} as IKendoGridColumnProps;\r\n column.childColumns = [];\r\n const defaultDateRanges = apiData.find((element: { dealPeriodStartDate: Date; }) => element.dealPeriodStartDate !== null);\r\n if (element.hasOwnProperty(ApplicationConstants.DealPeriodDate) === false) {\r\n startDate = moment(defaultDateRanges.dealPeriodStartDate).format('MM/DD/YYYY');\r\n endDate = moment(defaultDateRanges.dealPeriodEndDate).format('MM/DD/YYYY');\r\n } else {\r\n startDate = moment(element.dealPeriodStartDate).format('MM/DD/YYYY');\r\n endDate = moment(element.dealPeriodEndDate).format('MM/DD/YYYY');\r\n }\r\n var discountAmount = \"column\" + i;\r\n var discountField = \"discountValue\" + i;\r\n var boosterDiscountField = \"boosterDiscount\" + i;\r\n var totalDiscountField = \"totalDiscount\" + i;\r\n var validityGridColumn = \"From : \" + startDate + \" To \"\r\n + endDate;\r\n if (selectedData.find((data) => data.skuPartNumber === element.skuPartNumber &&\r\n data.country === element.country && data.netMSRP === element.netMSRP && data.currencyName == element.currencyName)) {\r\n var discountAmountFieldext = discountAmount;\r\n let discountFieldext = discountField;\r\n let boosterDiscountFieldext = boosterDiscountField;\r\n let totalDiscountFieldext = totalDiscountField;\r\n if (gridConfig.kendoGridProps.columns.find((c) => c.columnTitle === validityGridColumn)) {\r\n discountAmountFieldext = gridConfig.kendoGridProps.columns.filter(col => col.columnTitle === validityGridColumn)[0].apiField;\r\n var parentColumn = gridConfig.kendoGridProps.columns.find((c) => c.columnTitle === validityGridColumn)\r\n discountFieldext = parentColumn?.childColumns.filter((col) => col.columnTitle === discountTitle)[0].apiField || \"\"\r\n if (showAdditionalDiscounts) {\r\n boosterDiscountFieldext = parentColumn?.childColumns.filter((col) => col.columnTitle === ApplicationConstants.BoosterDiscountTitle)[0].apiField || \"\"\r\n totalDiscountFieldext = parentColumn?.childColumns.filter((col) => col.columnTitle === ApplicationConstants.TotalDiscountTitle)[0].apiField || \"\"\r\n }\r\n } else {\r\n column.apiField = discountAmountFieldext\r\n column.columnTitle = validityGridColumn\r\n column.isVisible = true;\r\n column.allowColumnView = roles;\r\n column.childColumns.push(getGridColumn(discountFieldext, discountTitle, roles));\r\n if (showAdditionalDiscounts) {\r\n column.childColumns.push(getGridColumn(boosterDiscountFieldext, ApplicationConstants.BoosterDiscountTitle, roles));\r\n column.childColumns.push(getGridColumn(totalDiscountFieldext, ApplicationConstants.TotalDiscountTitle, roles));\r\n }\r\n column.childColumns.push(getGridColumn(discountAmountFieldext, ApplicationConstants.DiscountAmountTitle, roles));\r\n gridConfig.kendoGridProps.columns.push(column)\r\n }\r\n var idx = selectedData.findIndex(item => item.skuPartNumber === element.skuPartNumber\r\n && item.country === element.country && item.netMSRP === element.netMSRP)\r\n var newArray = {} as IOpportunityDealProductSku;\r\n var data = selectedData[idx];\r\n var discountNo = showAdditionalDiscounts === true ? (element.discountValue + element.boosterDiscountValue) : element.discountValue;\r\n if (element.decisionType === ApplicationConstants.ApprovedStatus) {\r\n newArray = {\r\n ...data, [discountAmountFieldext]:\r\n Math.round((((discountNo * element.netMSRP) / 100) + Number.EPSILON) * 100) / 100,\r\n [discountFieldext]: element.discountValue,\r\n [boosterDiscountFieldext]: element.boosterDiscountValue,\r\n [totalDiscountFieldext]: element.totalDiscountValue,\r\n [getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"IDColumnName\", UIControlsText.IDColumnName)]: Guid.newGuid()\r\n };\r\n }\r\n selectedData[idx] = newArray\r\n } else {\r\n var discountAmountField = discountAmount;\r\n var discountFieldVal = discountField;\r\n var boosterDiscountFieldVal = boosterDiscountField;\r\n var totalDiscountFieldVal = totalDiscountField;\r\n if (gridConfig.kendoGridProps.columns.find((c) => c.columnTitle === validityGridColumn)) {\r\n discountAmountField = gridConfig.kendoGridProps.columns.filter(col => col.columnTitle === validityGridColumn)[0].apiField;\r\n var parentColumn1 = gridConfig.kendoGridProps.columns.find((c) => c.columnTitle === validityGridColumn)\r\n discountFieldVal = parentColumn1?.childColumns.filter((col) => col.columnTitle === discountTitle)[0].apiField || \"\"\r\n if (showAdditionalDiscounts) {\r\n boosterDiscountFieldVal = parentColumn1?.childColumns.filter((col) => col.columnTitle === ApplicationConstants.BoosterDiscountTitle)[0].apiField || \"\"; \r\n totalDiscountFieldVal = parentColumn1?.childColumns.filter((col) => col.columnTitle === ApplicationConstants.TotalDiscountTitle)[0].apiField || \"\" \r\n }\r\n }\r\n else {\r\n column.apiField = discountAmountField;\r\n column.columnTitle = validityGridColumn;\r\n column.isVisible = true;\r\n column.allowColumnView = roles;\r\n column.childColumns.push(getGridColumn(discountFieldVal, discountTitle, roles));\r\n if (showAdditionalDiscounts) {\r\n column.childColumns.push(getGridColumn(boosterDiscountFieldVal, ApplicationConstants.BoosterDiscountTitle , roles));\r\n column.childColumns.push(getGridColumn(totalDiscountFieldVal, ApplicationConstants.TotalDiscountTitle, roles));\r\n }\r\n column.childColumns.push(getGridColumn(discountAmountField, ApplicationConstants.DiscountAmountTitle, roles));\r\n gridConfig.kendoGridProps.columns.push(column)\r\n }\r\n if (element.decisionType === ApplicationConstants.ApprovedStatus) {\r\n var discountNo = showAdditionalDiscounts === true ? (element.discountValue + element.boosterDiscountValue) : element.discountValue;\r\n selectedData.push({\r\n ...element,\r\n [discountAmountField]:\r\n Math.round((((discountNo * element.netMSRP) / 100) + Number.EPSILON) * 100) / 100,\r\n [discountFieldVal]: element.discountValue,\r\n [boosterDiscountFieldVal]: element.boosterDiscountValue,\r\n [getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"IDColumnName\", UIControlsText.IDColumnName)]: Guid.newGuid(),\r\n [totalDiscountFieldVal]: showAdditionalDiscounts ? element.totalDiscountValue : 0\r\n });\r\n }\r\n }\r\n i += 1;\r\n });\r\n }\r\n \r\n const columnNamesDynamic: Array<string> = [];\r\n gridConfig.kendoGridProps.columns.slice(12)?.forEach(element => {\r\n element.childColumns?.forEach(element => {\r\n columnNamesDynamic.push(element.apiField)\r\n });\r\n });\r\n \r\n \r\n return AddMissingColumnWithValueForProducts(selectedData,columnNamesDynamic);\r\n}\r\n\r\n/**\r\n * formatProductSearchAPIData method : this method is used in both cp strategic and DR/SP pricing to format the data returend by product search index\r\n * @returns {any[]}.\r\n */\r\nexport function formatProductSearchAPIData(resultArray: any[], selectedGeoCountries: ICountry[], PFAMProductSearch: boolean): any[] {\r\n let array: any[] = [];\r\n const allCountries: ICountry[] = JSON.parse(sessionStorage.getItem(SessionStorageConsts.countries) || '{}');\r\n\r\n if (selectedGeoCountries != null && selectedGeoCountries.length > 0) {\r\n let productsForEachEUCountry: any[] = [];\r\n let productsForEachNonEUCountry: any[] = [];\r\n if (selectedGeoCountries.filter(country => country.isEUEFTA === true).length > 0) {\r\n let euCountries: string[] = allCountries.filter(country => country.isEUEFTA === true).map(filteredCountry => { return filteredCountry.countryId });\r\n let euProducts: any[] = resultArray.filter(product => euCountries.includes(product.CountryId));\r\n let distinctEUProducts: any[];\r\n if (PFAMProductSearch) {\r\n distinctEUProducts = _.uniqBy(euProducts, product => [product.PfamName].join());\r\n }\r\n else {\r\n distinctEUProducts = _.uniqBy(euProducts, product => [product.BusinessUnit].join());\r\n }\r\n selectedGeoCountries.filter(geoCountry => euCountries.includes(geoCountry.countryId)).forEach(function (country) {\r\n productsForEachEUCountry = productsForEachEUCountry.concat(distinctEUProducts.map(product => {\r\n var tempProduct = Object.assign({}, product);\r\n tempProduct.CountryId = country.countryId;\r\n tempProduct.Country = country.countryName;\r\n tempProduct.id = Guid.newGuid();\r\n return tempProduct;\r\n }));\r\n });\r\n }\r\n\r\n if (selectedGeoCountries.filter(country => country.isEUEFTA === false).length > 0) {\r\n let nonEUCountries: string[] = allCountries.filter(country => country.isEUEFTA === false).map(filteredCountry => { return filteredCountry.countryId });\r\n let nonEUProducts: any[] = resultArray.filter(product => nonEUCountries.includes(product.CountryId));\r\n selectedGeoCountries.filter(geoCountry => geoCountry.isEUEFTA === false).forEach(function (country) {\r\n productsForEachNonEUCountry = productsForEachNonEUCountry.concat(nonEUProducts.filter(product => product.Country === country.applicablePriceListGeo).map(product => {\r\n var tempProduct = Object.assign({}, product);\r\n tempProduct.CountryId = country.countryId;\r\n tempProduct.Country = country.countryName;\r\n tempProduct.id = Guid.newGuid();\r\n return tempProduct;\r\n }));\r\n });\r\n }\r\n\r\n array = array.concat(productsForEachNonEUCountry);\r\n array = array.concat(productsForEachEUCountry);\r\n }\r\n else {\r\n array = resultArray.map((item: any) => ({ ...item, ['id']: Guid.newGuid() }));\r\n }\r\n\r\n return array;\r\n}\r\n\r\n/**\r\n * formatProductSearchAPIData method : this method is used in both cp strategic and DR/SP pricing to format the data returend by product search index\r\n * @returns {any[]}.\r\n */\r\nexport function setProductSearchStore(indexName: string, searchSuggesterName: string, searchSelectColumn: string, globalSearchFilterExpression: string): AzSearchStore {\r\n const searchStore = new AzSearchStore();\r\n \r\n /** * AZ Search Configuration */\r\n // define search configuration\r\n searchStore.setConfig({\r\n index: indexName,\r\n queryKey: process.env.REACT_APP_SEARCH_API_KEY || \"\",\r\n service: process.env.REACT_APP_SEARCH_API_ENV || \"\",\r\n });\r\n\r\n // set suggester, project some additional fields into the returned suggestions\r\n searchStore.updateSuggestionsParameters({\r\n suggesterName: searchSuggesterName,\r\n select: searchSelectColumn,\r\n top: ApplicationConstants.TopSearchSuggesstions,\r\n fuzzy: ApplicationConstants.IsFuzzy,\r\n filter: globalSearchFilterExpression,\r\n });\r\n const defaultProductSuggestionsProcessor = (results: any): any => {\r\n return results.map(function (result: any) {\r\n result.searchText = result[\"@search.text\"];\r\n return result;\r\n });\r\n };\r\n searchStore.setSuggestionsProcessor(defaultProductSuggestionsProcessor);\r\n \r\n return searchStore;\r\n}\r\n\r\nconst getGridColumn = (apiField: string, title: string, roles: string[]): IKendoGridColumnProps => {\r\n var column = {} as IKendoGridColumnProps;\r\n column.apiField = apiField;\r\n column.columnTitle = title;\r\n column.isVisible = true;\r\n column.allowColumnView = roles;\r\n return column;\r\n}","/**\r\n * Enum for UploadLegalEntity.\r\n * @readonly\r\n * @enum {UploadLegalEntity}\r\n */\r\nexport enum UploadLegalEntity {\r\n\r\n /// <summary>\r\n /// Country\r\n /// </summary>\r\n Country = \"Country\",\r\n\r\n /// <summary>\r\n /// LegalEntityName\r\n /// </summary>\r\n LegalEntityName = \"Legal Entity Name\",\r\n\r\n /// <summary>\r\n /// TPID\r\n /// </summary>\r\n TPID = \"TPID\",\r\n\r\n /// <summary>\r\n /// CRMAccountId\r\n /// </summary>\r\n CustomerAccountId = \"Customer Account Id\",\r\n\r\n /// <summary>\r\n /// Segment\r\n /// </summary>\r\n Segment = \"Customer Segment\",\r\n\r\n /// <summary>\r\n /// CustomerVertical\r\n /// </summary>\r\n CustomerVertical = \"Vertical\",\r\n \r\n /// <summary>\r\n /// DealVolume\r\n /// </summary>\r\n DealVolume = \"Deal Volume\",\r\n\r\n /// <summary>\r\n /// UnmanagedFlag\r\n /// </summary>\r\n UnmanagedFlag = \"Unmanaged Flag\",\r\n\r\n\r\n /// <summary>\r\n /// IsPrimary\r\n /// </summary>\r\n IsPrimary = \"is Primary\",\r\n\r\n /// <summary>\r\n /// Error \r\n /// </summary>\r\n Error = \"error\",\r\n\r\n /// <summary>\r\n /// IsManaged\r\n /// </summary>\r\n IsManaged = \"Is Managed\"\r\n}","import Col from \"react-bootstrap/Col\";\r\nimport React, { useCallback, useEffect, useState } from 'react';\r\nimport { DefaultButton, IDropdownOption, Label, MessageBar, MessageBarType, Spinner } from '@fluentui/react';\r\nimport { IStackTokens, Stack, StackItem } from '@fluentui/react/lib/Stack';\r\nimport { useInternalPricingContext } from '../context/internalpricing-context';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { CaseActionTypes } from '../../common/reducer/CaseActionTypes';\r\nimport { UIControlsText } from '../../../../content/UIControlsText';\r\nimport { nextGenService } from '../../../../services/NextGenService';\r\nimport { IInternalPricingDealDetailsProps } from '../props/IInternalPricingDealDetailsProps';\r\nimport { IKeyValue } from '../../../../models/IKeyValue';\r\nimport { IDealContact } from \"../../../../models/IDealContact\";\r\nimport Row from \"react-bootstrap/Row\";\r\nimport { Splitter, SplitterOnChangeEvent } from \"@progress/kendo-react-layout\";\r\nimport { SearchBar } from \"../../../../components/shared/search/searchbar\";\r\nimport { AzSearchStore } from \"azsearchstore\";\r\nimport { isEditmode, readGridConfig, getsavedContext, isFieldVisible, getSelectedCountry, getURLParamValue, isNullOrEmpty, getLoggedinUserRoleDetails, isAnyEUCountrySelected, getUserRole, getRuleValidationMessage, getEntityDataFromSession } from \"../../../../components/shared/common/util\";\r\nimport { IGridProps } from \"../../../../components/shared/grid/IGridProps\";\r\nimport { ApplicationConstants } from \"../../../../models/ApplicationConstants\";\r\nimport _ from \"lodash\";\r\nimport { ICountry } from \"../../../../models/ICountry\";\r\nimport { _Styles } from \"../../../../content/styles/Page.styles\";\r\nimport NextGenKendoGrid from \"../../../../components/shared/grid/nextgenkendogrid\";\r\nimport { getter } from \"@progress/kendo-react-common\";\r\nimport { IProductFamily } from \"../../../../models/IProductFamily\";\r\nimport { GridType } from \"../../../../models/GridType\";\r\nimport { IFacetData } from \"../../../../models/IFacetData\";\r\nimport { SearchableComboBoxComponent } from \"../../../../components/shared/searchablecombobox/searchablecombobox\";\r\nimport { PageMode } from \"../../../../models/PageMode\";\r\nimport { ActionType } from \"../../../../models/ActionType\";\r\nimport { IKendoGridColumnProps } from \"../../../../components/shared/grid/IKendoGridColumnProps\";\r\nimport { IOpportunityDealProductSku } from \"../../../../models/IOpportunityDealProductSku\";\r\nimport { PanelBar, PanelBarExpandMode, PanelBarItem } from \"@progress/kendo-react-layout\";\r\nimport { IUserRoleDetail } from \"../../../../models/IUserRoleDetail\";\r\nimport { Guid } from \"../../../../infrastructure/Guid\";\r\nimport { OpportunityDealStatusCodes } from \"../../../../models/OpportunityDealStatusCodes\";\r\nimport { UserSubRole } from \"../../../../models/UserSubRole\";\r\nimport { formatProductSearchAPIData, GetCompactProductData, GetExpandedProductData } from \"../../../../components/shared/productDatabyProductview\";\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { PageConstants } from \"../../../pageconstants/Constants\";\r\nimport { IProductType } from \"../../../../models/IProductType\";\r\nimport { DealType } from \"../../../../models/DealType\";\r\nimport { getDealQuantityThresholdValue } from \"../../PricingProgramForm/PricingProgramFormUtils\";\r\nimport InnerHTMLContainer from \"../../../shared/ComponentTypes/InnerHTMLContainer\";\r\nimport { UIControlType } from \"../../../../models/UIControlType\";\r\nimport { ErrorMessages } from \"../../../../content/ErrorMessages\";\r\nimport { useToOverridePanelBarTabIndex} from \"../../../../hooks/accessiblity-hooks\";\r\n\r\nconst stackTokens: IStackTokens = { childrenGap: 20 };\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n/**\r\n * CP Product Search Overview Component.\r\n * @function component\r\n */\r\nconst InternalPricingProductSearch: React.FunctionComponent<IInternalPricingDealDetailsProps> = (props?: IInternalPricingDealDetailsProps) => {\r\n //divide page into two section using kendo spliter\r\n //spliter related: helps to divide page in two sections and define content % here.\r\n const [panes, setPanes] = useState<Array<any>>();\r\n React.useEffect(() => {\r\n setPanes(props?.facetProps?.splitterConfig);\r\n }, []);\r\n const onSplitterChange = (event: SplitterOnChangeEvent) => {\r\n setPanes(event.newState);\r\n var isCollapsed = event.newState[0].collapsed || false;\r\n setSearchFilterButtonText(isCollapsed ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ShowSearchFilter\", UIControlsText.ShowSearchFilter) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"HideSearchFilter\", UIControlsText.HideSearchFilter))\r\n };\r\n const { internalPricingContextState, internalPricingContextDispatch } = useInternalPricingContext();\r\n const [dealContact, setDealContact] = useState<IDealContact[]>([]);\r\n const [contactRoles, setContactRoles] = useState<IKeyValue[]>([]);\r\n const [oppdealId, setOppdealId] = useState<string>((internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].id) || \"\");\r\n const defaultProductSearchStore = new AzSearchStore();\r\n const productSearchStore = new AzSearchStore();\r\n const [productFamilyGridData, setProductFamilyGridData] = useState<IProductFamily[]>([]);\r\n const [selectedSearchValue, setSelectedSearchValue] = useState<string>(\"\");\r\n const [selectedCountries, setSelectedCountries] = useState<ICountry[]>([]);\r\n const [globalSearchFilterExpression, setGlobalSearchFilterExpression] = useState<string>(\"\");\r\n const [productSearchGridConfig, setProductSearchGridConfig] = useState<IGridProps>(readGridConfig(GridType.ProductSearch));\r\n const [productFamilyGridConfig, setProductFamilyGridConfig] = useState<IGridProps>(readGridConfig(GridType.PFAMSelection));\r\n const idGetter = getter(productSearchGridConfig.kendoGridProps.dataItemKey);\r\n const [productTypeId, setProductTypeId] = useState<string>(\"\");\r\n const [expandMode, setExpandMode] = useState<PanelBarExpandMode>(\"single\");\r\n const [selectionState, setSelectionState] = useState<any>({});\r\n const [searchFilterButtonText, setSearchFilterButtonText] = useState<string>(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ShowSearchFilter\", UIControlsText.ShowSearchFilter));\r\n const [hideSearchFilterButton, setHideSearchFilterButton] = useState<boolean>(true);\r\n const [isCPStrategicDeal, setIsCPStrategicDeal] = useState<boolean>(false);\r\n /**\r\n * Facet Constants\r\n */\r\n const [productFamilyCode, setProductFamilyCode] = useState<IFacetData[]>([]);\r\n const [selectedProductFamilyCodeValues, setSelectedProductFamilyCodeValues] = useState<IFacetData[]>([]);\r\n const [pfamName, setPfamName] = useState<IFacetData[]>([]);\r\n const [selectedPfamNameValues, setSelectedPfamNameValues] = useState<IFacetData[]>([]);\r\n const [businessUnit, setBusinessUnit] = useState<IFacetData[]>([]);\r\n const [selectedBusinessUnitValues, setSelectedBusinessUnitValues] = useState<IFacetData[]>([]);\r\n const [skuName, setSkuName] = useState<IFacetData[]>([]);\r\n const [selectedSkuNameValues, setSelectedSkuNameValues] = useState<IFacetData[]>([]);\r\n const [skuPartNumber, setSkuPartNumber] = useState<IFacetData[]>([]);\r\n const [selectedSkuPartNumberValues, setSelectedSkuPartNumberValues] = useState<IFacetData[]>([]);\r\n const [country, setCountry] = useState<IFacetData[]>([]);\r\n const [selectedCountryValues, setSelectedCountryValues] = useState<IFacetData[]>([]);\r\n const [isDefaultSearch, setDefaultSearch] = useState<boolean>(true);\r\n const [isSearchCleared, setSearchCleared] = useState<boolean>();\r\n var allFacetNames = ApplicationConstants.InternalPricingProgramDistinctProductSearchFacetNames;\r\n var allFacets = [selectedProductFamilyCodeValues, selectedPfamNameValues, selectedBusinessUnitValues, selectedCountryValues];\r\n const [pfamExpandConfig, setPfamExpandConfig] = useState<IGridProps>(readGridConfig(GridType.PFAMExpandView));\r\n const [pfamCompactConfig, setPfamCompactConfig] = useState<IGridProps>(readGridConfig(GridType.PFAMCompactView));\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n const oppNumber = getURLParamValue(ApplicationConstants.OpportunityNumberParamName);\r\n const pageMode = (oppNumber && oppNumber.length > 0 ? isNullOrEmpty(sessionStorage.getItem(SessionStorageConsts.pageMode)) ? PageMode.View : sessionStorage.getItem(SessionStorageConsts.pageMode) : PageMode.Create) || PageMode.Create;\r\n const [isProductLoading, setIsProductLoading] = useState<boolean>(false);\r\n const [expandGridVisible, setExpandGridVisible] = useState<boolean>(false);\r\n const [showProductData, setShowProductData] = useState<boolean>(false);\r\n const [showWarningMessage, setShowWarningMessage] = useState<boolean>(true);\r\n const resetWarningMessage = useCallback(() => setShowWarningMessage(false), []);\r\n const [savedProductFamilyGridData, setSavedProductFamilyGridData] = useState<IProductFamily[]>([]);\r\n const [showProductDialog, setShowProductDialog] = useState(false);\r\n const [inactivePFAMs, setInactivePFAMs] = useState<IOpportunityDealProductSku[]>([]);\r\n const [issearchBarVisible, setIsSearchBarVisible] = useState<boolean>(true);\r\n const dealType = internalPricingContextState && internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals.length && internalPricingContextState.opportunityDeals[0].dealType?.name?.toLowerCase() || \"\";\r\n\r\n // Function For Loading data in Expanded View\r\n const expandedGridData = (productData: IOpportunityDealProductSku[]) => {\r\n var selectedData: IOpportunityDealProductSku[] = [];\r\n if (internalPricingContextState?.opportunityDeals[0]?.id) {\r\n if (productData.length !== 0) {\r\n selectedData = GetExpandedProductData(productData, pfamExpandConfig);\r\n\r\n let expandGridConfig = { ...pfamExpandConfig };\r\n expandGridConfig.kendoGridProps.data = selectedData;\r\n expandGridConfig.kendoGridProps.resizable = true;\r\n expandGridConfig.kendoGridProps.totalRecords = selectedData.length;\r\n\r\n // If OTLE deal type hide country column as single country and SKU name column\r\n if(dealType !== undefined && dealType == PageConstants.OTLEDealtype){\r\n expandGridConfig.kendoGridProps.columns.filter(x => x.key == ApplicationConstants.skuName.toLowerCase()).forEach((item) => {\r\n item[\"isVisible\"] = false;\r\n });\r\n expandGridConfig.kendoGridProps.columns.filter(x => x.key == ApplicationConstants.Country.toLowerCase()).forEach((item) => {\r\n item[\"isVisible\"] = false;\r\n });\r\n } \r\n setPfamExpandConfig({ ...expandGridConfig });\r\n }\r\n }\r\n }\r\n\r\n // Function For Loading data in Expanded View\r\n const compactGridData = (productData: IOpportunityDealProductSku[]) => {\r\n var userRole = getUserRole();\r\n var userSubRole = userRole.split(\",\");\r\n var selectedData: IOpportunityDealProductSku[] = [];\r\n var selectedDataRole: IOpportunityDealProductSku[] = [];\r\n\r\n if (internalPricingContextState?.opportunityDeals[0]?.id) {\r\n if (productData.length !== 0) {\r\n selectedData = GetCompactProductData(productData, pfamCompactConfig, isCPStrategicDeal ? DealType.CPStrategic : DealType.OTLE);\r\n // Add quantity column value from context object for OTLE\r\n if (!isCPStrategicDeal)\r\n {\r\n internalPricingContextState?.opportunityDeals[0]?.products?.forEach((element:IProductFamily) => {\r\n var idx = selectedData.findIndex(item => item.productFamilyId === element.productFamilyId && item.country === element.country)\r\n var newArray: IOpportunityDealProductSku;\r\n var data = selectedData[idx]; \r\n newArray = {\r\n ...data,\r\n quantity: element.quantity ? element.quantity : 0,\r\n }; \r\n selectedData[idx] = newArray; \r\n });\r\n }\r\n }\r\n else if (internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Unassigned ||\r\n internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.InProgress) {\r\n if (internalPricingContextState.opportunityDeals[0].products) {\r\n selectedData = internalPricingContextState.opportunityDeals[0].products?.map((item: any) => {\r\n return {\r\n decisionType: item.decisionTypeName,\r\n country: item.country,\r\n productFamily: item.productFamilyName,\r\n businessUnitName: item.businessUnitName,\r\n quantity: item.quantity,\r\n } as IOpportunityDealProductSku\r\n });\r\n }\r\n }\r\n\r\n let compactGridConfig = { ...pfamCompactConfig };\r\n compactGridConfig.kendoGridProps.resizable = true;\r\n if (userSubRole[0] === UserSubRole.MSStoreUser || userSubRole[0] === UserSubRole.ADD\r\n || userSubRole[0] === UserSubRole.ADR || userSubRole[0] === UserSubRole.DMP) {\r\n selectedDataRole = selectedData.filter(item => item.decisionType === ApplicationConstants.ApprovedStatus)\r\n compactGridConfig.kendoGridProps.data = selectedDataRole;\r\n compactGridConfig.kendoGridProps.totalRecords = selectedDataRole.length;\r\n } else {\r\n compactGridConfig.kendoGridProps.data = selectedData;\r\n compactGridConfig.kendoGridProps.totalRecords = selectedData.length;\r\n }\r\n // If OTLE deal type hide country column as single country and show quantity column\r\n if(dealType !== undefined && dealType == PageConstants.OTLEDealtype){\r\n compactGridConfig.kendoGridProps.columns.filter(x => x.key == ApplicationConstants.Country.toLowerCase()).forEach((item) => {\r\n item[\"isVisible\"] = false;\r\n });\r\n compactGridConfig.kendoGridProps.columns.filter(x => x.key == ApplicationConstants.Quantity).forEach((item) => {\r\n item[\"isVisible\"] = true;\r\n });\r\n } \r\n setPfamCompactConfig({ ...compactGridConfig }); \r\n }\r\n }\r\n useEffect(() => {\r\n if (internalPricingContextState?.opportunityDeals[0]?.id && internalPricingContextState.pageMode === PageMode.View) {\r\n var productData: Array<IOpportunityDealProductSku> = []\r\n const fetchProductsData = async () => {\r\n setIsProductLoading(true);\r\n //This method is used to fetch the data from getOpportunityDealDiscountPeriodandSkuMsrp\r\n if (internalPricingContextState?.opportunityDeals[0]?.id) {\r\n let response = await nextGenService.getOpportunityDealDiscountPeriodAndSkuMSRP(internalPricingContextState?.opportunityDeals[0]?.id, userRoleDetails, pageMode, internalPricingContextState?.opportunityDeals[0].dealType?.name || \"\") \r\n productData = response.data;\r\n expandedGridData(productData);\r\n compactGridData(productData);\r\n setIsProductLoading(false);\r\n var caseStatus = (internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.Approved ||\r\n internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.DealPricingApprovedPendingChannelStatus);\r\n setExpandGridVisible(caseStatus);\r\n setShowProductData(true);\r\n }\r\n }\r\n try {\r\n fetchProductsData()\r\n } catch {\r\n setIsProductLoading(false)\r\n }\r\n }\r\n else if (internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview && internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n setIsSearchBarVisible(false);\r\n }\r\n }, [internalPricingContextState?.opportunityDeals[0]?.id]);\r\n\r\n const allCountries: ICountry[] = JSON.parse(sessionStorage.getItem(SessionStorageConsts.countries) || '{}');\r\n var selectedGeoCountries: ICountry[] = internalPricingContextState.opportunityDeals[0].geoCountries || [];\r\n useEffect(() => {\r\n if (internalPricingContextState?.opportunityDeals[0]?.id) {\r\n setOppdealId(internalPricingContextState?.opportunityDeals[0]?.id)\r\n }\r\n if (internalPricingContextState?.opportunityDeals[0].dealContacts) {\r\n setDealContact(internalPricingContextState?.opportunityDeals[0].dealContacts.filter((item) => item.action !== ActionType.Delete));\r\n }\r\n\r\n var contactRoles = sessionStorage.getItem(SessionStorageConsts.contactRoles);\r\n if (!contactRoles) {\r\n nextGenService.getContactRoleOptions()\r\n .then((response) => {\r\n sessionStorage.setItem(SessionStorageConsts.contactRoles, JSON.stringify(response.data));\r\n setContactRoles(response.data);\r\n });\r\n }\r\n else {\r\n setContactRoles(JSON.parse(contactRoles));\r\n }\r\n if (internalPricingContextState.selectedPivot === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSelection\", UIControlsText.ProductSelection) && (\r\n internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() || internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase())) {\r\n if (internalPricingContextState?.opportunityDeals[0]?.products) {\r\n let productFamily: IProductFamily[] = internalPricingContextState?.opportunityDeals[0]?.products as IProductFamily[];\r\n let inActiveproductFamily: IOpportunityDealProductSku[] = internalPricingContextState?.opportunityDeals[0]?.inActiveProducts as IOpportunityDealProductSku[];\r\n let updatedproductFamily = productFamily.map((item: IProductFamily) => ({ ...item, editMode: isSavedProduct(item)}));\r\n\r\n if(inActiveproductFamily && inActiveproductFamily.length > 0 && internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() && internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Draft && internalPricingContextState.opportunityDeals[0].dealType?.name?.toLowerCase() === PageConstants.OTLEDealtype){\r\n updatedproductFamily = updatedproductFamily.filter(x => inActiveproductFamily.some(y => y.productFamilyId !== x.productFamilyId));\r\n setInactivePFAMs(inActiveproductFamily);\r\n setShowProductDialog(true);\r\n }\r\n\r\n setSavedProductFamilyGridData(updatedproductFamily);\r\n updateProductFamilyAndDispatch(updatedproductFamily);\r\n }\r\n }\r\n }, [sessionStorage.getItem(SessionStorageConsts.contactRoles), internalPricingContextState?.opportunityDeals[0]?.id, internalPricingContextState?.opportunityDeals[0].dealContacts, internalPricingContextState.attachments, internalPricingContextState.selectedPivot]);\r\n //to identify legal entity is already saved and show delete button accordingly\r\n const isSavedProduct = (item: IProductFamily): boolean => {\r\n var isSaved = false;\r\n var savedOpportunityData = getsavedContext().opportunityDeals[0];\r\n if (savedOpportunityData && savedOpportunityData.products?.findIndex(c => c.id == item.id) !== -1) {\r\n isSaved = true;\r\n }\r\n return isEditmode(internalPricingContextState.opportunityDeals[0]?.statusCode, isSaved)\r\n }\r\n //oppdealId is not holding the id that is already saved in editmode, so comparing and assigning value accordingtly\r\n const getOppdealId = (): string => {\r\n var dealId = oppdealId;\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n var savedId = getsavedContext().opportunityDeals[0].id;\r\n dealId = (savedId !== oppdealId && savedId) ? savedId : oppdealId;\r\n }\r\n return dealId;\r\n }\r\n //dispatch products\r\n const updateProductFamilyAndDispatch = (productFamily: IProductFamily[]): void => {\r\n let selectedProductFamilyConfig = { ...productFamilyGridConfig };\r\n let totalProductQuantity = 0;\r\n selectedProductFamilyConfig.kendoGridProps.data = productFamily.filter(item => item.action !== ActionType.Delete);\r\n selectedProductFamilyConfig.kendoGridProps.editMode = isEditmode(internalPricingContextState.opportunityDeals[0]?.statusCode);\r\n selectedProductFamilyConfig.kendoGridProps.totalRecords = productFamily.filter(item => item.action !== ActionType.Delete).length;\r\n //to hide clear all button in view mode\r\n if (selectedProductFamilyConfig.kendoGridProps.actionTypes?.showClearAllGridAction) {\r\n selectedProductFamilyConfig.kendoGridProps.actionTypes.showClearAllGridAction = (internalPricingContextState.pageMode === PageMode.View ||\r\n (internalPricingContextState.pageMode === PageMode.Edit && internalPricingContextState.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.Draft)) ? false : true\r\n }\r\n setProductFamilyGridConfig({ ...selectedProductFamilyConfig });\r\n setProductFamilyGridData(productFamily.filter(item => item.action !== ActionType.Delete));\r\n internalPricingContextDispatch({ type: CaseActionTypes.selectedProductFamilyChanged, products: { key: getOppdealId(), value: productFamily } });\r\n\r\n productFamily.forEach(item => {\r\n if(item.quantity){\r\n totalProductQuantity = totalProductQuantity + item.quantity;\r\n }\r\n });\r\n\r\n let dealQuantityThresholdForDealType = Number(sessionStorage.getItem(SessionStorageConsts.dealQuantityThresholdConfigs));\r\n totalProductQuantity >= dealQuantityThresholdForDealType || productFamily.length == 0 ? setShowWarningMessage(false) : setShowWarningMessage(true);\r\n }\r\n //this function used to remove products specific to the country that got removed in deal overview\r\n const resetSelectedData = (dealCountries: string[]): void => {\r\n if (dealCountries) {\r\n var countriesDropdownValues: IDropdownOption[] = getSelectedCountry(dealCountries);\r\n var newSelection: Array<IProductFamily> = [];\r\n countriesDropdownValues.forEach((countryItem: IDropdownOption) => {\r\n internalPricingContextState.opportunityDeals[0].products?.filter(\r\n (selectedItem: IProductFamily) => selectedItem.country === countryItem.text)\r\n .map((filteredItem: IProductFamily) => {\r\n newSelection.push(filteredItem);\r\n });\r\n });\r\n updateProductFamilyAndDispatch(newSelection);\r\n }\r\n };\r\n setSearchStore();\r\n useEffect(() => {\r\n if (isDefaultSearch) {\r\n setDefaultSearchStore();\r\n if(isCPStrategicDeal){\r\n allFacetNames = ApplicationConstants.InternalPricingProgramDistinctProductSearchFacetNames;\r\n allFacets = [selectedProductFamilyCodeValues, selectedPfamNameValues, selectedBusinessUnitValues, selectedCountryValues];\r\n }\r\n else{\r\n allFacetNames = ApplicationConstants.DistinctProductSearchFacetNames;\r\n allFacets = [selectedPfamNameValues, selectedBusinessUnitValues];\r\n }\r\n }\r\n else {\r\n setSearchStore();\r\n if(isCPStrategicDeal){\r\n allFacetNames = ApplicationConstants.InternalPricingProgramProductSearchFacetNames;\r\n allFacets = [selectedProductFamilyCodeValues, selectedPfamNameValues, selectedBusinessUnitValues, selectedSkuNameValues, selectedSkuPartNumberValues, selectedCountryValues];\r\n }\r\n else{\r\n allFacetNames = ApplicationConstants.ProductSearchFacetNames;\r\n allFacets = [selectedPfamNameValues, selectedBusinessUnitValues, selectedSkuNameValues, selectedSkuPartNumberValues];\r\n }\r\n }\r\n }, [isDefaultSearch]);\r\n\r\n useEffect(() => {\r\n if(internalPricingContextState.opportunityDeals[0].dealType?.name?.toLowerCase() === PageConstants.OTLEDealtype && internalPricingContextState.productGroup && internalPricingContextState.opportunityDeals[0].geoCountries)\r\n {\r\n const dealQuantityThresholdForDealType : number = getDealQuantityThresholdValue(internalPricingContextState.opportunityDeals, internalPricingContextState.productGroup, internalPricingContextState.opportunityDeals[0].dealType?.name.toLowerCase() || \"\");\r\n sessionStorage.setItem(SessionStorageConsts.dealQuantityThresholdConfigs, dealQuantityThresholdForDealType.toString());\r\n }\r\n setDefaultSearch(true);\r\n setDefaultSearchStore();\r\n setProductTypeId(internalPricingContextState.productGroup || \"\");\r\n if(internalPricingContextState.opportunityDeals[0].dealType?.name === PageConstants.CPStrategicDealtype){\r\n setIsCPStrategicDeal(true);\r\n }\r\n else{\r\n setIsCPStrategicDeal(false);\r\n }\r\n setCountriesForSearch(selectedGeoCountries?.filter(c => c.action !== ActionType.Delete) || [], true, internalPricingContextState.productGroup || \"\");\r\n if (selectedGeoCountries.length > 0) {\r\n resetSelectedData(selectedGeoCountries?.filter(c => c.action !== ActionType.Delete).map(x => x.countryId) || []);\r\n }\r\n }, [internalPricingContextState.opportunityDeals[0].geoCountries, internalPricingContextState.productGroup]);\r\n\r\n useEffect(() => {\r\n if (selectedSearchValue != \"\" || isSearchCleared) {\r\n if (isSearchCleared) {\r\n setDefaultSearchStore();\r\n setSearchCleared(false);\r\n }\r\n search(selectedCountries, productTypeId, isDefaultSearch);\r\n }\r\n }, [selectedSearchValue, isSearchCleared]);\r\n\r\n // Accessibility - Ensures correct tab index is set for the panel bar list items\r\n useToOverridePanelBarTabIndex();\r\n\r\n function setDefaultSearchStore() {\r\n /** * AZ Search Configuration */\r\n // define search configuration\r\n defaultProductSearchStore.setConfig({\r\n index: ApplicationConstants.DistinctProductSearchIndex,\r\n queryKey: process.env.REACT_APP_SEARCH_API_KEY || \"\",\r\n service: process.env.REACT_APP_SEARCH_API_ENV || \"\",\r\n });\r\n\r\n // set suggester, project some additional fields into the returned suggestions\r\n defaultProductSearchStore.updateSuggestionsParameters({\r\n suggesterName: ApplicationConstants.DistinctProductSearchSuggesterName,\r\n select: ApplicationConstants.ProductSearchSelectColumn,\r\n top: ApplicationConstants.TopSearchSuggesstions,\r\n fuzzy: ApplicationConstants.IsFuzzy,\r\n filter: globalSearchFilterExpression,\r\n });\r\n const defaultProductSuggestionsProcessor = (results: any): any => {\r\n return results.map(function (result: any) {\r\n result.searchText = result[\"@search.text\"];\r\n return result;\r\n });\r\n };\r\n defaultProductSearchStore.setSuggestionsProcessor(defaultProductSuggestionsProcessor);\r\n }\r\n\r\n function setSearchStore() {\r\n /** * AZ Search Configuration */\r\n // define search configuration\r\n productSearchStore.setConfig({\r\n index: ApplicationConstants.ProductSearchIndex,\r\n queryKey: process.env.REACT_APP_SEARCH_API_KEY || \"\",\r\n service: process.env.REACT_APP_SEARCH_API_ENV || \"\",\r\n });\r\n\r\n // set suggester, project some additional fields into the returned suggestions\r\n productSearchStore.updateSuggestionsParameters({\r\n suggesterName: ApplicationConstants.ProductSearchSuggesterName,\r\n select: ApplicationConstants.ProductSearchSelectColumn,\r\n top: ApplicationConstants.TopSearchSuggesstions,\r\n fuzzy: ApplicationConstants.IsFuzzy,\r\n filter: globalSearchFilterExpression,\r\n });\r\n const productSuggestionsProcessor = (results: any): any => {\r\n return results.map(function (result: any) {\r\n result.searchText = result[\"@search.text\"];\r\n return result;\r\n });\r\n };\r\n productSearchStore.setSuggestionsProcessor(productSuggestionsProcessor);\r\n }\r\n\r\n if (internalPricingContextState.dataLoading || isProductLoading) {\r\n return (\r\n <Stack>\r\n <div>\r\n <Spinner label=\"Getting Data...\" />\r\n </div>\r\n </Stack>\r\n );\r\n }\r\n\r\n //invoke search on click of search button\r\n function onSubmit(selectedValue: string) {\r\n setDefaultSearch(false);\r\n setSelectedSearchValue(selectedValue);\r\n setSearchFilterButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ShowSearchFilter\", UIControlsText.ShowSearchFilter))\r\n setPanes(props?.facetProps?.splitterConfig);\r\n setHideSearchFilterButton(false);\r\n };\r\n\r\n //invoke clear on click of clear button\r\n function onClear() {\r\n setDefaultSearch(true);\r\n setSelectedSearchValue(\"\");\r\n setSearchCleared(true);\r\n for (let i = 0; i < allFacetNames.length; i++) {\r\n setComboBoxDatasource([], allFacetNames[i]);\r\n setSelectedValuesDatasource([], allFacetNames[i]);\r\n }\r\n setPanes(props?.facetProps?.splitterConfig);\r\n setSearchFilterButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ShowSearchFilter\", UIControlsText.ShowSearchFilter))\r\n setHideSearchFilterButton(true);\r\n };\r\n\r\n //update country dropdown based on geo country selection in deal overview tab\r\n function setCountriesForSearch(dealCountries: ICountry[], isDefaultSearch: boolean, productTypeId: string) {\r\n setSelectedCountries(dealCountries);\r\n search(dealCountries, productTypeId, isDefaultSearch);\r\n };\r\n\r\n //Search for Products \r\n function search(selectedCountries: ICountry[], productTypeId: string, isDefaultSearch: boolean) {\r\n if (internalPricingContextState.pageMode?.toLowerCase() !== PageMode.View.toLowerCase()) {\r\n let nonEUCounties: ICountry[] = [];\r\n selectedCountries.forEach(function (country) {\r\n let selectedGeoCountry = allCountries.find(allCountry => allCountry.countryName === country.applicablePriceListGeo);\r\n if (selectedGeoCountry != null) {\r\n nonEUCounties.push(selectedGeoCountry);\r\n }\r\n });\r\n nonEUCounties = _.uniqBy(nonEUCounties, \"countryId\");\r\n let filterStringExpression = \"\";\r\n\r\n if (isDefaultSearch) {\r\n if(isCPStrategicDeal){\r\n allFacetNames = ApplicationConstants.InternalPricingProgramDistinctProductSearchFacetNames;\r\n allFacets = [selectedProductFamilyCodeValues, selectedPfamNameValues, selectedBusinessUnitValues, selectedCountryValues];\r\n }\r\n else{\r\n allFacetNames = ApplicationConstants.DistinctProductSearchFacetNames;\r\n allFacets = [selectedPfamNameValues, selectedBusinessUnitValues];\r\n }\r\n }\r\n else {\r\n if(isCPStrategicDeal){\r\n allFacetNames = ApplicationConstants.InternalPricingProgramProductSearchFacetNames;\r\n allFacets = [selectedProductFamilyCodeValues, selectedPfamNameValues, selectedBusinessUnitValues, selectedSkuNameValues, selectedSkuPartNumberValues, selectedCountryValues];\r\n }\r\n else{\r\n allFacetNames = ApplicationConstants.ProductSearchFacetNames;\r\n allFacets = [selectedPfamNameValues, selectedBusinessUnitValues, selectedSkuNameValues, selectedSkuPartNumberValues];\r\n }\r\n }\r\n\r\n if (selectedCountries.length > 0) {\r\n filterStringExpression = props?.facetProps?.createGlobalFilterExpression([ApplicationConstants.CustomerSearchCountryGlobalIndex, ApplicationConstants.ProductSearchProductTypeId], [nonEUCounties.map(item => item.countryName), [productTypeId]], isAnyEUCountrySelected(internalPricingContextState.opportunityDeals[0].geoCountries || [])) || \"\";\r\n if(isCPStrategicDeal){\r\n filterStringExpression += (\"(\") + ApplicationConstants.ProductSearchApplicableDeals + \"/any(d: d eq \" + ApplicationConstants.CPStrategicApplicableDeal + \")) \" + ApplicationConstants.AndOperator;\r\n }\r\n else{\r\n filterStringExpression += (\"(\") + ApplicationConstants.ProductSearchApplicableDeals + \"/any(d: d eq \" + ApplicationConstants.OTLEApplicableDeal + \")) \" + ApplicationConstants.AndOperator;\r\n }\r\n filterStringExpression += (\" (\") + ApplicationConstants.ProductSearchChannelType + \" \" + ApplicationConstants.Eq + \" \" + ApplicationConstants.IndirectChannelType + \")\" + \" \" + ApplicationConstants.AndOperator;\r\n filterStringExpression += (\" (\") + ApplicationConstants.InternalDealVisibility + \" \" + ApplicationConstants.Ne + \" \" + false + \" )\";\r\n\r\n if (filterStringExpression.substring(filterStringExpression.length - 4) == 'and ') {\r\n filterStringExpression = filterStringExpression.slice(0, -4);\r\n }\r\n\r\n //Set the global search filter expression\r\n setGlobalSearchFilterExpression(filterStringExpression);\r\n getProductSearchData(filterStringExpression, 0, \"\", [], selectedCountries, isDefaultSearch);\r\n }\r\n }\r\n }\r\n\r\n //this function used to initiate product search api call and returns data according to the user selected filter\r\n async function getProductSearchData(filterStringExpression: string, skip: number, facetName: string, selectedValue: any[], dealCountries: ICountry[], isDefaultSearch: boolean) {\r\n try {\r\n let indexURL: string = \"\";\r\n let searchStore = new AzSearchStore();\r\n if (isDefaultSearch) {\r\n searchStore = defaultProductSearchStore;\r\n indexURL = process.env.REACT_APP_SEARCH_API_URL_ENV + ApplicationConstants.DistinctProductSearchIndexApiUrl || \"\";\r\n }\r\n else {\r\n searchStore = productSearchStore;\r\n indexURL = process.env.REACT_APP_SEARCH_API_URL_ENV + ApplicationConstants.ProductSearchIndexApi_Url || \"\"; \r\n }\r\n let facetString = props?.facetProps?.facetList(allFacetNames);\r\n if (dealCountries.length > 0) {\r\n searchStore.setGlobalFilter(\r\n ApplicationConstants.ProductSearchGlobalFilter,\r\n filterStringExpression\r\n );\r\n }\r\n searchStore.updateSearchParameters({ count: true, skip: skip, searchMode: \"all\", });\r\n searchStore.setInput(selectedSearchValue);\r\n let apiReturnedData = await Promise.resolve(nextGenService.getProductSearchResults(indexURL, filterStringExpression, selectedSearchValue, skip, facetString || [], ApplicationConstants.CustomerSearchTopThreshold));\r\n\r\n if (apiReturnedData.status === 200) {\r\n let productsCount = (apiReturnedData.data as { [key: string]: any })[\"@odata.count\"] as number;\r\n let productsSearchResultsData = [...(apiReturnedData.data as { [key: string]: any })[\"value\"] as string];\r\n if (productsCount > productsSearchResultsData.length) {\r\n for (\r\n let i = 1;\r\n i < Math.ceil(productsCount / ApplicationConstants.CustomerSearchTopThreshold);\r\n i++\r\n ) {\r\n apiReturnedData = await Promise.resolve(nextGenService.getProductSearchResults(indexURL, filterStringExpression, selectedSearchValue, i * ApplicationConstants.CustomerSearchTopThreshold, facetString || [], ApplicationConstants.CustomerSearchTopThreshold));\r\n productsSearchResultsData.push(...(apiReturnedData.data as { [key: string]: any })[\"value\"] as string);\r\n }\r\n }\r\n let array: any[] = [];\r\n array = formatProductSearchAPIData(productsSearchResultsData, selectedGeoCountries, true);\r\n let productSearchConfig = { ...productSearchGridConfig };\r\n let searchData = _.uniqBy(array, (item) =>\r\n [item?.CountryId, item?.PfamId].join()\r\n );\r\n let groupedData = [\r\n ...new Map(\r\n searchData?.map((item: any) => [item.BusinessUnit, item])\r\n ).values(),\r\n ];\r\n productSearchConfig.kendoGridProps.totalRecords = groupedData?.length;\r\n productSearchConfig.kendoGridProps.data = groupedData;\r\n productSearchConfig.kendoGridProps.masterData = searchData;\r\n if(!isCPStrategicDeal){\r\n productSearchConfig.kendoGridProps.detailGrid.columns.filter(x => x.key == ApplicationConstants.ProductFamilyCodeFacetName || x.key == ApplicationConstants.CountryFacetName).forEach((item) => {\r\n item[\"isVisible\"] = false;\r\n });\r\n\r\n let selectedProductsGridConfig = { ...productFamilyGridConfig };\r\n selectedProductsGridConfig.kendoGridProps.gridDisplayName = ApplicationConstants.OTLESelectedProductsGridName;\r\n selectedProductsGridConfig.kendoGridProps.columns.filter(x => x.key == ApplicationConstants.ProductFamilyCodeFacetName || x.key == ApplicationConstants.CountryFacetName).forEach((item) => {\r\n item[\"isVisible\"] = false;\r\n });\r\n selectedProductsGridConfig.kendoGridProps.columns.filter(x => x.key == ApplicationConstants.Quantity)[0][\"isVisible\"] = true;\r\n setProductFamilyGridConfig(selectedProductsGridConfig);\r\n }\r\n \r\n if (internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview && internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()){\r\n productSearchConfig.kendoGridProps.className = \"ms-Panel-hideSelectAllCheckBox ms-Panel-hideAllCheckBox\";\r\n }\r\n setProductSearchGridConfig({ ...productSearchConfig });\r\n\r\n //Check if onSubmit triggered the event or facet selection and set data source accordingly\r\n if (facetName.length == 0 && selectedValue.length == 0) {\r\n for (var i = 0; i < allFacetNames.length; i++) {\r\n setComboBoxDatasource((apiReturnedData.data as { [key: string]: any })[\"@search.facets\"][allFacetNames[i]] as IFacetData[], allFacetNames[i]);\r\n }\r\n } else {\r\n for (var i = 0; i < allFacetNames.length; i++) {\r\n if (allFacetNames[i] != facetName) {\r\n setComboBoxDatasource((apiReturnedData.data as { [key: string]: any })[\"@search.facets\"][allFacetNames[i]] as IFacetData[], allFacetNames[i]);\r\n setSelectedValuesDatasource(allFacets[i], allFacetNames[i]);\r\n } else {\r\n setSelectedValuesDatasource(selectedValue, facetName);\r\n }\r\n }\r\n }\r\n setHideSearchFilterButton(false);\r\n }\r\n }\r\n catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n //callback function on checkbox selection of header and/or row(s)\r\n const onDetailRowSelectionCallBack = (selectedState: any, gridData: any) => {\r\n const selectedProducts: IProductFamily[] = [];\r\n const searchGridDatawithSelection = productSearchGridConfig.kendoGridProps.masterData.map((item: any) => (\r\n {\r\n ...item, ['selected']: selectedState[idGetter(item)]\r\n }));\r\n searchGridDatawithSelection.map((item: any) => {\r\n if (item.selected === true) {\r\n selectedProducts.push(Object.assign({ inEdit: undefined }, item));\r\n }\r\n });\r\n addSelectedProductFamily(selectedProducts);\r\n setSelectionState(selectedState);\r\n }\r\n //function to remove selected row from grid and update state\r\n const onDeleteCallBack = (deletedRowData: any, refreshedGridData: any) => {\r\n let deletedlegalConfig = { ...productFamilyGridConfig };\r\n var DeletedDataFromDeleteAll: IProductFamily[] = [];\r\n let totalProductQuantity = 0;\r\n if (refreshedGridData.length === 0) {\r\n DeletedDataFromDeleteAll = deletedlegalConfig.kendoGridProps.data\r\n }\r\n deletedlegalConfig.kendoGridProps.data = refreshedGridData;\r\n deletedlegalConfig.kendoGridProps.totalRecords = refreshedGridData.length;\r\n setProductFamilyGridConfig(deletedlegalConfig);\r\n setProductFamilyGridData(refreshedGridData);\r\n let selectedProductFamily = getProductFamilyModel(refreshedGridData, false);\r\n internalPricingContextDispatch({ type: CaseActionTypes.selectedProductFamilyChanged, products: { key: getOppdealId(), value: selectedProductFamily } });\r\n resetSearchgrid(deletedRowData, refreshedGridData, DeletedDataFromDeleteAll);\r\n selectedProductFamily.forEach(item => {\r\n if(item.quantity){\r\n totalProductQuantity = totalProductQuantity + item.quantity;\r\n }\r\n });\r\n let dealQuantityThresholdForDealType = Number(sessionStorage.getItem(SessionStorageConsts.dealQuantityThresholdConfigs));\r\n totalProductQuantity >= dealQuantityThresholdForDealType || selectedProductFamily.length == 0 ? setShowWarningMessage(false) : setShowWarningMessage(true);\r\n }\r\n\r\n //callback function on editing selection grid row(s)\r\n const onEditCallBack = (data: any) => {\r\n if (!isNullOrEmpty(data) && !isCPStrategicDeal && internalPricingContextState.opportunityDeals[0].products) {\r\n let tempData = internalPricingContextState.opportunityDeals[0].products || [];;\r\n let editedRowIndex = tempData.findIndex((obj => obj.id == data.id));\r\n if (editedRowIndex != -1 && (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Create.toLowerCase() || internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Draft)){\r\n tempData[editedRowIndex] = data;\r\n }\r\n else if (editedRowIndex != -1 && internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n let savedProducts = getsavedContext().opportunityDeals[0].products || [];\r\n let savedProductIndex = savedProducts.findIndex((obj => obj.id == data.id));\r\n if(savedProductIndex >= 0){\r\n if(data.quantity > (savedProducts[savedProductIndex].quantity || 0)){\r\n tempData[editedRowIndex].action = ActionType.Update;\r\n tempData[editedRowIndex].quantity = data.quantity;\r\n }\r\n else{\r\n tempData[editedRowIndex].action = \"\";\r\n tempData[editedRowIndex].quantity = savedProducts[savedProductIndex].quantity;\r\n }\r\n }\r\n else{\r\n tempData[editedRowIndex].quantity = data.quantity;\r\n }\r\n }\r\n\r\n updateProductFamilyAndDispatch(tempData);\r\n }\r\n }\r\n\r\n //on click checkbox add checked rows to selection grid at right\r\n const addSelectedProductFamily = (selectedData: IProductFamily[]): void => {\r\n var selectedproductFamily: IProductFamily[] = getProductFamilyModel(selectedData, true).map((item: IProductFamily) => ({ ...item, action: ActionType.Add }));\r\n var finalSelection: IProductFamily[] = productFamilyGridConfig.kendoGridProps.data;\r\n selectedproductFamily.map(item => {\r\n var findItem = finalSelection.find(x => x.productFamilyCode === item.productFamilyCode && x.country === item.country);\r\n if (findItem === undefined) {\r\n finalSelection.push(item);\r\n }\r\n else {\r\n if (internalPricingContextState.pageMode === PageMode.Edit && internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.Draft) {\r\n var index = finalSelection.findIndex(item => item.productFamilyCode === findItem?.productFamilyCode && item.country === findItem?.country);\r\n finalSelection[index].searchId = item.searchId;\r\n }\r\n }\r\n })\r\n updateProductFamilyAndDispatch(finalSelection);\r\n }\r\n //reset product search grid selection after adding\r\n const resetSearchgrid = (deletedItem: IProductFamily, gridData: IProductFamily[], DeletedDataFromDeleteAll: IProductFamily[]): void => {\r\n let productSearchConfig = { ...productSearchGridConfig };\r\n if (gridData.length > 0 && deletedItem.searchId) {\r\n selectionState[deletedItem.searchId] = false;\r\n productSearchConfig.kendoGridProps.defaultDetailGridSelectionstate = selectionState;\r\n }\r\n else {\r\n DeletedDataFromDeleteAll.map((item: IProductFamily) => {\r\n if (item.searchId) {\r\n selectionState[item.searchId] = false;\r\n }\r\n });\r\n productSearchConfig.kendoGridProps.defaultDetailGridSelectionstate = selectionState;\r\n }\r\n setProductSearchGridConfig({ ...productSearchConfig });\r\n }\r\n //construct pfam model from selection grid\r\n const getProductFamilyModel = (productFamily: IProductFamily[], isAddition: boolean): IProductFamily[] => {\r\n let selectedProductFamily: IProductFamily[] = [];\r\n selectedProductFamily = productFamily.map((item: any) => {\r\n return {\r\n id: isAddition ? Guid.newGuid() : item.id,\r\n countryId: isAddition ? item.CountryId : item.countryId,\r\n productFamilyId: isAddition ? item.PfamId : item.productFamilyId,\r\n productFamilyCode: isAddition ? item.ProductFamilyCode : item.productFamilyCode,\r\n country: isAddition ? item.Country : item.country,\r\n name: isAddition ? item.PfamName : item.name,\r\n skuId: isAddition ? item.SKUId : item.skuId,\r\n businessUnitId: isAddition ? item.BusinessUnitId : item.businessUnitId,\r\n action: item.action,\r\n searchId: isAddition ? item.id : item.searchId,\r\n quantity: isAddition ? 0 : item.quantity,\r\n } as IProductFamily\r\n });\r\n return selectedProductFamily;\r\n }\r\n\r\n // Method called on onChange event of any child combobox (facet)\r\n const selectedValues = (selectedValue: any[], facetName: string): void => {\r\n setDefaultSearch(false);\r\n // create filter expression based on selected facet data\r\n let filterStringExpression = \"\";\r\n\r\n if (isDefaultSearch) {\r\n if(isCPStrategicDeal){\r\n allFacetNames = ApplicationConstants.InternalPricingProgramDistinctProductSearchFacetNames;\r\n allFacets = [selectedProductFamilyCodeValues, selectedPfamNameValues, selectedBusinessUnitValues, selectedCountryValues];\r\n }\r\n else{\r\n allFacetNames = ApplicationConstants.DistinctProductSearchFacetNames;\r\n allFacets = [selectedPfamNameValues, selectedBusinessUnitValues];\r\n }\r\n }\r\n else {\r\n if(isCPStrategicDeal){\r\n allFacetNames = ApplicationConstants.InternalPricingProgramProductSearchFacetNames;\r\n allFacets = [selectedProductFamilyCodeValues, selectedPfamNameValues, selectedBusinessUnitValues, selectedSkuNameValues, selectedSkuPartNumberValues, selectedCountryValues];\r\n }\r\n else{\r\n allFacetNames = ApplicationConstants.ProductSearchFacetNames;\r\n allFacets = [selectedPfamNameValues, selectedBusinessUnitValues, selectedSkuNameValues, selectedSkuPartNumberValues];\r\n }\r\n }\r\n \r\n filterStringExpression = props?.facetProps?.createGlobalFilterExpression([ApplicationConstants.CustomerSearchCountryGlobalIndex], [selectedCountries.map(item => item.countryName)], isAnyEUCountrySelected(internalPricingContextState.opportunityDeals[0].geoCountries || [])) || \"\";\r\n\r\n filterStringExpression = filterStringExpression + props?.facetProps?.createFilterExpression(allFacetNames, facetName, selectedValue, allFacets);\r\n if(isCPStrategicDeal){\r\n filterStringExpression += (\"(\") + ApplicationConstants.ProductSearchApplicableDeals + \"/any(d: d eq \" + ApplicationConstants.CPStrategicApplicableDeal + \")) \" + ApplicationConstants.AndOperator;\r\n }\r\n else{\r\n filterStringExpression += (\"(\") + ApplicationConstants.ProductSearchApplicableDeals + \"/any(d: d eq \" + ApplicationConstants.OTLEApplicableDeal + \")) \" + ApplicationConstants.AndOperator;\r\n }\r\n filterStringExpression += (\" (\") + ApplicationConstants.ProductSearchChannelType + \" \" + ApplicationConstants.Eq + \" \" + ApplicationConstants.IndirectChannelType + \")\" + \" \" + ApplicationConstants.AndOperator;\r\n filterStringExpression += (\" (\") + ApplicationConstants.InternalDealVisibility + \" \" + ApplicationConstants.Ne + \" \" + false + \" )\";\r\n\r\n if (filterStringExpression.substring(filterStringExpression.length - 4) == 'and ') {\r\n filterStringExpression = filterStringExpression.slice(0, -4);\r\n }\r\n getProductSearchData(filterStringExpression, 0, facetName, selectedValue, selectedCountries, false);\r\n }\r\n\r\n //Set selected values of facets\r\n const setSelectedValuesDatasource = (selectedValue: any[], facetType: string): void => {\r\n switch (facetType) {\r\n case ApplicationConstants.ProductFamilyCodeFacetName:\r\n setSelectedProductFamilyCodeValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.ProductFamilyNameFacetName:\r\n setSelectedPfamNameValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.BusinessUnitFacetName:\r\n setSelectedBusinessUnitValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.SkuNameFacetName:\r\n setSelectedSkuNameValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.SkuPartNumberFacetName:\r\n setSelectedSkuPartNumberValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.CountryFacetName:\r\n setSelectedCountryValues(selectedValue);\r\n break;\r\n\r\n\r\n default:\r\n console.log(\"Default setSelectedValuesDatasource\");\r\n }\r\n }\r\n\r\n //Set data source of facets\r\n const setComboBoxDatasource = (values: IFacetData[], facetType: string): void => {\r\n switch (facetType) {\r\n case ApplicationConstants.ProductFamilyCodeFacetName:\r\n setProductFamilyCode(values);\r\n break;\r\n\r\n case ApplicationConstants.ProductFamilyNameFacetName:\r\n setPfamName(values);\r\n break;\r\n\r\n case ApplicationConstants.BusinessUnitFacetName:\r\n setBusinessUnit(values);\r\n break;\r\n\r\n case ApplicationConstants.SkuNameFacetName:\r\n setSkuName(values);\r\n break;\r\n\r\n case ApplicationConstants.SkuPartNumberFacetName:\r\n setSkuPartNumber(values);\r\n break;\r\n\r\n case ApplicationConstants.CountryFacetName:\r\n setCountry(values.filter(country => selectedGeoCountries.filter(geoCountry => geoCountry.countryName === Object.values(country)[1]).length > 0));\r\n //setCountry(values);\r\n break;\r\n\r\n default:\r\n console.log(\"Default setSelectedValuesDatasource\");\r\n }\r\n }\r\n\r\n //hide or show facets on click of button\r\n const onShowFacets = () => {\r\n var isCollapsed = false;\r\n if (panes) {\r\n isCollapsed = panes[0]?.collapsed;\r\n }\r\n setPanes([\r\n { size: \"15%\", collapsible: true, resizable: true, collapsed: !isCollapsed },\r\n {}\r\n ]);\r\n setSearchFilterButtonText(isCollapsed ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"HideSearchFilter\", UIControlsText.HideSearchFilter) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ShowSearchFilter\", UIControlsText.ShowSearchFilter))\r\n }\r\n\r\n return (\r\n <div>\r\n <Row>\r\n <Col>\r\n {isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSearchElements\", UIControlsText.ProductSearchElements), internalPricingContextState.pageMode, dealType) &&\r\n <Stack id=\"productSelectionSearchBar\">\r\n {issearchBarVisible && \r\n <Col>\r\n <SearchBar {...{\r\n store: productSearchStore, onSubmit, placeHolderText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Search\", UIControlsText.Search), onClear, searchID: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSearchID\", UIControlsText.ProductSearchID),\r\n showFacetsText: searchFilterButtonText, onShowFacets,\r\n hideSearchBtn: false,\r\n hideFacetsButton: hideSearchFilterButton,\r\n pageMode: internalPricingContextState.pageMode,\r\n opportunityDealStatusCode: internalPricingContextState.opportunityDeals[0].statusCode\r\n }} />\r\n <Label>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ProductSearchPlaceHolderText\", UIControlsText.ProductSearchPlaceHolderText)}</Label>\r\n </Col>}\r\n <div>\r\n {showProductDialog && \r\n <InnerHTMLContainer {...{ \r\n id:\"InactiveProductMessage\" ,\r\n contolType: UIControlType.MessageWithDialog,\r\n listdata: inactivePFAMs, \r\n message: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"InActiveProductErrorMessage\", ErrorMessages.InActiveProductErrorMessage),\r\n hidden: true, \r\n isBlocking: true,\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"InactiveProducts\", UIControlsText.InactiveProducts),\r\n subText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"InactiveProductsSubTitle\", UIControlsText.InactiveProductsSubTitle),\r\n productType: \"Product Family\",\r\n }}>\r\n </InnerHTMLContainer>\r\n }\r\n </div>\r\n </Stack>\r\n }\r\n <Stack horizontal tokens={stackTokens}>\r\n <Splitter\r\n className={_Styles.SplitterStyle}\r\n panes={internalPricingContextState.pageMode !== PageMode.View ? panes : []}\r\n onChange={onSplitterChange}\r\n >\r\n {isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSearchElements\", UIControlsText.ProductSearchElements), internalPricingContextState.pageMode, dealType) &&\r\n <div>\r\n <Label id=\"gridTitle\" className={_Styles.LegalEntityLabel}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SearchFilter\", UIControlsText.SearchFilter)}\r\n </Label>\r\n {isCPStrategicDeal &&\r\n <SearchableComboBoxComponent\r\n {...{\r\n facetProps: {\r\n facetName: ApplicationConstants.CountryFacetName,\r\n facetLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CountryFacetText\", UIControlsText.CountryFacetText),\r\n facetData: country,\r\n selectedData: selectedCountryValues,\r\n showFacetCount: false\r\n },\r\n selectedValues,\r\n }}\r\n ></SearchableComboBoxComponent>\r\n }\r\n <SearchableComboBoxComponent\r\n {...{\r\n facetProps: {\r\n facetName: ApplicationConstants.BusinessUnitFacetName,\r\n facetLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BusinessUnitFacetText\", UIControlsText.BusinessUnitFacetText),\r\n facetData: businessUnit,\r\n selectedData: selectedBusinessUnitValues,\r\n showFacetCount: false\r\n },\r\n selectedValues,\r\n }}\r\n ></SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {...{\r\n facetProps: {\r\n facetName: ApplicationConstants.ProductFamilyNameFacetName,\r\n facetLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductFamilyNameFacetText\", UIControlsText.ProductFamilyNameFacetText),\r\n facetData: pfamName,\r\n selectedData: selectedPfamNameValues,\r\n showFacetCount: false\r\n },\r\n selectedValues,\r\n }}\r\n ></SearchableComboBoxComponent>\r\n {isCPStrategicDeal &&\r\n <SearchableComboBoxComponent\r\n {...{\r\n facetProps: {\r\n facetName: ApplicationConstants.ProductFamilyCodeFacetName,\r\n facetLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductFamilyCodeFacetText\", UIControlsText.ProductFamilyCodeFacetText),\r\n facetData: productFamilyCode,\r\n selectedData: selectedProductFamilyCodeValues,\r\n showFacetCount: false\r\n },\r\n selectedValues,\r\n }}\r\n ></SearchableComboBoxComponent>\r\n }\r\n {!isDefaultSearch &&\r\n <><SearchableComboBoxComponent\r\n {...{\r\n facetProps: {\r\n facetName: ApplicationConstants.SkuNameFacetName,\r\n facetLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SkuNameFacetText\", UIControlsText.SkuNameFacetText),\r\n facetData: skuName,\r\n selectedData: selectedSkuNameValues,\r\n showFacetCount: false\r\n },\r\n selectedValues,\r\n }}\r\n ></SearchableComboBoxComponent><SearchableComboBoxComponent\r\n {...{\r\n facetProps: {\r\n facetName: ApplicationConstants.SkuPartNumberFacetName,\r\n facetLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SkuPartNumberFacetText\", UIControlsText.SkuPartNumberFacetText),\r\n facetData: skuPartNumber,\r\n selectedData: selectedSkuPartNumberValues,\r\n showFacetCount: false\r\n },\r\n selectedValues,\r\n }}\r\n ></SearchableComboBoxComponent></>\r\n }\r\n </div>\r\n }\r\n {isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSearchElements\", UIControlsText.ProductSearchElements), internalPricingContextState.pageMode, dealType) &&\r\n <div>\r\n <div className=\"DealDetailsSearchGrid\">\r\n <NextGenKendoGrid\r\n {...{\r\n kendoGridProps: { ...productSearchGridConfig.kendoGridProps }, onDetailRowSelectionCallBack\r\n }}\r\n />\r\n </div>\r\n </div>\r\n }\r\n {internalPricingContextState.pageMode === PageMode.View && showProductData ? (\r\n <div id=\"ProductSelectionViewGrids\" >\r\n {expandGridVisible ? (\r\n <PanelBar expandMode={expandMode}>\r\n <PanelBarItem title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CompactView\", UIControlsText.CompactView)} id={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CompactView\", UIControlsText.CompactView)}>\r\n <NextGenKendoGrid\r\n {...{\r\n kendoGridProps: { ...pfamCompactConfig.kendoGridProps }\r\n }}\r\n />\r\n </PanelBarItem>\r\n <PanelBarItem title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandedView\", UIControlsText.ExpandedView)} expanded={true} id={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandedView\", UIControlsText.ExpandedView)}>\r\n <NextGenKendoGrid\r\n {...{\r\n kendoGridProps: { ...pfamExpandConfig.kendoGridProps }\r\n }}\r\n />\r\n </PanelBarItem>\r\n </PanelBar>\r\n ) : (\r\n <PanelBar expandMode={expandMode}>\r\n <PanelBarItem title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CompactView\", UIControlsText.CompactView)} expanded={true} id={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CompactView\", UIControlsText.CompactView)}>\r\n <NextGenKendoGrid\r\n {...{\r\n kendoGridProps: { ...pfamCompactConfig.kendoGridProps }\r\n }}\r\n />\r\n </PanelBarItem>\r\n </PanelBar>\r\n )}\r\n </div>\r\n ) : <div>\r\n {showWarningMessage && !isCPStrategicDeal && (\r\n <Stack>\r\n <div>\r\n <MessageBar messageBarType={MessageBarType.warning} onDismiss={resetWarningMessage} dismissButtonAriaLabel=\"Close\" isMultiline={true}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductQuantityWarningText\", UIControlsText.ProductQuantityWarningText)}\r\n </MessageBar>\r\n </div>\r\n </Stack>\r\n )}\r\n <NextGenKendoGrid\r\n {...{\r\n kendoGridProps: { ...productFamilyGridConfig.kendoGridProps }, onDeleteCallBack, onEditCallBack\r\n }}\r\n />\r\n </div>\r\n }\r\n </Splitter>\r\n </Stack>\r\n </Col>\r\n </Row>\r\n </div>\r\n )\r\n}\r\n\r\nexport default InternalPricingProductSearch;","/**\r\n * Enum for CustomerStatusCodes.\r\n */\r\n\r\nexport enum CustomerStatusCodes {\r\n\r\n /**\r\n * Draft value.\r\n */\r\n Draft = 441820000,\r\n\r\n \r\n /**\r\n * Approved value.\r\n */\r\n Approved = 100000011\r\n\r\n \r\n}","import React, { FormEvent } from \"react\";\r\nimport { IRadioGridCellProps } from \"./IRadioGridCellProps\";\r\nimport { ChoiceGroup, IChoiceGroupOption } from \"office-ui-fabric-react\";\r\nimport { useTableKeyboardNavigation } from \"@progress/kendo-react-data-tools\";\r\n\r\nexport const RadioGridCell = (props: IRadioGridCellProps) => {\r\n const [selectedKey, setSelectedKey] = React.useState<string | undefined>(props.selectedOption);\r\n\r\n const onchange = (event: FormEvent<HTMLElement | HTMLInputElement> | undefined, option: IChoiceGroupOption | undefined) => {\r\n setSelectedKey(option?.key);\r\n\r\n props.itemSelectionUpdate && props.itemSelectionUpdate(props.cellId, option?.key);\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <td role=\"gridcell\" {...useTableKeyboardNavigation(props.cellId)}>\r\n <ChoiceGroup disabled={props.disabled} selectedKey={selectedKey} options={props.options} onChange={onchange} />\r\n </td>\r\n </React.Fragment>\r\n )\r\n}","import NextGenKendoGrid from \"../../../components/shared/grid/nextgenkendogrid\";\r\nimport { IUnmanagedCustomer } from \"../../../models/IUnmanagedCustomer\";\r\nimport { nextGenService } from \"../../../services/NextGenService\";\r\nimport { IGridProps } from \"../../../components/shared/grid/IGridProps\";\r\nimport { GridType } from \"../../../models/GridType\";\r\nimport { RadioGridCell } from \"../../../components/shared/grid/radioGridCell\"\r\nimport { Checkbox, DefaultButton, Dropdown, IDropdownOption, Label, PrimaryButton, Stack, TextField } from \"office-ui-fabric-react\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { UIControlsText } from \"../../../content/UIControlsText\";\r\nimport { countriesFilter, getCustomerIndustries, isNullOrEmpty, readGridConfig, getRuleValidationMessage, getEntityDataFromSession } from \"../../../components/shared/common/util\";\r\nimport { ICountry } from \"../../../models/ICountry\";\r\nimport { SessionStorageConsts } from \"../../../models/SessionStorageConsts\";\r\nimport { ModalDialogStyles, _Styles, stackStyles, stackButtonStyles } from \"../../../content/styles/Page.styles\";\r\nimport { ErrorMessages } from \"../../../content/ErrorMessages\";\r\nimport { IStackTokens, MaskedTextField, MessageBar, MessageBarType } from \"@fluentui/react\";\r\nimport { IIndustryDropdown } from \"../../../models/IIndustryDropdown\";\r\nimport { IVerticalDropdown } from \"../../../models/IVerticalDropdown\";\r\nimport { GuidanceText } from \"../../../models/GuidanceText\";\r\nimport { ICreateUnmanagedCustomerProps } from \"./props/ICreateUnmanagedCustomerprops\";\r\nimport { ILegalEntity } from \"../../../models/ILegalEntity\";\r\nimport { useCommonPPContext } from \"../common/context/common-pp-context\";\r\nimport { PageStyles } from \"../common/content/Page.Styles\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { PageMode } from \"../../../models/PageMode\";\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { useInternalPricingContext } from '../../pricingprogram/CPStrategic/context/internalpricing-context';\r\nimport { DealType } from \"../../../models/DealType\";\r\n\r\nconst CreateUnmanagedCustomer: React.FunctionComponent<ICreateUnmanagedCustomerProps> = (props: ICreateUnmanagedCustomerProps) => {\r\n const [customerLocalName, setCustomerLocalName] = useState<string>(\"\");\r\n const [customerName, setCustomerName] = useState<string>(\"\");\r\n const [addressLine1, setAddressLine1] = useState<string>(\"\");\r\n const [city, setCity] = useState<string>(\"\");\r\n const [state, setState] = useState<string>(\"\");\r\n const [postalCode, setPostalCode] = useState<any>(\"\");\r\n const [country, setCountry] = useState<any>(\"\");\r\n const [selectedCountry, setSelectedCountry] = useState<IDropdownOption | null>();\r\n const [industry, setIndustry] = useState<any>(\"\");\r\n const [vertical, setVertical] = useState<any>(\"\");\r\n const [verticalCategory, setVerticalCategory] = useState<any>(\"\");\r\n const [webPageURL, setWebPageURL] = useState<string>(\"\");\r\n const [emailDomain, setEmailDomain] = useState<string>(\"\");\r\n const [isCustomerNameChecked, setIsCustomerNameChecked] = useState<boolean>(false);\r\n const [toggleCustomerLoading, setToggleCustomerLoading] = useState<boolean>(false);\r\n const [toggleCustomerHardDuplicate, setToggleCustomerHardDuplicate] = useState<boolean>(false);\r\n const [toggleCustomerSoftDuplicate, setToggleCustomerSoftDuplicate] = useState<boolean>(false);\r\n const [toggleCustomerNewRecord, setToggleCustomerNewRecord] = useState<boolean>(false);\r\n const [CustomerNameRequired, setCustomerNameRequired] = useState<string>();\r\n const [CustomerLocalNameRequired, setCustomerLocalNameRequired] = useState<string>();\r\n const [countryRequired, setCountryRequired] = useState<string>();\r\n const [addressLine1Required, setAddressLine1Required] = useState<string>();\r\n const [cityRequired, setCityRequired] = useState<string>();\r\n const [postalCodeRequired, setPostalCodeRequired] = useState<string>();\r\n const [industryRequired, setIndustryRequired] = useState<string>();\r\n const [verticalRequired, setVerticalRequired] = useState<string>();\r\n const [verticalCategoryRequired, setVerticalCategoryRequired] = useState<string>();\r\n const [webPageUrlRequired, setWebPageUrlRequired] = useState<string>();\r\n const [webPageUrlPattern, setWebPageUrlPattern] = useState<string>();\r\n const [emailDomainPattern, setEmailDomainPattern] = useState<string>();\r\n const [stateRequired, setStateRequired] = useState<string>();\r\n const [industryDropdown, setIndustryDropdown] = useState<IIndustryDropdown[]>([]);\r\n const [verticalDropdown, setVerticalDropdown] = useState<IVerticalDropdown[]>([]);\r\n const [verticalCategoriesDropdown, setVerticalCategoriesDropdown] = useState<string[]>([]);\r\n const [enableCloneEnglishName, setEnableCloneEnglishName] = useState<boolean>(false);\r\n const [toggleSubmissionActions, setToggleSubmissionActions] = useState<boolean>(false);\r\n const [customerSearchGridConfig, setCustomerSearchGridConfig] = useState<IGridProps>(readGridConfig(GridType.DuplicateCustomerResults));\r\n const [isCustomerSelected, setIsCustomerSelected] = useState<boolean>(false);\r\n const [errorMessage, setErrorMessage] = useState<string>(\"\");\r\n const [showMessageBar, setShowMessageBar] = useState<boolean>(false)\r\n const [showNoteMessageBar, setShowNoteMessageBar] = useState<boolean>(true)\r\n const [selectedCustomerId, setSelectedCustomerId] = useState<string | undefined>();\r\n const [selectedCustomer, setSelectedCustomer] = useState<IUnmanagedCustomer | undefined>();\r\n const { commonPPContextState, commonPPContextDispatch } = useCommonPPContext();\r\n const [countriesDropDown, setCountriesDropdownData] = useState(countriesFilter());\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [saveButtonText, setsaveButtonText] = useState<string>(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitNewCustomerRecord\", UIControlsText.SubmitNewCustomerRecord));\r\n const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\r\n const stackButtonTokens: IStackTokens = { childrenGap: 16 };\r\n const stackTokens: IStackTokens = { childrenGap: 24 };\r\n const [isCountryDisabled, setIsCountryDisabled] = useState<boolean>(false);\r\n const [createUnmanagedCustomerGuidanceText, setCreateUnmanagedCustomerGuidanceText] = useState<string>();\r\n\r\n // Context for OTLE\r\n const { internalPricingContextState, internalPricingContextDispatch } = useInternalPricingContext();\r\n\r\n /* On partner location change countries dropdown will be reset */\r\n useEffect(() => {\r\n if (commonPPContextState != undefined) {\r\n let countries = countriesFilter(commonPPContextState.partnerDetails?.countryId)\r\n setCountry(commonPPContextState.partnerDetails?.countryId);\r\n setGuidanceText();\r\n\r\n setCountriesDropdownData(countries);\r\n let selectedCountry = countries.find(x => x.countryId === commonPPContextState.partnerDetails?.countryId);\r\n if (selectedCountry) {\r\n setSelectedCountry({ key: selectedCountry.countryId, text: selectedCountry.countryName ? selectedCountry.countryName : \"\" })\r\n }\r\n if (commonPPContextState.pageMode === PageMode.Edit) {\r\n setsaveButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Save\", UIControlsText.Save));\r\n setIsCountryDisabled(true);\r\n }\r\n }\r\n }, [commonPPContextState?.partnerDetails?.countryId, commonPPContextState?.selectedOptyDealCaseNumber]);\r\n\r\n useEffect(() => {\r\n if (internalPricingContextState != undefined) {\r\n let opportunitydeal = internalPricingContextState.opportunityDeals;\r\n let countries = countriesFilter(opportunitydeal[0].dealCustomerCountry);\r\n setCountry(opportunitydeal[0].dealCustomerCountry);\r\n setCountriesDropdownData(countries);\r\n setGuidanceText();\r\n\r\n let selectedCountry = countries.find(x => x.countryId === internalPricingContextState.opportunityDeals[0]?.dealCustomerCountry);\r\n\r\n if (selectedCountry) {\r\n setSelectedCountry({ key: selectedCountry.countryId, text: selectedCountry.countryName ? selectedCountry.countryName : \"\" })\r\n }\r\n if (internalPricingContextState?.pageMode === PageMode.Edit) {\r\n setsaveButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Save\", UIControlsText.Save));\r\n }\r\n setIsCountryDisabled(true);\r\n }\r\n }, [internalPricingContextState?.opportunityDeals[0]?.dealCustomerCountry]);\r\n\r\n useEffect(() => {\r\n\r\n //Getting all industries, verticals and vertical dropdown values\r\n Promise.allSettled([\r\n getCustomerIndustries()\r\n ]).then(function (responses: any) {\r\n let industries: IIndustryDropdown[] = [];\r\n for (let key in responses[0]?.value) {\r\n industries.push({\r\n industryName: key,\r\n verticals: responses[0]?.value[key]\r\n });\r\n }\r\n setIndustryDropdown(industries);\r\n if ((commonPPContextState?.pageMode === PageMode.Edit || internalPricingContextState?.pageMode === PageMode.Edit) && props.savedCustomer?.isManaged === false) {\r\n var industry = props.savedCustomer?.industry || \"\";\r\n var vertical = props.savedCustomer?.vertical || \"\";\r\n var VerticalCategory = props.savedCustomer?.verticalCategory || \"\";\r\n let industryOption = industries.find(x => x.industryName === industry);\r\n var verticals: IVerticalDropdown[] = [];\r\n\r\n if (industryOption) {\r\n verticals = populateVerticalfromIndustry(industryOption);\r\n }\r\n\r\n let selectedvertical = verticals.find(x => x.verticalName == vertical);\r\n if (selectedvertical) {\r\n setVerticalCategoriesDropdown(selectedvertical.verticalCategories);\r\n }\r\n\r\n setIndustry(industry);\r\n setVertical(vertical);\r\n setVerticalCategory(VerticalCategory);\r\n setCustomerName(props.savedCustomer?.legalEntityName || \"\");\r\n setCustomerLocalName(props.savedCustomer?.organizationNameInLocalLanguage || \"\");\r\n var address = props.savedCustomer?.address || \"\";\r\n var allAddress = address.split(\" \");\r\n if (allAddress[0]) {\r\n setAddressLine1(allAddress[0])\r\n }\r\n if (allAddress[1]) {\r\n setCity(allAddress[1])\r\n }\r\n if (allAddress[2]) {\r\n setState(allAddress[2])\r\n }\r\n if (allAddress[3]) {\r\n setPostalCode(allAddress[3])\r\n }\r\n setWebPageURL(props.savedCustomer?.webPageURL || \"\");\r\n setEmailDomain(props.savedCustomer?.emailDomain || \"\");\r\n }\r\n });\r\n }, []);\r\n\r\n /**\r\n * customer name input change function\r\n * if local name same as english ios checked making necessary changes\r\n * @param event \r\n */\r\n const handleInputCustomerName = (event: any) => {\r\n let val = event.target.value;\r\n setCustomerName(val);\r\n setCustomerNameRequired(\"\");\r\n if (isCustomerNameChecked) {\r\n setCustomerLocalName(val);\r\n }\r\n if (checkInput(val)) {\r\n if (event.target.value.length <= parseInt(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Text500\", UIControlsText.Text500.toString()))) {\r\n setEnableCloneEnglishName(true);\r\n }\r\n else {\r\n setCustomerNameRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"Max500CharErrorMessage\", UIControlsText.Max500CharErrorMessage))\r\n }\r\n }\r\n else {\r\n setCustomerNameRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CustomerNameEnglishValidationMsg\", ErrorMessages.CustomerNameEnglishValidationMsg))\r\n }\r\n if (event.target.value.length == 0) {\r\n setIsCustomerNameChecked(false);\r\n setEnableCloneEnglishName(false);\r\n }\r\n }\r\n\r\n const checkInput = (name: string) => {\r\n var alphaNumeric = /^(?:[\\d,\\/().]*[a-zA-Z][a-zA-Z\\d,\\/(). -]*)?$/;\r\n if (alphaNumeric.test(name)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * on local customer name changes checking length and showing error message\r\n * @param event \r\n */\r\n const handleInputCustomerLocalNameName = (event: any) => {\r\n if (event.target.value.length <= parseInt(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Text500\", UIControlsText.Text500.toString()))) {\r\n setCustomerLocalName(event.target.value);\r\n setCustomerLocalNameRequired(\"\");\r\n }\r\n else {\r\n setCustomerLocalNameRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"Max500CharErrorMessage\", UIControlsText.Max500CharErrorMessage))\r\n }\r\n }\r\n\r\n /**\r\n * on country dropdown change event , setting to local variable \r\n * and removing error message \r\n * @param event \r\n * @param option \r\n */\r\n const onCountryChange = (event: React.FormEvent<HTMLDivElement>, option?: IDropdownOption) => {\r\n setCountry(option?.key.toString());\r\n setSelectedCountry(option);\r\n setCountryRequired(\"\");\r\n }\r\n\r\n /**\r\n * on industry change setting industry and, fetching related verticals of it\r\n * @param event \r\n * @param option \r\n */\r\n const onIndustryChange = (event?: React.FormEvent<HTMLDivElement>, option?: IDropdownOption) => {\r\n setIndustry(option?.key.toString());\r\n setVerticalDropdown([])\r\n setIndustryRequired(\"\");\r\n setVerticalCategory(null);\r\n setVertical(null);\r\n let industry = industryDropdown.find(x => x.industryName === option?.key.toString());\r\n if (industry) {\r\n populateVerticalfromIndustry(industry);\r\n }\r\n setVerticalCategoriesDropdown([]);\r\n }\r\n //populate vertical based on industry\r\n const populateVerticalfromIndustry = (industry: IIndustryDropdown): IVerticalDropdown[] => {\r\n let verticals: IVerticalDropdown[] = [];\r\n if (industry) {\r\n for (let key in industry.verticals) {\r\n verticals.push({\r\n verticalName: key,\r\n verticalCategories: industry.verticals[key]\r\n });\r\n }\r\n setVerticalDropdown(verticals);\r\n }\r\n return verticals;\r\n }\r\n\r\n /**\r\n * on vertical change setting vertical anf fetching related vertical categories\r\n * @param event \r\n * @param option \r\n */\r\n const onVerticalChange = (event: React.FormEvent<HTMLDivElement>, option?: IDropdownOption) => {\r\n setVertical(option?.key.toString());\r\n setVerticalCategory(null);\r\n setVerticalRequired(\"\");\r\n let vertical = verticalDropdown.find(x => x.verticalName == option?.key.toString());\r\n if (vertical) {\r\n setVerticalCategoriesDropdown(vertical.verticalCategories);\r\n }\r\n }\r\n\r\n /**\r\n * on vertical category change setting selected vertical\r\n * @param event \r\n * @param option \r\n */\r\n const onVerticalCategoryChange = (event: React.FormEvent<HTMLDivElement>, option?: IDropdownOption) => {\r\n setVerticalCategory(option?.key.toString());\r\n setVerticalCategoryRequired(\"\");\r\n }\r\n\r\n /**\r\n * on address line input setting and validating address line\r\n * @param event \r\n */\r\n const onAddressLineChange = (event: any) => {\r\n setAddressLine1Required(\"\");\r\n if (event.target.value.length <= parseInt(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Text200\", UIControlsText.Text200.toString()))) {\r\n setAddressLine1(event.target.value);\r\n }\r\n else {\r\n setAddressLine1Required(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"Max200CharErrorMessage\", UIControlsText.Max200CharErrorMessage));\r\n }\r\n\r\n }\r\n\r\n /**\r\n * on city input setting and validating\r\n * @param event \r\n */\r\n const onCityChange = (event: any) => {\r\n setCityRequired(\"\");\r\n let val = event.target.value;\r\n if (val.length <= parseInt(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Text100\", UIControlsText.Text100.toString()))) {\r\n setCity(event.target.value);\r\n }\r\n else {\r\n setCityRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"Max100CharErrorMessage\", UIControlsText.Max100CharErrorMessage));\r\n }\r\n }\r\n\r\n /**\r\n * on state input setting and validating\r\n * @param event \r\n */\r\n const onStateChange = (event: any) => {\r\n setStateRequired(\"\");\r\n let val = event.target.value;\r\n if (val.length <= parseInt(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Text100\", UIControlsText.Text100.toString()))) {\r\n setState(event.target.value);\r\n }\r\n else {\r\n setCityRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"Max100CharErrorMessage\", UIControlsText.Max100CharErrorMessage));\r\n }\r\n }\r\n\r\n /**\r\n * on postal code input setting and validating\r\n * @param event \r\n */\r\n const onPostalCodeChange = (event: any) => {\r\n if (event.target.value.length == 0) {\r\n setPostalCode(event.target.value);\r\n }\r\n else if (event.target.value.length <= parseInt(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Text100\", UIControlsText.Text100.toString()))) {\r\n\r\n setPostalCode(event.target.value);\r\n setPostalCodeRequired(\"\");\r\n }\r\n else {\r\n setPostalCodeRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"Max100CharErrorMessage\", UIControlsText.Max100CharErrorMessage));\r\n }\r\n }\r\n\r\n /**\r\n * on web page url input setting and validating\r\n * @param event \r\n */\r\n const onWebpageUrlChange = (event: any) => {\r\n if (event.target.value.length <= parseInt(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Text200\", UIControlsText.Text200.toString()))) {\r\n setWebPageURL(event.target.value);\r\n setWebPageUrlRequired(\"\");\r\n setWebPageUrlPattern(\"\");\r\n }\r\n else {\r\n setWebPageUrlRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Max200CharErrorMessage\", UIControlsText.Max200CharErrorMessage));\r\n }\r\n }\r\n\r\n /**\r\n * on email domain input setting and validating\r\n * @param event \r\n */\r\n const onEmailDomainChange = (event: any) => {\r\n if (event.target.value.length <= parseInt(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Text100\", UIControlsText.Text100.toString()))) {\r\n setEmailDomain(event.target.value);\r\n setEmailDomainPattern(\"\");\r\n }\r\n else {\r\n setWebPageUrlRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"Max100CharErrorMessage\", UIControlsText.Max100CharErrorMessage));\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @returns on submit validating the add customer form\r\n */\r\n const validate = () => {\r\n let errorMessages: string[] = [];\r\n //if already existing error messages are there pushing them to error messages array\r\n if (countryRequired) {\r\n errorMessages.push(countryRequired);\r\n }\r\n if (CustomerNameRequired) {\r\n errorMessages.push(CustomerNameRequired);\r\n }\r\n if (CustomerLocalNameRequired) {\r\n errorMessages.push(CustomerLocalNameRequired);\r\n }\r\n if (cityRequired) {\r\n errorMessages.push(cityRequired);\r\n }\r\n if (postalCodeRequired) {\r\n errorMessages.push(postalCodeRequired);\r\n }\r\n if (addressLine1Required) {\r\n errorMessages.push(addressLine1Required);\r\n }\r\n if (stateRequired) {\r\n errorMessages.push(stateRequired);\r\n }\r\n\r\n //checking if values are null or not and pushing error messages to array\r\n if (!country) {\r\n errorMessages.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CountryRequired\", ErrorMessages.CountryRequired));\r\n setCountryRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CountryRequired\", ErrorMessages.CountryRequired));\r\n }\r\n if (!customerLocalName) {\r\n errorMessages.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CustomerLocalNameRequired\", ErrorMessages.CustomerLocalNameRequired));\r\n setCustomerLocalNameRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CustomerLocalNameRequired\", ErrorMessages.CustomerLocalNameRequired));\r\n\r\n }\r\n if (!customerName) {\r\n errorMessages.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CustomerNameRequired\", ErrorMessages.CustomerNameRequired));\r\n setCustomerNameRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CustomerNameRequired\", ErrorMessages.CustomerNameRequired));\r\n }\r\n if (!addressLine1) {\r\n errorMessages.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"AddressLine1Required\", ErrorMessages.AddressLine1Required));\r\n setAddressLine1Required(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"AddressLine1Required\", ErrorMessages.AddressLine1Required));\r\n }\r\n if (!city) {\r\n errorMessages.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CityRequired\", ErrorMessages.CityRequired));\r\n setCityRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CityRequired\", ErrorMessages.CityRequired));\r\n }\r\n if (!state) {\r\n errorMessages.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"StateRequired\", ErrorMessages.StateRequired));\r\n setStateRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"StateRequired\", ErrorMessages.StateRequired));\r\n }\r\n if (!postalCode) {\r\n errorMessages.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"PostalCodeRequired\", ErrorMessages.PostalCodeRequired));\r\n setPostalCodeRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"PostalCodeRequired\", ErrorMessages.PostalCodeRequired));\r\n }\r\n if (!industry) {\r\n errorMessages.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"IndustryRequired\", ErrorMessages.IndustryRequired));\r\n setIndustryRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"IndustryRequired\", ErrorMessages.IndustryRequired));\r\n }\r\n if (!vertical) {\r\n errorMessages.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"VerticalRequired\", ErrorMessages.VerticalRequired));\r\n setVerticalRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"VerticalRequired\", ErrorMessages.VerticalRequired));\r\n }\r\n if (!verticalCategory) {\r\n errorMessages.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"VerticalCategoryRequired\", ErrorMessages.VerticalCategoryRequired));\r\n setVerticalCategoryRequired(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"VerticalCategoryRequired\", ErrorMessages.VerticalCategoryRequired));\r\n }\r\n if (webPageURL && !isValidURL(webPageURL)) {\r\n errorMessages.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"WebPageURLpattern\", ErrorMessages.WebPageURLpattern));\r\n setWebPageUrlPattern(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"WebPageURLpattern\", ErrorMessages.WebPageURLpattern));\r\n }\r\n\r\n if (emailDomain && !isValidEmailDomain(emailDomain)) {\r\n errorMessages.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"EmailPattern\", ErrorMessages.EmailPattern));\r\n setEmailDomainPattern(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"EmailPattern\", ErrorMessages.EmailPattern));\r\n }\r\n return errorMessages;\r\n }\r\n\r\n /**\r\n * validating url format\r\n * @param url \r\n * @returns {boolean}\r\n */\r\n const isValidURL = (url: string) => {\r\n var res = url.match(/(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/g);\r\n return (res !== null)\r\n };\r\n\r\n /**\r\n * \r\n * @param email validating email domain\r\n * @returns {boolean}\r\n */\r\n const isValidEmailDomain = (email: string) => {\r\n var res = email.match(/^@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/);\r\n return (res !== null)\r\n }\r\n\r\n /**\r\n * removing trailing spaces of customer name\r\n * @param value \r\n * @returns {string}\r\n */\r\n const trimCustomerNameEnglish = (value: string) => {\r\n setCustomerName(customerName.trim());\r\n if (value.trim().length == 0) {\r\n return \"\";\r\n }\r\n else if (checkInput(value)) {\r\n setCustomerNameRequired(\"\");\r\n }\r\n return;\r\n }\r\n\r\n\r\n /**\r\n * removing trailing spaces of customer local name\r\n * @param value \r\n * @returns {string}\r\n */\r\n const trimCustomerNameLocal = (value: string) => {\r\n setCustomerLocalName(customerLocalName.trim());\r\n if (value.trim().length == 0) {\r\n return \"\";\r\n }\r\n else if (!checkInput(value)) {\r\n setCustomerLocalNameRequired(\"\");\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * removing trailing spaces of customer address\r\n * @param value \r\n * @returns {string}\r\n */\r\n const trimCustomerAddress = (value: string) => {\r\n setAddressLine1(addressLine1.trim());\r\n if (value.trim().length == 0) {\r\n return \"\";\r\n }\r\n else {\r\n setAddressLine1Required(\"\");\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * removing trailing spaces of customer state\r\n * @param value \r\n * @returns {string}\r\n */\r\n const trimState = (value: string) => {\r\n setState(state.trim());\r\n if (value.trim().length == 0) {\r\n return \"\";\r\n }\r\n else {\r\n setStateRequired(\"\");\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * removing trailing spaces of customer city\r\n * @param value \r\n * @returns {string}\r\n */\r\n const trimCity = (value: string) => {\r\n setCity(city.trim());\r\n if (value.trim().length == 0) {\r\n return \"\";\r\n }\r\n else {\r\n setCityRequired(\"\");\r\n }\r\n return;\r\n }\r\n\r\n const [toggleCustomerAdd, setToggleCustomerAdd] = useState<boolean>(true);\r\n\r\n /**\r\n * on submit validating form and sending details to API\r\n * @returns \r\n */\r\n const onSubmit = async () => {\r\n let errors = validate();\r\n if (errors.length > 0) {\r\n return;\r\n }\r\n setToggleCustomerLoading(true);\r\n setToggleCustomerAdd(false);\r\n let request: IUnmanagedCustomer = {\r\n customerId: \"00000000-0000-0000-0000-000000000000\",\r\n legalEntityName: customerName,\r\n organizationNameInLocalLanguage: customerLocalName,\r\n country: selectedCountry ? selectedCountry.text : \"\",\r\n countryId: selectedCountry ? selectedCountry.key.toString() : null,\r\n addressLine1: addressLine1,\r\n city: city,\r\n stateProvince: state,\r\n postalCode: postalCode.replaceAll(\"_\", \"\"),\r\n industry: industry,\r\n vertical: vertical,\r\n verticalCategory: verticalCategory,\r\n webPageURL: webPageURL,\r\n emailDomain: emailDomain,\r\n localNameSameAsEnglish: isCustomerNameChecked,\r\n saveAsNewRecord: false,\r\n tpid: 0,\r\n crmAccountId: \"\",\r\n customerType: 0,\r\n segment: \"\",\r\n unitsCommitted: 0,\r\n }\r\n\r\n if ((commonPPContextState?.pageMode === PageMode.Edit || internalPricingContextState?.pageMode === PageMode.Edit) && props.savedCustomer?.customerId != undefined && props.savedCustomer?.isManaged === false) {\r\n var customer = request;\r\n customer.id = props.savedCustomer?.customerId;\r\n customer.customerId = props.savedCustomer?.customerId || \"\"\r\n await updateCustomer(customer)\r\n }\r\n else {\r\n await callCreateCustomer(request);\r\n }\r\n }\r\n\r\n const [duplicateCustomers, setDuplicateCustomers] = useState<IUnmanagedCustomer[]>([]);\r\n\r\n /**\r\n *sending form details to API and setting duplicate customer if any\r\n * showing message of save os success\r\n * @param request \r\n */\r\n const callCreateCustomer = async (request: IUnmanagedCustomer) => {\r\n\r\n let res: any = await nextGenService.createUnmanagedCustomer(request);\r\n\r\n if (res && res.status === 200) {\r\n setToggleCustomerLoading(false);\r\n\r\n if (res.data.isSuccess) {\r\n // setToggleCustomerNewRecord(true);\r\n request.customerId = res.data.customerId;\r\n request.isManaged = false;\r\n setSelectedCustomer(request);\r\n setToggleCustomerHardDuplicate(false);\r\n setToggleCustomerSoftDuplicate(false);\r\n let legalEntity: ILegalEntity = {\r\n country: request.country,\r\n customerId: request.customerId,\r\n legalEntityName: request.legalEntityName,\r\n tpid: request.tpid ? request.tpid : 0,\r\n crmAccountId: \"\",\r\n customerType: 0,\r\n segment: \"\",\r\n unitsCommitted: 0,\r\n isManaged: request.isManaged,\r\n vertical: request.vertical,\r\n verticalCategory: request.verticalCategory\r\n\r\n }\r\n props.onSubmitToPricingProgramCallBack && props.onSubmitToPricingProgramCallBack(legalEntity);\r\n\r\n }\r\n else if (res.data.isHardCopy) {\r\n setDuplicateCustomers(res.data.duplicateCustomers);\r\n setToggleCustomerAdd(false);\r\n customerSearchGridConfig.kendoGridProps.data = [...res.data.duplicateCustomers];\r\n setCustomerSearchGridConfig({ ...customerSearchGridConfig });\r\n setToggleCustomerHardDuplicate(true);\r\n }\r\n else {\r\n setDuplicateCustomers(res.data.duplicateCustomers);\r\n\r\n setToggleCustomerAdd(false);\r\n customerSearchGridConfig.kendoGridProps.data = [...res.data.duplicateCustomers];\r\n setCustomerSearchGridConfig({ ...customerSearchGridConfig });\r\n setToggleCustomerSoftDuplicate(true);\r\n }\r\n }\r\n else if (res.status === 422) {\r\n setShowMessageBar(true);\r\n setToggleCustomerLoading(false);\r\n let error = \"\";\r\n for (let key in res.data) {\r\n error = error + res.data[key].ruleValidationResults[0].error;\r\n }\r\n setErrorMessage(error);\r\n setToggleCustomerAdd(true);\r\n }\r\n else {\r\n setShowMessageBar(true);\r\n setToggleCustomerLoading(false);\r\n let error = \"\";\r\n for (let key in res.data) {\r\n error = error + res.data[key].ruleValidationResults[0].error;\r\n }\r\n setErrorMessage(error);\r\n }\r\n }\r\n\r\n const updateCustomer = async (request: IUnmanagedCustomer) => {\r\n\r\n let res: any = await nextGenService.updateUnmanagedCustomer(request);\r\n\r\n if (res && res.status === 200) {\r\n setToggleCustomerLoading(false);\r\n\r\n if (res.data) {\r\n request.isManaged = false;\r\n setSelectedCustomer(request);\r\n var address = request.addressLine1?.concat(\" \").concat(request.city).concat(\" \").concat(request.stateProvince).concat(\" \").concat(request.postalCode);\r\n let legalEntity: ILegalEntity = {\r\n country: request.country,\r\n customerId: request.customerId,\r\n id: request.customerId,\r\n legalEntityName: request.legalEntityName,\r\n tpid: request.tpid ? request.tpid : 0,\r\n crmAccountId: \"\",\r\n customerType: 0,\r\n segment: \"\",\r\n unitsCommitted: 0,\r\n isManaged: request.isManaged,\r\n verticalCategory: request.verticalCategory,\r\n vertical: request.vertical,\r\n emailDomain: request.emailDomain,\r\n industry: request.industry,\r\n organizationNameInLocalLanguage: request.organizationNameInLocalLanguage,\r\n address: address,\r\n webPageURL: request.webPageURL,\r\n\r\n }\r\n props.onSubmitToPricingProgramCallBack && props.onSubmitToPricingProgramCallBack(legalEntity);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * on soft duplicate if user click create customer\r\n */\r\n const createCustomer = () => {\r\n setToggleCustomerLoading(true);\r\n setToggleCustomerAdd(false);\r\n let request: IUnmanagedCustomer = {\r\n customerId: \"00000000-0000-0000-0000-000000000000\",\r\n legalEntityName: customerName,\r\n organizationNameInLocalLanguage: customerLocalName,\r\n country: selectedCountry ? selectedCountry.text : \"\",\r\n countryId: selectedCountry ? selectedCountry.key.toString() : null,\r\n addressLine1: addressLine1,\r\n city: city,\r\n stateProvince: state,\r\n postalCode: postalCode.replaceAll(\"_\", \"\"),\r\n industry: industry,\r\n vertical: vertical,\r\n verticalCategory: verticalCategory,\r\n webPageURL: webPageURL,\r\n emailDomain: emailDomain,\r\n localNameSameAsEnglish: isCustomerNameChecked,\r\n saveAsNewRecord: true,\r\n tpid: 0,\r\n crmAccountId: \"\",\r\n customerType: 0,\r\n segment: \"\",\r\n unitsCommitted: 0,\r\n }\r\n callCreateCustomer(request);\r\n }\r\n\r\n /**\r\n * if local name is same as english is checked setting local name as customer name\r\n * @param ev \r\n * @param isChecked \r\n */\r\n const cloneName = (ev?: React.FormEvent<HTMLElement | HTMLInputElement>, isChecked?: boolean) => {\r\n setCustomerLocalNameRequired(\"\");\r\n if (isChecked) {\r\n setCustomerLocalName(customerName);\r\n setIsCustomerNameChecked(isChecked);\r\n }\r\n else {\r\n setCustomerLocalName(\"\");\r\n setIsCustomerNameChecked(false);\r\n }\r\n }\r\n\r\n const resetMessageBarChoice = React.useCallback(() => setShowMessageBar(false), []);\r\n const resetMessageBarNote = React.useCallback(() => setShowNoteMessageBar(false), []);\r\n\r\n /**\r\n * radio button cell for hard/soft duplicate grid\r\n * @param selectedRowData \r\n * @returns \r\n */\r\n const onCustomCellRenderCallBack = (selectedRowData: any) => {\r\n let option = [{ key: selectedRowData.dataItem.customerId, text: \"\" }];\r\n return (\r\n <RadioGridCell\r\n cellId={selectedRowData.dataItem.customerId}\r\n options={option}\r\n selectedOption={selectedCustomerId}\r\n itemSelectionUpdate={onHandleIsManagedCallBack}\r\n />\r\n );\r\n }\r\n\r\n\r\n /**\r\n * submit selected or created customer to pricing program callback\r\n */\r\n const submitToPricingProgram = () => {\r\n if (selectedCustomer) {\r\n let legalEntity: ILegalEntity = {\r\n country: selectedCustomer.country,\r\n customerId: selectedCustomer.customerId,\r\n legalEntityName: selectedCustomer.legalEntityName,\r\n tpid: selectedCustomer.tpid ? selectedCustomer.tpid : 0,\r\n crmAccountId: \"\",\r\n customerType: 0,\r\n segment: \"\",\r\n unitsCommitted: 0,\r\n isManaged: selectedCustomer.isManaged\r\n }\r\n props.onSubmitToPricingProgramCallBack && props.onSubmitToPricingProgramCallBack(legalEntity);\r\n }\r\n else {\r\n setErrorMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"DuplicateGridCustomerSelectErrorMessage\", GuidanceText.DuplicateGridCustomerSelectErrorMessage));\r\n setShowMessageBar(true);\r\n }\r\n }\r\n\r\n /**\r\n * on radio selected in hard/soft grid setting selected user \r\n * @param cellId \r\n */\r\n const onHandleIsManagedCallBack = (cellId: string): void => {\r\n if (!isNullOrEmpty(cellId)) {\r\n\r\n let index = duplicateCustomers.findIndex((obj => obj[\"customerId\"] == cellId));\r\n if (index != -1) {\r\n //set selected customer data\r\n setSelectedCustomerId(cellId);\r\n setSelectedCustomer(duplicateCustomers[index]);\r\n setIsCustomerSelected(true);\r\n setToggleSubmissionActions(true);\r\n }\r\n }\r\n }\r\n\r\n const closeDialog = () => {\r\n setIsDialogOpen(false);\r\n };\r\n\r\n const openDialog = () => {\r\n if (selectedCustomer) {\r\n setIsDialogOpen(true);\r\n }\r\n else {\r\n setErrorMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"DuplicateGridCustomerSelectErrorMessage\", GuidanceText.DuplicateGridCustomerSelectErrorMessage));\r\n setShowMessageBar(true);\r\n }\r\n };\r\n \r\n const setGuidanceText = () => {\r\n if (internalPricingContextState?.opportunityDeals[0]?.dealType?.name === DealType.OTLE.toString()) {\r\n setCreateUnmanagedCustomerGuidanceText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CreateUnmanagedCustomerGuidanceTextOTLE\", GuidanceText.CreateUnmanagedCustomerGuidanceTextOTLE))\r\n }\r\n else {\r\n setCreateUnmanagedCustomerGuidanceText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CreateUnmanagedCustomerGuidanceText\", GuidanceText.CreateUnmanagedCustomerGuidanceText))\r\n }\r\n }\r\n\r\n const handleWebPageNotAvaiable = () => {\r\n \r\n var webPageUrlInputField = document.querySelector(\"#\" + getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"WebPageUrl\", UIControlsText.WebPageUrl).replace(\" \", \"\"));\r\n var webPageUrlLabel = document.querySelector('[for=' + '\"' + webPageUrlInputField?.id + '\"'+ ']');\r\n var webPageUrlLabelSiblingDiv = document.querySelector('label[for=' + '\"' + webPageUrlInputField?.id + '\"] ~ div');\r\n var className = \"no-webpage-available\";\r\n \r\n if(webPageUrlInputField?.hasAttribute(\"disabled\")){\r\n webPageUrlInputField?.removeAttribute(\"disabled\");\r\n webPageUrlInputField?.classList.remove(className);\r\n webPageUrlLabel?.classList.remove(className);\r\n webPageUrlLabelSiblingDiv?.classList.remove(className);\r\n }else{\r\n webPageUrlInputField?.setAttribute(\"disabled\", \"true\");\r\n webPageUrlInputField?.classList.add(className);\r\n webPageUrlLabel?.classList.add(className);\r\n webPageUrlLabelSiblingDiv?.classList.add(className);\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Stack>\r\n {showMessageBar &&\r\n <div>\r\n <MessageBar messageBarType={MessageBarType.error} onDismiss={resetMessageBarChoice} dismissButtonAriaLabel=\"Close\" isMultiline={true}>\r\n {errorMessage}\r\n </MessageBar>\r\n </div>\r\n }\r\n </Stack>\r\n {showNoteMessageBar &&\r\n <div>\r\n <MessageBar messageBarType={MessageBarType.info} onDismiss={resetMessageBarNote} dismissButtonAriaLabel=\"Close\" isMultiline={true}>\r\n {toggleCustomerAdd ? createUnmanagedCustomerGuidanceText : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CreateUnmanagedDuplicateCustomerGuidanceText\", GuidanceText.CreateUnmanagedDuplicateCustomerGuidanceText) }\r\n </MessageBar>\r\n </div>\r\n }\r\n {toggleCustomerAdd &&\r\n <Stack className=\"add-customer-form\">\r\n <div className=\"form-group row\">\r\n <div className=\"col-sm-6 ps-5\">\r\n <Dropdown\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerCountry\", UIControlsText.CustomerCountry)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerCountry\", UIControlsText.CustomerCountry)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerCountry\", UIControlsText.CustomerCountry)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealCountryPlaceHolderText\", UIControlsText.DealCountryPlaceHolderText)}\r\n options={countriesDropDown.map((pt: ICountry) => ({ key: pt.countryId, text: pt.countryName } as IDropdownOption))}\r\n styles={PageStyles.dropdownStyles}\r\n className={_Styles.dropdown}\r\n multiSelect={false}\r\n onChange={onCountryChange}\r\n required={true}\r\n errorMessage={countryRequired}\r\n selectedKey={country}\r\n disabled={isCountryDisabled}\r\n />\r\n </div>\r\n <div className=\"col-sm-6\">\r\n <Dropdown\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Industry\", UIControlsText.Industry)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"IndustryPlaceholder\", UIControlsText.IndustryPlaceholder)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"IndustryPlaceholder\", UIControlsText.IndustryPlaceholder)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"IndustryPlaceholder\", UIControlsText.IndustryPlaceholder)}\r\n options={industryDropdown.map((pt: IIndustryDropdown) => ({ key: pt.industryName, text: pt.industryName } as IDropdownOption))}\r\n styles={PageStyles.dropdownStyles}\r\n className={_Styles.dropdown}\r\n multiSelect={false}\r\n onChange={onIndustryChange}\r\n required={true}\r\n errorMessage={industryRequired}\r\n selectedKey={industry}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"form-group row\">\r\n <div className=\"col-sm-6 ps-5\">\r\n <Label>\r\n <TextField\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameEnglish\", UIControlsText.CustomerNameEnglish)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"CustomerNameEnglishPlaceHolder\", UIControlsText.CustomerNameEnglishPlaceHolder)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"CustomerNameEnglishPlaceHolder\", UIControlsText.CustomerNameEnglishPlaceHolder)}\r\n styles={PageStyles.textFieldStylesOneColumn}\r\n resizable={false}\r\n validateOnLoad={false}\r\n defaultValue={customerName}\r\n onChange={handleInputCustomerName}\r\n required={true}\r\n errorMessage={CustomerNameRequired}\r\n value={customerName}\r\n onGetErrorMessage={trimCustomerNameEnglish}\r\n validateOnFocusOut={true}\r\n />\r\n\r\n </Label>\r\n </div>\r\n\r\n <div className=\"col-sm-6\">\r\n <Dropdown\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Vertical\", UIControlsText.Vertical)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"VerticalPlaceholder\", UIControlsText.VerticalPlaceholder)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"VerticalPlaceholder\", UIControlsText.VerticalPlaceholder)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"VerticalPlaceholder\", UIControlsText.VerticalPlaceholder)}\r\n options={verticalDropdown.map((pt: IVerticalDropdown) => ({ key: pt.verticalName, text: pt.verticalName } as IDropdownOption))}\r\n styles={PageStyles.dropdownStyles}\r\n className={_Styles.dropdown}\r\n multiSelect={false}\r\n onChange={onVerticalChange}\r\n required={true}\r\n errorMessage={verticalRequired}\r\n selectedKey={vertical}\r\n disabled={verticalDropdown.length === 0}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"form-group row\">\r\n <div className=\"col-sm-6 ps-5\">\r\n <Label>\r\n <TextField\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameLocalLanguage\", UIControlsText.CustomerNameLocalLanguage)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"CustomerNameLocalLanguagePlaceHolder\", UIControlsText.CustomerNameLocalLanguagePlaceHolder)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"CustomerNameLocalLanguagePlaceHolder\", UIControlsText.CustomerNameLocalLanguagePlaceHolder)}\r\n styles={PageStyles.textFieldStylesOneColumn}\r\n resizable={false}\r\n validateOnLoad={false}\r\n disabled={isCustomerNameChecked}\r\n onChange={handleInputCustomerLocalNameName}\r\n required={true}\r\n errorMessage={CustomerLocalNameRequired}\r\n value={customerLocalName}\r\n onGetErrorMessage={trimCustomerNameLocal}\r\n validateOnFocusOut={true}\r\n />\r\n <div style={PageStyles.paddingTop8px}>\r\n <Checkbox disabled={!enableCloneEnglishName} className=\"createCustomerCheckBox\" styles={PageStyles.textFieldStylesOneColumn} label=\"Same as Customer Name (English)\" onChange={cloneName} checked={isCustomerNameChecked} />\r\n </div>\r\n </Label>\r\n\r\n </div>\r\n <div className=\"col-sm-6\">\r\n <Dropdown\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"VerticalCategory\", UIControlsText.VerticalCategory)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"VerticalCategoryPlaceholder\", UIControlsText.VerticalCategoryPlaceholder)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"VerticalCategoryPlaceholder\", UIControlsText.VerticalCategoryPlaceholder)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"VerticalCategoryPlaceholder\", UIControlsText.VerticalCategoryPlaceholder)}\r\n options={verticalCategoriesDropdown.map((pt: string) => ({ key: pt, text: pt } as IDropdownOption))}\r\n styles={PageStyles.dropdownStyles}\r\n className={_Styles.dropdown}\r\n multiSelect={false}\r\n onChange={onVerticalCategoryChange}\r\n required={true}\r\n errorMessage={verticalCategoryRequired}\r\n selectedKey={verticalCategory}\r\n disabled={verticalCategoriesDropdown.length === 0}\r\n />\r\n </div>\r\n\r\n </div>\r\n <div className=\"form-group row\">\r\n <div className=\"col-sm-6 ps-5\">\r\n <Label>\r\n <TextField\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressLine1\", UIControlsText.AddressLine1)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"AddressLine1PlaceHolder\", UIControlsText.AddressLine1PlaceHolder)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"AddressLine1PlaceHolderText\", UIControlsText.AddressLine1PlaceHolderText)}\r\n styles={PageStyles.textFieldStylesOneColumn}\r\n resizable={false}\r\n validateOnLoad={false}\r\n onChange={onAddressLineChange}\r\n required={true}\r\n errorMessage={addressLine1Required}\r\n value={addressLine1}\r\n onGetErrorMessage={trimCustomerAddress}\r\n validateOnFocusOut={true}\r\n />\r\n </Label>\r\n </div>\r\n <div className=\"col-sm-6\">\r\n <Label>\r\n <TextField\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"City\", UIControlsText.City)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"CityPlaceHolder\", UIControlsText.CityPlaceHolder)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"CityPlaceHolderText\", UIControlsText.CityPlaceHolderText)}\r\n styles={PageStyles.textFieldStylesOneColumn}\r\n resizable={false}\r\n validateOnLoad={false}\r\n onChange={onCityChange}\r\n required={true}\r\n errorMessage={cityRequired}\r\n value={city}\r\n onGetErrorMessage={trimCity}\r\n validateOnFocusOut={true}\r\n />\r\n </Label>\r\n </div>\r\n </div>\r\n\r\n <div className=\"form-group row\">\r\n <div className=\"col-sm-6 ps-5\">\r\n <Label>\r\n <TextField\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"State\", UIControlsText.State)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"StatePlaceHolder\", UIControlsText.StatePlaceHolder)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"StatePlaceHolderText\", UIControlsText.StatePlaceHolderText)}\r\n styles={PageStyles.textFieldStylesOneColumn}\r\n resizable={false}\r\n validateOnLoad={false}\r\n onChange={onStateChange}\r\n required={true}\r\n errorMessage={stateRequired}\r\n value={state}\r\n onGetErrorMessage={trimState}\r\n validateOnFocusOut={true}\r\n />\r\n </Label>\r\n </div>\r\n <div className=\"col-sm-6\">\r\n <Label>\r\n <TextField\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PostalCode\", UIControlsText.PostalCode)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"PostalCodePlaceHolder\", UIControlsText.PostalCodePlaceHolder)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"PostalCodePlaceHolder\", UIControlsText.PostalCodePlaceHolder)}\r\n styles={PageStyles.textFieldStylesOneColumn}\r\n validateOnFocusOut\r\n resizable={false}\r\n validateOnLoad={false}\r\n onChange={onPostalCodeChange}\r\n required={true}\r\n errorMessage={postalCodeRequired}\r\n value={postalCode}\r\n />\r\n </Label>\r\n </div>\r\n </div>\r\n\r\n <div className=\"form-group row\">\r\n <div className=\"col-sm-6 ps-5\">\r\n <Label>\r\n <TextField\r\n id={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"WebPageUrl\", UIControlsText.WebPageUrl).replace(\" \", \"\")}\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"WebPageUrl\", UIControlsText.WebPageUrl)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"WebPageUrlPlaceHolder\", UIControlsText.WebPageUrlPlaceHolder)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"WebPageUrlPlaceHolderText\", UIControlsText.WebPageUrlPlaceHolderText)}\r\n styles={PageStyles.textFieldStylesOneColumn}\r\n validateOnFocusOut\r\n resizable={false}\r\n validateOnLoad={false}\r\n onChange={onWebpageUrlChange}\r\n errorMessage={webPageUrlRequired || webPageUrlPattern}\r\n value={webPageURL}\r\n />\r\n </Label>\r\n </div>\r\n <div className=\"col-sm-6\">\r\n <Label>\r\n <TextField\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailDomain\", UIControlsText.EmailDomain)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"EmailDomainPlaceHolder\", UIControlsText.EmailDomainPlaceHolder)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"EmailDomainPlaceHoldertText\", UIControlsText.EmailDomainPlaceHoldertText)}\r\n styles={PageStyles.textFieldStylesOneColumn}\r\n validateOnFocusOut\r\n resizable={false}\r\n validateOnLoad={false}\r\n onChange={onEmailDomainChange}\r\n errorMessage={emailDomainPattern}\r\n value={emailDomain}\r\n />\r\n </Label>\r\n </div>\r\n </div>\r\n\r\n <div className=\"form-group row\">\r\n <div className=\"col-sm-6 ps-5\">\r\n <Label>\r\n <Checkbox\r\n id={getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"WebpageNotAvailable\", UIControlsText.WebpageNotAvailable).replaceAll(\" \", \"\")}\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"WebpageNotAvailable\", UIControlsText.WebpageNotAvailable)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"WebpageNotAvailable\", UIControlsText.WebpageNotAvailable)}\r\n styles={PageStyles.textFieldStylesOneColumn}\r\n className={\"createCustomerCheckBox\"}\r\n onChange={handleWebPageNotAvaiable}\r\n />\r\n </Label>\r\n </div>\r\n </div>\r\n </Stack>}\r\n {toggleCustomerLoading &&\r\n <React.Fragment>\r\n <hr></hr>\r\n <span className=\"customer-load\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CreateUnmanagedCustomerSavingText\", GuidanceText.CreateUnmanagedCustomerSavingText)}</span>\r\n </React.Fragment>\r\n }\r\n {(toggleCustomerSoftDuplicate || toggleCustomerHardDuplicate) &&\r\n <div>\r\n {toggleCustomerSoftDuplicate && \r\n <p className=\"mt-2 font-italic paragraph-color p-3\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CreateUnmanagedCustomerSoftDuplicateText\", GuidanceText.CreateUnmanagedCustomerSoftDuplicateText)}</p>\r\n }\r\n {toggleCustomerHardDuplicate &&\r\n <p className=\"mt-2 font-italic paragraph-color p-3\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CreateUnmanagedCustomerHardDuplicateText\", GuidanceText.CreateUnmanagedCustomerHardDuplicateText)}</p>\r\n }\r\n\r\n <NextGenKendoGrid {...{ kendoGridProps: { ...customerSearchGridConfig.kendoGridProps }, onCustomCellRenderCallBack: onCustomCellRenderCallBack }} />\r\n\r\n </div>\r\n }\r\n {toggleCustomerNewRecord &&\r\n <React.Fragment>\r\n <hr></hr>\r\n <p className=\"mt-2 create-customer-success paragraph-color p-3\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CreateUnmanagedCustomerSuccessText\", GuidanceText.CreateUnmanagedCustomerSuccessText)}</p>\r\n\r\n </React.Fragment>\r\n }\r\n {isDialogOpen && (\r\n <Dialog style={_Styles} onClose={closeDialog}>\r\n <>\r\n <Stack horizontal={false} tokens={stackTokens} styles={stackStyles}>\r\n <Stack>\r\n <h6>{getRuleValidationMessage(sessionResourceData, MessageTypeText.PopupMessageText, \"ConfirmSelectedDuplicateCustomer\", UIControlsText.ConfirmSelectedDuplicateCustomer)}</h6>\r\n </Stack>\r\n </Stack>\r\n\r\n <DialogActionsBar>\r\n <Stack horizontal horizontalAlign=\"end\" tokens={stackButtonTokens} styles={stackButtonStyles}>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseActionsDialogConfirmButton\", UIControlsText.CaseActionsDialog.ConfirmButton)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseActionsDialogConfirmButton\", UIControlsText.CaseActionsDialog.ConfirmButton)}\r\n onClick={submitToPricingProgram}\r\n />\r\n <DefaultButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseActionsDialogCancelButton\", UIControlsText.CaseActionsDialog.CancelButton)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseActionsDialogCancelButton\", UIControlsText.CaseActionsDialog.CancelButton)}\r\n onClick={closeDialog}\r\n />\r\n </Stack>\r\n </DialogActionsBar>\r\n </>\r\n </Dialog>\r\n )}\r\n <div className=\"add-new-customer-footer\">\r\n {!toggleCustomerLoading &&\r\n <div className=\"float-right \">\r\n {(!toggleCustomerHardDuplicate && !toggleCustomerSoftDuplicate) && !toggleCustomerNewRecord &&\r\n <>\r\n <PrimaryButton onClick={onSubmit} className=\"me-2\"> {saveButtonText}</PrimaryButton>\r\n <DefaultButton onClick={props.onCloseCallBack} > {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)} </DefaultButton>\r\n </>\r\n }\r\n {(toggleCustomerHardDuplicate || toggleCustomerSoftDuplicate) &&\r\n <>\r\n <PrimaryButton onClick={openDialog} className=\"me-2\"> {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PricingProgramBtnText\", UIControlsText.PricingProgramBtnText)} </PrimaryButton>\r\n {!toggleCustomerHardDuplicate &&\r\n <PrimaryButton onClick={createCustomer} > {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitNewCustomerRecord\", UIControlsText.SubmitNewCustomerRecord)} </PrimaryButton>\r\n }\r\n </>\r\n }\r\n\r\n {toggleCustomerNewRecord &&\r\n <>\r\n <PrimaryButton onClick={submitToPricingProgram} className=\"me-2\"> {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitNewCustomerRecord\", UIControlsText.SubmitNewCustomerRecord)} </PrimaryButton>\r\n <DefaultButton onClick={props.onCloseCallBack} > {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)} </DefaultButton>\r\n </>\r\n }\r\n\r\n </div >\r\n }\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default CreateUnmanagedCustomer;","import React, { useEffect, useState } from \"react\";\r\nimport Row from \"react-bootstrap/Row\";\r\nimport Col from \"react-bootstrap/Col\";\r\nimport { _Styles, DefaultPageStyles, ActionButtonStyle, textFieldStylesOneColumn } from '../../../../content/styles/Page.styles';\r\nimport { Stack, IStackStyles, IStackTokens, StackItem } from \"@fluentui/react/lib/Stack\";\r\nimport { Dropdown, IDropdownOption } from '@fluentui/react/lib/Dropdown';\r\nimport { Label } from '@fluentui/react/lib/Label';\r\nimport { Splitter, SplitterOnChangeEvent } from \"@progress/kendo-react-layout\";\r\nimport { ILegalEntity } from \"../../../../models/ILegalEntity\";\r\nimport { AffiliationType } from \"../../../../models/AffiliationType\";\r\nimport { UIConfigIdentifierConstants, UIControlsText } from '../../../../content/UIControlsText';\r\nimport { getter } from \"@progress/kendo-react-common\";\r\nimport { useInternalPricingContext } from '../context/internalpricing-context';\r\nimport { JavaScriptExtensions } from \"../../../../infrastructure/JavaScriptExtensions\";\r\nimport { AzSearchStore, Store } from \"azsearchstore\";\r\nimport { SearchBar } from \"../../../../components/shared/search/searchbar\";\r\nimport NextGenKendoGrid from \"../../../../components/shared/grid/nextgenkendogrid\"\r\nimport { IGridProps } from \"../../../../components/shared/grid/IGridProps\"\r\nimport { readGridConfig, getSelectedCountry, isFieldVisible, isNullOrEmpty, getFileArrayBuffer, readExcelHeader, processExcelDataToJson, exportToExcel, getRuleValidationMessage, getEntityDataFromSession, isFieldDisabled, getTextFieldErrorMessage } from \"../../../../components/shared/common/util\"\r\nimport { GridPageChangeEvent } from \"@progress/kendo-react-grid\";\r\nimport { ApplicationConstants } from \"../../../../models/ApplicationConstants\";\r\nimport { GridType } from \"../../../../models/GridType\";\r\nimport { CustomerType } from \"../../../../models/CustomerType\";\r\nimport { nextGenService } from \"../../../../services/NextGenService\";\r\nimport { IInternalPricingFacetProps } from \"../props/IInternalPricingFacetProps\";\r\nimport { IFacetData } from \"../../../../models/IFacetData\";\r\nimport { SearchableComboBoxComponent } from \"../../../../components/shared/searchablecombobox/searchablecombobox\";\r\nimport { ActionType } from \"../../../../models/ActionType\";\r\nimport { PageMode } from \"../../../../models/PageMode\";\r\nimport { OpportunityDealStatusCodes } from \"../../../../models/OpportunityDealStatusCodes\";\r\nimport { CoherenceDialog, CoherenceDialogFooter, CoherencePivot, CoherencePivotTabProps } from \"@cseo/controls\";\r\nimport { ICustomerVertical } from \"../../../../models/ICustomerVertical\";\r\nimport { Guid } from \"../../../../infrastructure/Guid\";\r\nimport { IAttachment } from \"../../../../models/IAttachment\";\r\nimport { encode } from \"base64-arraybuffer\";\r\nimport { UploadLegalEntity } from \"../../../../models/UploadLegalEntity\";\r\nimport { DialogType, Link, PrimaryButton } from \"office-ui-fabric-react\";\r\nimport DropDownGridCell from \"../../../../components/shared/grid/dropDownGridCell\";\r\nimport { dropDownYesOrNoData } from \"../../../../services/StaticData\";\r\nimport { PageConstants } from \"../../../pageconstants/Constants\";\r\nimport { CaseActionTypes } from \"../../common/reducer/CaseActionTypes\";\r\nimport { PageStyles } from \"../content/Page.InternalPricingProgram.Styles\";\r\nimport { RadioGridCell } from \"../../../../components/shared/grid/radioGridCell\";\r\nimport { DealType } from \"../../../../models/DealType\";\r\nimport { PanelType, Panel, ActionButton, getTheme } from \"@fluentui/react\";\r\nimport CreateUnmanagedCustomer from \"../../Customer/createUnmanagedCustomer\";\r\nimport { CustomerStatusCodes } from \"../../../../models/CustomerStatusCodes\";\r\nimport { stackContainerStyles, stackItemCustomerStyles, stackItemStyles } from '../../PricingProgramForm/PricingProgramFormUtils';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { FormRenderingService } from '../../../shared/Components/DynamicFormRendering';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { ErrorMessages } from \"../../../../content/ErrorMessages\";\r\nimport { MdppAccessibilityPanelGrid } from \"../../../../hooks/accessiblity-hooks\";\r\n\r\nconst stackStyles: Partial<IStackStyles> = { root: { width: 1100 } };\r\nconst stackTokens: IStackTokens = { childrenGap: 20 };\r\nvar selectedLegalData: ILegalEntity[] = []\r\n/**\r\n * InternalPricing LegalEntities Search And Upload Component.\r\n * @function component\r\n */\r\n//start: legal entity selection option: search/upload\r\nconst InternalPricingLegalEntitiesSearchAndUpload: React.FunctionComponent<IInternalPricingFacetProps> = (props: IInternalPricingFacetProps) => {\r\n const { internalPricingContextState, internalPricingContextDispatch } = useInternalPricingContext(); //initialize context\r\n const [userSelectedAffiliationType, setuserSelectedAffiliationType] = useState<number>(internalPricingContextState.opportunityDeals[0].affiliationType || 0);\r\n const [searchGridconfig, setSearchGridconfig] = useState<IGridProps>(readGridConfig(GridType.LegalEntitySearch));\r\n const [selectionGridconfig, setSelectionGridconfig] = useState<IGridProps>(readGridConfig(GridType.LegalEntitySelection, internalPricingContextState.opportunityDeals[0]?.affiliationType === AffiliationType.AffiliateCompanies, ApplicationConstants.LegalEntitySelectionUnitstransact));\r\n const [otleSearchGridconfig, setOTLESearchGridconfig] = useState<IGridProps>(readGridConfig(GridType.LegalEntitySearchOTLE));\r\n const [selectedLegalGridData, setSelectedLegalGridData] = useState<ILegalEntity[]>([]);\r\n const [selectedCustomer, setSelectedCustomer] = useState<ILegalEntity>();\r\n const [selectedIsPrimary, setselectedIsPrimary] = useState({ PrimaryName: \"\", PrimaryCountry: \"\", PrimaryID: \"\", CountryName: \"\" });\r\n const [legalOption, setlegalOption] = useState<string>(UIControlsText.DefaultLegalOption);\r\n const [legalOptionDisable, setlegalOptionDisable] = useState<boolean>(false);\r\n const [legalSearchChecked, setlegalSearchChecked] = useState<boolean>(true);\r\n const [showSearchFacet, setshowSearchFacet] = useState<boolean>(false);\r\n const [searchFilterButtonText, setSearchFilterButtonText] = useState<string>(UIControlsText.ShowSearchFilter);\r\n const [hideSearchFilterButton, setHideSearchFilterButton] = useState<boolean>(true);\r\n const idGetter = getter(searchGridconfig.kendoGridProps.dataItemKey);\r\n \r\n const [crmChildAccountName, setCrmChildAccountName] = useState<IFacetData[]>([]);\r\n const [selectedCrmChildAccountNameValues, setSelectedCrmChildAccountNameValues] = useState<IFacetData[]>([]);\r\n const [address, setAddress] = useState<IFacetData[]>([]);\r\n const [selectedAddressValues, setSelectedAddressValues] = useState<IFacetData[]>([]);\r\n const [city, setCity] = useState<IFacetData[]>([]);\r\n const [selectedCityValues, setSelectedCityValues] = useState<IFacetData[]>([]);\r\n const [postalCode, setPostalCode] = useState<IFacetData[]>([]);\r\n const [selectedPostalCodeValues, setSelectedPostalCodeValues] = useState<IFacetData[]>([]);\r\n const [stateProvince, setStateProvince] = useState<IFacetData[]>([]);\r\n const [selectedStateProvinceValues, setSelectedStateProvinceValues] = useState<IFacetData[]>([]);\r\n const [childCrmId, setChildCrmid] = useState<IFacetData[]>([]);\r\n const [selectedCrmidValues, setSelectedCrmidValues] = useState<IFacetData[]>([]);\r\n const [tpid, setTpid] = useState<IFacetData[]>([]);\r\n const [selectedTpidValues, setSelectedTpidValues] = useState<IFacetData[]>([]);\r\n const [gpid, setGpid] = useState<IFacetData[]>([]);\r\n const [selectedGpidValues, setSelectedGpidValues] = useState<IFacetData[]>([]);\r\n const [dunsid, setDunsid] = useState<IFacetData[]>([]);\r\n const [selectedDunsidValues, setSelectedDunsidValues] = useState<IFacetData[]>([]);\r\n let allFacetNames = ApplicationConstants.CustomerSearchFacetNames;\r\n let allSelectedFacets = [selectedCrmChildAccountNameValues, selectedAddressValues, selectedCityValues, selectedPostalCodeValues, selectedStateProvinceValues, selectedCrmidValues, selectedTpidValues, selectedGpidValues, selectedDunsidValues];\r\n const [filterString, setFilterString] = useState<string>(\"\");\r\n const [oppdealId, setOppdealId] = useState<string>((internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals[0].id) || \"\");\r\n const [savedselectionState, setsavedselectionState] = useState<any>({});\r\n const [currentUserSelection, setCurrentUserSelection] = useState<ILegalEntity[]>([]);\r\n const [isDialogHidden, setIsDialogHidden] = useState<boolean>(true);\r\n const [IsOTLE, setIsOTLE] = useState<boolean>(false);\r\n const [IsCPS, setIsCPS] = useState<boolean>(false);\r\n const [showAddCustomer, setShowAddCustomer] = useState<boolean>(false);\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const internalPricingDealTypeValue = internalPricingContextState?.opportunityDeals[0]?.dealType?.name?.toLowerCase();\r\n const [hideUnManagedCustomerEdit, SetHideUnManagedCustomerEdit] = useState<boolean>(true);\r\n const [customerSearchGuidanceText, setCustomerSearchGuidanceText] = useState<string>();\r\n const [hideCustomerDialog, setHideCustomerDialog] = useState(true);\r\n const [customerMessage, setCustomerMessage] = useState<string>(\"\");\r\n const [customerName, setCustomerName] = useState<string>(\"\");\r\n\r\n //Start: Edit mode functionality\r\n useEffect(() => {\r\n if (internalPricingContextState?.opportunityDeals[0]?.dealType?.name === DealType.OTLE) {\r\n setIsOTLE(true);\r\n setGuidanceText();\r\n\r\n if (internalPricingContextState?.opportunityDeals[0]?.geoCountries) {\r\n internalPricingContextState.opportunityDeals[0].dealCustomerCountry = internalPricingContextState?.opportunityDeals[0]?.geoCountries[0].countryId;\r\n }\r\n }\r\n else if (internalPricingContextState?.opportunityDeals[0]?.dealType?.name === DealType.CPStrategic) {\r\n setIsCPS(true);\r\n }\r\n if (internalPricingContextState?.opportunityDeals[0]?.id) {\r\n setOppdealId(internalPricingContextState?.opportunityDeals[0]?.id);\r\n var isCustomerActive = internalPricingContextState.isCustomerActive;\r\n if(isCustomerActive !== undefined && !isCustomerActive && internalPricingContextState?.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.PendingSecondaryReview){\r\n setHideCustomerDialog(false);\r\n var customers = internalPricingContextState?.opportunityDeals[0]?.dealCustomers;\r\n if (customers !== undefined && customers.length > 0) {\r\n setCustomerName(customers[0]?.legalEntityName);\r\n if (customers[0]?.isManaged) {\r\n setCustomerMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"InActiveManagedCustomerMessage\", ErrorMessages.InActiveManagedCustomerMessage))\r\n }\r\n else {\r\n setCustomerMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"InActiveUnManagedCustomerMessage\", ErrorMessages.InActiveUnManagedCustomerMessage))\r\n }\r\n }\r\n }\r\n }\r\n if (internalPricingContextState.selectedPivot === UIControlsText.LegalEntitiesText && (\r\n internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() || internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase())) {\r\n if (internalPricingContextState?.opportunityDeals[0]?.dealCustomers) {\r\n let legalentity: ILegalEntity[] = internalPricingContextState?.opportunityDeals[0]?.dealCustomers;\r\n if (internalPricingContextState?.opportunityDeals[0].dealType?.name === DealType.OTLE) {\r\n setSelectedCustomer(legalentity[0]);\r\n if (legalentity && legalentity?.length > 0 && internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()\r\n && legalentity[0].isManaged === false && (internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.Approved || OpportunityDealStatusCodes.Incomplete)) {\r\n SetHideUnManagedCustomerEdit(false);\r\n }\r\n }\r\n let primaryLegalEntityId: string = \"\";\r\n const selectionState: any = {};\r\n if (internalPricingContextState.pageMode?.toLowerCase() !== PageMode.View.toLowerCase()) {\r\n var primaryLegal = legalentity.filter(le => le.customerType === CustomerType.Primary);\r\n primaryLegal.forEach(item => { selectionState[idGetter(item)] = true });\r\n setsavedselectionState(selectionState);\r\n\r\n setlegalOptionDisable(legalentity.length > 0);\r\n if (primaryLegal.length > 0) {\r\n //there will be one primary, so taking 0th element from filter list\r\n setPrimaryLegalentity(primaryLegal[0]);\r\n primaryLegalEntityId = primaryLegal[0].id || \"\";\r\n }\r\n }\r\n legalentity = getLegalEnityModel(legalentity, primaryLegalEntityId, false, false, ActionType.Update);\r\n updateSelectedLegalAndDispatch(legalentity, selectionState);\r\n }\r\n }\r\n }, [internalPricingContextState.selectedPivot, internalPricingContextState?.opportunityDeals[0]?.id]);\r\n //end: Edit mode functionality\r\n\r\n //spliter related: helps to divide page in two sections and define content % here.\r\n const [panes, setPanes] = useState<Array<any>>();\r\n React.useEffect(() => {\r\n setPanes(props.splitterConfig);\r\n }, []);\r\n //change event for expand an collapse search filter\r\n const onSplitterChange = (event: SplitterOnChangeEvent) => {\r\n setPanes(event.newState);\r\n var isCollapsed = event.newState[0].collapsed || false;\r\n setSearchFilterButtonText(isCollapsed ? UIControlsText.ShowSearchFilter : UIControlsText.HideSearchFilter)\r\n };\r\n useEffect(() => {\r\n setuserSelectedAffiliationType(internalPricingContextState.opportunityDeals[0].affiliationType || 0);\r\n var isUnitstransactVisible = false;\r\n if (JavaScriptExtensions.isDefined(internalPricingContextState.opportunityDeals[0].affiliationType)) {\r\n isUnitstransactVisible = internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies;\r\n var legalEntityConfig = readGridConfig(GridType.LegalEntitySelection, isUnitstransactVisible, ApplicationConstants.LegalEntitySelectionUnitstransact);\r\n var primaryLegalEntity: ILegalEntity = {} as ILegalEntity;\r\n //reset unitscommitted when affiliationtype changed in deal overview tab\r\n var updatedLegalData = selectedLegalGridData.map(item => {\r\n item.unitsCommitted = 0\r\n return item;\r\n });\r\n legalEntityConfig.kendoGridProps.data = updatedLegalData;\r\n legalEntityConfig.kendoGridProps.totalRecords = updatedLegalData.length;\r\n setSelectionGridconfig(legalEntityConfig)\r\n let primaryFilter = updatedLegalData.filter((item) => item.customerType === CustomerType.Primary);\r\n if (primaryFilter && primaryFilter.length > 0) {\r\n primaryLegalEntity = primaryFilter[0];\r\n }\r\n dispatchSelectedData(updatedLegalData, primaryLegalEntity.id || \"\", false);\r\n if (isUnitstransactVisible) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.totalunitsTransactedChanged, dealVolume: { key: oppdealId, value: 0 } });\r\n }\r\n }\r\n\r\n if (isUnitstransactVisible){\r\n setExcelHeaderColumns([UploadLegalEntity.Country, UploadLegalEntity.LegalEntityName, UploadLegalEntity.TPID, UploadLegalEntity.CustomerAccountId, UploadLegalEntity.Segment, UploadLegalEntity.CustomerVertical, UploadLegalEntity.DealVolume, UploadLegalEntity.IsManaged])\r\n }\r\n else{\r\n setExcelHeaderColumns([UploadLegalEntity.Country, UploadLegalEntity.LegalEntityName, UploadLegalEntity.TPID, UploadLegalEntity.CustomerAccountId, UploadLegalEntity.Segment, UploadLegalEntity.CustomerVertical, UploadLegalEntity.IsManaged])\r\n }\r\n }, [internalPricingContextState.opportunityDeals[0].affiliationType]);\r\n \r\n //On Change of context object Deal customers Refresh/Set the grid data.\r\n useEffect(() => {\r\n let legalEntityRecords = internalPricingContextState.opportunityDeals[0].dealCustomers;\r\n if (legalEntityRecords != undefined && legalEntityRecords != null && legalEntityRecords.length > 0) {\r\n let updatedConfig = { ...selectionGridconfig };\r\n updatedConfig.kendoGridProps.data = legalEntityRecords;\r\n selectedLegalData = legalEntityRecords;\r\n setSelectedLegalGridData(legalEntityRecords);\r\n setSelectionGridconfig(updatedConfig);\r\n }\r\n }, [internalPricingContextState.opportunityDeals[0].dealCustomers]);\r\n\r\n const dispatchSelectedData = (selectedLegals: ILegalEntity[], primaryLegalID: string, isAddition: boolean, action?: string) => {\r\n let legalData = getLegalEnityModel(selectedLegals, primaryLegalID, true, isAddition, action);\r\n var totalunits = 0;\r\n //get total units except deleted items\r\n if (internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies) {\r\n legalData.map((item: ILegalEntity) => { item.action !== ActionType.Delete ? totalunits += item.unitsCommitted : totalunits += 0 });\r\n }\r\n else {\r\n totalunits = internalPricingContextState.opportunityDeals[0].dealVolume || 0;\r\n }\r\n internalPricingContextDispatch({ type: CaseActionTypes.selectedLegalEntityChanged, dealCustomers: { key: oppdealId, value: legalData } });\r\n internalPricingContextDispatch({ type: CaseActionTypes.totalunitsTransactedChanged, dealVolume: { key: oppdealId, value: totalunits } });\r\n }\r\n //construct legalentity model for selection grid\r\n const getLegalEnityModel = (legalEntities: ILegalEntity[], primaryLegalID: string, isManaged: boolean, isAddition: boolean, action?: string): ILegalEntity[] => {\r\n let selectedEntites: ILegalEntity[] = [];\r\n selectedEntites = legalEntities.map((item: any) => {\r\n if(!item.isUploadedRecord){\r\n return {\r\n id: item.id ? item.id : item.customerId,\r\n customerId: item.customerId ? item.customerId : item.id,\r\n country: item.Country ? item.Country : item.country,\r\n crmAccountId: item.ChildCRMID ? item.ChildCRMID : item.crmAccountId,\r\n legalEntityName: item.OrganizationName ? item.OrganizationName : item.legalEntityName,\r\n tpid: item.TPID ? item.TPID : item.tpid,\r\n segment: item.Segment ? item.Segment : item.segment,\r\n vertical: item.Vertical ? item.Vertical : item.vertical,\r\n verticalCategory: item.VerticalCategory ? item.VerticalCategory : item.verticalCategory,\r\n unitsCommitted: item.unitsCommitted === undefined ? 0 : item.unitsCommitted,\r\n isManaged: item.isManaged !== undefined ? item.isManaged : isManaged,\r\n customerType: item.id === primaryLegalID ? CustomerType.Primary : CustomerType.Affiliates,\r\n errors: \"\",\r\n warnings: \"\",\r\n action: item.action ? item.action : action,\r\n managedCustomerId: item.managedCustomerId,\r\n editMode: item.editMode,\r\n legalEntityType: item.legalEntityType,\r\n isUploadedRecord: false\r\n } as ILegalEntity\r\n }\r\n else{\r\n return {\r\n id: item.id? item.id : Guid.newGuid(),\r\n customerId: item.customerId,\r\n customerType: item.customerType,\r\n country: item.country?.toString().trim(),\r\n crmAccountId: item.crmAccountId?.toString().trim(),\r\n legalEntityName: item.legalEntityName?.toString().trim(),\r\n tpid: Number.isNaN(Number(item.tpid))? 0 : Number(item.tpid),\r\n segment: item.segment?.toString().trim(),\r\n vertical: item.vertical?.toString().trim(),\r\n unitsCommitted: item.unitsCommitted,\r\n isManaged: item.isManaged,\r\n errors: item.errors?.toString().trim(),\r\n action: ActionType.Add,\r\n isUploadedRecord: true\r\n } as ILegalEntity\r\n }\r\n })\r\n return selectedEntites;\r\n }\r\n /** Start: AZ Search Configuration */\r\n const store = new AzSearchStore();\r\n const [selectedCountries, setSelectedCountries] = useState<IDropdownOption[]>([]);\r\n const [countriesDropDown, setCountries] = useState<IDropdownOption[]>([]);\r\n const [selectedSearchValue, setSelectedSearchValue] = useState<string>(\"\");\r\n const [globalSearchFilterExpression, setGlobalSearchFilterExpression] = useState<string>(\"\");\r\n\r\n useEffect(() => {\r\n setCountriesDropdown(internalPricingContextState.opportunityDeals[0].geoCountries?.filter(c => c.action !== ActionType.Delete).map(x => x.countryId) || []);\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() || internalPricingContextState.pageMode?.toLowerCase() === PageMode.Create.toLowerCase()) {\r\n resetSelectedData(internalPricingContextState.opportunityDeals[0].geoCountries?.filter(c => c.action !== ActionType.Delete).map(x => x.countryId) || []);\r\n }\r\n\r\n let countryValues = internalPricingContextState.opportunityDeals[0].geoCountries?.filter(c => c.action !== ActionType.Delete).map(x => x.countryName) || [];\r\n //set the global filter search expression\r\n if (countryValues.length > 0) {\r\n setGlobalSearchFilterExpression(countryValues.map(item => ApplicationConstants.CustomerSearchCountryGlobalIndex + \" eq '\" + item + \"'\").join(\" or \"));\r\n }\r\n }, [internalPricingContextState.opportunityDeals[0].geoCountries]);\r\n\r\n // define search configuration\r\n store.setConfig({\r\n index: ApplicationConstants.CustomerSearchIndex,\r\n queryKey: process.env.REACT_APP_SEARCH_API_KEY || \"\",\r\n service: process.env.REACT_APP_SEARCH_API_ENV || \"\"\r\n });\r\n\r\n // set suggester, project some additional fields into the returned suggestions\r\n store.updateSuggestionsParameters({\r\n suggesterName: ApplicationConstants.CustomerSearchSuggesterName,\r\n select: ApplicationConstants.CustomerSearchSelectColumn,\r\n top: ApplicationConstants.TopSearchSuggesstions,\r\n fuzzy: ApplicationConstants.IsFuzzy,\r\n filter: globalSearchFilterExpression,\r\n });\r\n\r\n const suggestionsProcessor = function (results: any) {\r\n return results.map(function (result: any) {\r\n result.searchText = result[\"@search.text\"];\r\n return result;\r\n });\r\n };\r\n store.setSuggestionsProcessor(suggestionsProcessor);\r\n\r\n // Country selection change\r\n const onCountrySelectionChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n setSelectedCountries((prevState: IDropdownOption[]) => {\r\n let newState = item.selected ? [...prevState, item as IDropdownOption] : prevState.filter(key => key.key !== item.key)\r\n return newState;\r\n });\r\n }\r\n };\r\n //this function used to reset unit transact value and filter country based on geo selection in deal overview\r\n const resetSelectedData = (dealCountries: string[]): void => {\r\n var countriesDropdownValues: IDropdownOption[] = getSelectedCountry(dealCountries);\r\n var newSelection: Array<ILegalEntity> = [];\r\n countriesDropdownValues.forEach((countryItem: IDropdownOption) => {\r\n internalPricingContextState.opportunityDeals[0].dealCustomers?.filter(\r\n (selectedItem: ILegalEntity) => selectedItem.country === countryItem.text)\r\n .map((filteredItem: ILegalEntity) => {\r\n newSelection.push(filteredItem);\r\n });\r\n });\r\n //reset when primary country removed from deal overview\r\n if (countriesDropdownValues.findIndex((item) => item.text === selectedIsPrimary.CountryName) === -1) {\r\n setselectedIsPrimary({ [\"PrimaryName\"]: \"\", [\"PrimaryID\"]: \"\", [\"PrimaryCountry\"]: \"\", [\"CountryName\"]: \"\" })\r\n }\r\n setCustomerInfoForOpportunityDeal();\r\n updateSelectedLegalAndDispatch(newSelection, savedselectionState, ActionType.Update);\r\n selectedLegalData = newSelection;\r\n\r\n //reset search when geo country changed \r\n let searchlegalConfig = { ...searchGridconfig };\r\n searchlegalConfig.kendoGridProps.data = [];\r\n searchlegalConfig.kendoGridProps.totalRecords = 0;\r\n setSearchGridconfig({ ...searchlegalConfig });\r\n onClear();\r\n };\r\n //reset search grid selection after adding\r\n const resetSearchgrid = (deletedItem: ILegalEntity, gridData: ILegalEntity[]): void => {\r\n let searchlegalConfig = { ...searchGridconfig };\r\n const state: any = {};\r\n if (gridData.length > 0) {\r\n currentUserSelection?.forEach(item => {\r\n if (item.id !== deletedItem.id) {\r\n state[idGetter(item)] = true\r\n }\r\n });\r\n setCurrentUserSelection(currentUserSelection.filter(item => item.id !== deletedItem.id));\r\n }\r\n else {\r\n setCurrentUserSelection(state);\r\n }\r\n searchlegalConfig.kendoGridProps.defaultMainGridSelectionstate = state;\r\n setSearchGridconfig({ ...searchlegalConfig });\r\n }\r\n //function to update country dropdown according to the geo country selection\r\n const setCountriesDropdown = (dealCountries: string[]): void => {\r\n setCountries(getSelectedCountry(dealCountries));\r\n setSelectedCountries(getSelectedCountry(dealCountries));\r\n }\r\n\r\n // Get customer data from Index and populate grid\r\n const getCustomerSearchData = async (filterStringExpression: string, selectedValue: string, skip: number): Promise<void> => {\r\n try {\r\n if (selectedCountries.length > 0) {\r\n store.setGlobalFilter(ApplicationConstants.CustomerSearchCountryGlobalIndex, selectedCountries.map(item => ApplicationConstants.CustomerSearchCountryGlobalIndex + \" eq '\" + item.text + \"'\").join(\" or \"));\r\n if (filterStringExpression.length == 0) {\r\n filterStringExpression = props.createGlobalFilterExpression([ApplicationConstants.CustomerSearchCountryGlobalIndex], [selectedCountries.map(item => item.text)], false);\r\n\r\n if (filterStringExpression.substring(filterStringExpression.length - 4) == 'and ') {\r\n filterStringExpression = filterStringExpression.slice(0, -4);\r\n }\r\n }\r\n }\r\n\r\n let facetString = props.facetList(allFacetNames);\r\n let apiReturnedData = await Promise.resolve(nextGenService.getCustomerSearchResults(filterStringExpression, selectedValue, skip, facetString));\r\n\r\n if (apiReturnedData.status === 200) {\r\n let searchConfig;\r\n if (IsCPS) {\r\n searchConfig = { ...searchGridconfig };\r\n }\r\n else {\r\n searchConfig = { ...otleSearchGridconfig }\r\n }\r\n searchConfig.kendoGridProps.data = (apiReturnedData.data as { [key: string]: any })[\"value\"] as string;\r\n searchConfig.kendoGridProps.totalRecords = (apiReturnedData.data as { [key: string]: any })[\"@odata.count\"] as number;\r\n setSearchGridconfig({ ...searchConfig });\r\n\r\n for (var i = 0; i < allFacetNames.length; i++) {\r\n setComboBoxDatasource((apiReturnedData.data as { [key: string]: any })[\"@search.facets\"][allFacetNames[i]] as string[], allFacetNames[i]);\r\n } \r\n setshowSearchFacet(true);\r\n setPanes(props.splitterConfig);\r\n setHideSearchFilterButton(false);\r\n }\r\n }\r\n catch (error) {\r\n // if there's an error, log it\r\n console.log(error);\r\n }\r\n }\r\n\r\n // Grid Page change\r\n const onPageChange = (event: GridPageChangeEvent): void => {\r\n store.setInput(selectedSearchValue);\r\n getCustomerSearchData(filterString, selectedSearchValue, event.page.skip);\r\n };\r\n\r\n const onCustomerSelectionHandler = (cellId: string, selectedValue: any): void => {\r\n let searchConfig = { ...otleSearchGridconfig };\r\n let customerData;\r\n if (cellId != \"unManaged\") {\r\n customerData = searchConfig.kendoGridProps.data.filter((x: { id: Guid; }) => x.id === selectedValue)[0];\r\n }\r\n else {\r\n customerData = selectedValue;\r\n }\r\n\r\n let opportunityDeal = internalPricingContextState.opportunityDeals[0];\r\n \r\n let newSelection = customerData != undefined ? [{ ...customerData}] : [];\r\n opportunityDeal.dealCustomers = getLegalEnityModel(newSelection, getPrimaryLegalID(newSelection), true, true, ActionType.Add);\r\n opportunityDeal.dealCustomers[0].customerType = CustomerType.Primary;\r\n setSelectedCustomer(opportunityDeal.dealCustomers[0]);\r\n setPrimaryLegalentity(opportunityDeal.dealCustomers[0])\r\n setCustomerInfoForOpportunityDeal();\r\n }\r\n\r\n // make generic for OTLE/CPS, using primary legal entity for customer name in case of CPS. If more than one country for CPS don't set customer country.\r\n const setCustomerInfoForOpportunityDeal = () => {\r\n let opportunitydeal = internalPricingContextState.opportunityDeals;\r\n let oppDealCustomer = opportunitydeal[0].dealCustomers;\r\n let geoCountries = opportunitydeal[0].geoCountries;\r\n\r\n if (geoCountries != undefined && oppDealCustomer != undefined) {\r\n if (IsOTLE && oppDealCustomer[0]?.legalEntityName != undefined) {\r\n let customerCountryName = oppDealCustomer[0].country;\r\n let dealCustomerCountry = geoCountries.filter(c => c.countryName == customerCountryName);\r\n\r\n opportunitydeal[0].dealCustomerCountry = dealCustomerCountry[0].countryId;\r\n opportunitydeal[0].customerName = oppDealCustomer[0].legalEntityName;\r\n }\r\n else if (IsCPS && (oppDealCustomer.find(x => x.customerType === 1) != undefined))\r\n {\r\n let primaryCust = oppDealCustomer.find(x => x.customerType === 1);\r\n if (geoCountries.length === 1 && (primaryCust?.country != '' || undefined)) {\r\n let PrimaryCountry = geoCountries.filter(x => x.countryName == primaryCust?.country)\r\n opportunitydeal[0].dealCustomerCountry = PrimaryCountry[0].countryId;\r\n }\r\n else \r\n {\r\n opportunitydeal[0].dealCustomerCountry = undefined;\r\n }\r\n opportunitydeal[0].customerName = primaryCust?.legalEntityName;\r\n }\r\n }\r\n }\r\n\r\n // On click Searchbar Submit button\r\n const onSubmit = (selectedValue: string): void => {\r\n setSelectedSearchValue(selectedValue);\r\n clearFacets();\r\n setSearchFilterButtonText(UIControlsText.ShowSearchFilter);\r\n getCustomerSearchData(\"\", selectedValue, 0);\r\n };\r\n\r\n // Reset facets\r\n const clearFacets = (): void => {\r\n for (let i = 0; i < allFacetNames.length; i++) {\r\n setComboBoxDatasource([], allFacetNames[i]);\r\n setSelectedValuesDatasource([], allFacetNames[i]);\r\n }\r\n };\r\n\r\n // Clear Search\r\n const onClear = (): void => {\r\n setSelectedSearchValue(\"\");\r\n if (IsOTLE) {\r\n setOTLESearchGridconfig(readGridConfig(GridType.LegalEntitySearchOTLE));\r\n }\r\n else {\r\n setSearchGridconfig(readGridConfig(GridType.LegalEntitySearch));\r\n }\r\n clearFacets();\r\n setshowSearchFacet(false);\r\n setPanes(props.splitterConfig);\r\n setSearchFilterButtonText(UIControlsText.ShowSearchFilter)\r\n setHideSearchFilterButton(true);\r\n };\r\n\r\n // method to get primarylegalid\r\n const getPrimaryLegalID = (legalEntity: ILegalEntity[]): string => {\r\n var primaryIndex = legalEntity.findIndex((item) => item.customerType === CustomerType.Primary);\r\n let primaryId = (primaryIndex !== -1 ? legalEntity[primaryIndex].id : selectedIsPrimary.PrimaryID) || \"\"\r\n return primaryId;\r\n }\r\n /** End: AZ Search Configuration */\r\n\r\n\r\n //on click checkbox, to selection grid at bottom\r\n const addSelectedLegalEntites = (selectedLegals: ILegalEntity[]): void => {\r\n var newSelectedLegals: ILegalEntity[] = [];\r\n let legalData = getLegalEnityModel(selectedLegals, getPrimaryLegalID(selectedLegals), true, true, ActionType.Add);\r\n if (legalData.length > 0) {\r\n newSelectedLegals = internalPricingContextState.opportunityDeals[0].dealCustomers || [];\r\n legalData.map(item => {\r\n var findItem = undefined;\r\n //validate new customer by managedCustomerId on approved case. as customerId that retruns from api is not matching with legal search(both are different entity)\r\n if (internalPricingContextState.pageMode === PageMode.Edit && internalPricingContextState.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.Draft) {\r\n findItem = newSelectedLegals.find(x => x.managedCustomerId ? x.managedCustomerId === item.customerId : x.customerId === item.customerId);\r\n }\r\n else {\r\n findItem = newSelectedLegals.find(x => x.customerId === item.customerId);\r\n }\r\n if (findItem === undefined) {\r\n newSelectedLegals.push({ ...item, editMode: item.editMode });\r\n }\r\n });\r\n setlegalOptionDisable(newSelectedLegals.length === 0 ? false : true);\r\n selectedLegalData = newSelectedLegals;\r\n updateSelectedLegalAndDispatch(newSelectedLegals, savedselectionState, ActionType.Add);\r\n setCurrentUserSelection(selectedLegals);\r\n }\r\n }\r\n\r\n //hide clearall based on case status/pagemode\r\n const hideClearAll = (legalEnities: ILegalEntity[]): boolean => {\r\n return (internalPricingContextState.pageMode === PageMode.View ||\r\n (internalPricingContextState.pageMode === PageMode.Edit && internalPricingContextState.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.Draft)) ? false : true;\r\n }\r\n\r\n //function used to update grid data based on add/reset\r\n const updateSelectedLegalAndDispatch = (legalEnities: ILegalEntity[], selectionState?: any, action?: string): void => {\r\n var legalEntityWithoutDelete = legalEnities.filter(item => item.action !== ActionType.Delete)\r\n setSelectedLegalGridData(legalEntityWithoutDelete);\r\n var isUnitstransactVisible = internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies;\r\n let selectedlegalConfig = readGridConfig(GridType.LegalEntitySelection, isUnitstransactVisible, ApplicationConstants.LegalEntitySelectionUnitstransact);\r\n if (internalPricingContextState.pageMode === PageMode.View || (internalPricingContextState.pageMode === PageMode.Edit && internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview)) {\r\n selectedlegalConfig.kendoGridProps.data = legalEntityWithoutDelete;\r\n //avoid editing deal volume in view mode\r\n var idx = selectedlegalConfig.kendoGridProps.columns.findIndex(item => item.apiField === ApplicationConstants.LegalEntitySelectionUnitstransact);\r\n if (idx !== -1) {\r\n selectedlegalConfig.kendoGridProps.columns[idx] = {\r\n ...selectedlegalConfig.kendoGridProps.columns[idx], [\"isEditable\"]: false\r\n };\r\n }\r\n //hiding is Primary column in view mode\r\n if (selectedlegalConfig.kendoGridProps.additionalColumns) {\r\n var index = selectedlegalConfig.kendoGridProps.additionalColumns?.findIndex(item => item.apiField === ApplicationConstants.LegalEntitySelectionIsPrimary);\r\n if (index !== -1) {\r\n selectedlegalConfig.kendoGridProps.additionalColumns[index] = {\r\n ...selectedlegalConfig.kendoGridProps.additionalColumns[index], [\"isVisible\"]: false\r\n };\r\n }\r\n }\r\n //Showing Legal Entity Type in view mode\r\n var idx = selectedlegalConfig.kendoGridProps.columns.findIndex(item => item.apiField === ApplicationConstants.LegalEntityType);\r\n if (idx !== -1) {\r\n selectedlegalConfig.kendoGridProps.columns[idx] = {\r\n ...selectedlegalConfig.kendoGridProps.columns[idx], [\"isVisible\"]: true\r\n };\r\n }\r\n if (selectedlegalConfig.kendoGridProps.actionTypes) {\r\n selectedlegalConfig.kendoGridProps.actionTypes.showDownloadExcelGridAction = true\r\n selectedlegalConfig.kendoGridProps.actionTypes.showRowEditGridAction = false\r\n selectedlegalConfig.kendoGridProps.actionTypes.showRowDeleteGridAction = false\r\n selectedlegalConfig.kendoGridProps.actionTypes.showSelectAllCheckboxGridAction = false\r\n selectedlegalConfig.kendoGridProps.actionTypes.showAddNewRowGridAction = false\r\n }\r\n }\r\n else {\r\n if (selectedlegalConfig.kendoGridProps.actionTypes) {\r\n selectedlegalConfig.kendoGridProps.actionTypes.showDownloadExcelGridAction = false\r\n }\r\n selectedlegalConfig.kendoGridProps.data = legalEntityWithoutDelete;\r\n }\r\n if (selectionState && internalPricingContextState.pageMode !== PageMode.Create) {\r\n selectedlegalConfig.kendoGridProps.defaultMainGridSelectionstate = selectionState;\r\n if (internalPricingContextState.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.Draft) {\r\n selectedlegalConfig.kendoGridProps.editMode = true;\r\n }\r\n else {\r\n selectedlegalConfig.kendoGridProps.editMode = false;\r\n }\r\n }\r\n else {\r\n selectedlegalConfig.kendoGridProps.editMode = false;\r\n }\r\n //to hide clear all button in view mode\r\n if (selectedlegalConfig.kendoGridProps.actionTypes?.showClearAllGridAction) {\r\n selectedlegalConfig.kendoGridProps.actionTypes.showClearAllGridAction = hideClearAll(legalEntityWithoutDelete)\r\n }\r\n selectedlegalConfig.kendoGridProps.totalRecords = legalEntityWithoutDelete.length;\r\n //sending selection state to grid to avoid default selection when remove rows, this is applicable for all create/edit/view\r\n const primarySelectionState: any = {};\r\n legalEntityWithoutDelete.forEach(item => { primarySelectionState[idGetter(item)] = item.customerType === CustomerType.Primary });\r\n selectedlegalConfig.kendoGridProps.defaultMainGridSelectionstate = primarySelectionState;\r\n setSelectionGridconfig({ ...selectedlegalConfig });\r\n setSelectedLegalGridData(legalEntityWithoutDelete);\r\n selectedLegalData = legalEntityWithoutDelete;\r\n dispatchSelectedData(legalEnities, getPrimaryLegalID(legalEnities), false, action);\r\n }\r\n\r\n //callback function on checkbox selection of header and/or row(s)\r\n const onRowSelectionCallBack = (selectedState: any) => {\r\n const selectedlegals: ILegalEntity[] = [];\r\n const searchGridDatawithSelection = searchGridconfig.kendoGridProps.data?.map((item: any) => (\r\n {\r\n ...item, [searchGridconfig.kendoGridProps.selectedField]: selectedState[idGetter(item)]\r\n }));\r\n searchGridDatawithSelection?.map((item: any) => {\r\n if (item.selected === true) {\r\n selectedlegals.push(Object.assign({ inEdit: undefined }, item));\r\n }\r\n });\r\n addSelectedLegalEntites(selectedlegals);\r\n }\r\n\r\n //callback function on checkbox selection of isPrimary\r\n const onPrimarySelectionCallBack = async (dataItem: any, checked: boolean) => {\r\n checked ?\r\n setPrimaryLegalentity(dataItem) : setselectedIsPrimary({ [\"PrimaryName\"]: \"\", [\"PrimaryID\"]: \"\", [\"PrimaryCountry\"]: \"\", [\"CountryName\"]: \"\" })\r\n const selectionState: any = {};\r\n let updatedLegal = selectedLegalData.map((item: ILegalEntity) => {\r\n if (item.id === dataItem.id) {\r\n selectionState[idGetter(item)] = checked;\r\n item.customerType = checked ? CustomerType.Primary : CustomerType.Affiliates;\r\n }\r\n else {\r\n selectionState[idGetter(item)] = false;\r\n item.customerType = CustomerType.Affiliates;\r\n }\r\n return item;\r\n });\r\n setCustomerInfoForOpportunityDeal();\r\n var isUnitstransactVisible = internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies;\r\n let updatedConfig = readGridConfig(GridType.LegalEntitySelection, isUnitstransactVisible, ApplicationConstants.LegalEntitySelectionUnitstransact);\r\n updatedConfig.kendoGridProps.defaultMainGridSelectionstate = selectionState;\r\n updatedConfig.kendoGridProps.data = updatedLegal;\r\n setSelectionGridconfig(updatedConfig);\r\n setsavedselectionState(selectionState);\r\n dispatchSelectedData(updatedLegal, checked ? dataItem.id : \"\", false);\r\n selectedLegalData = updatedLegal;\r\n try {\r\n if (checked && !isNullOrEmpty(dataItem.vertical) && !isNullOrEmpty(dataItem.verticalCategory)) {\r\n let customerVertical: ICustomerVertical = { name: dataItem.vertical, category: dataItem.verticalCategory };\r\n let apiReturnedData = await Promise.resolve(nextGenService.getBusinessVertical(customerVertical));\r\n if (apiReturnedData.status === 200 && apiReturnedData.data) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealVerticalChanged, dealDropDownValue: { key: oppdealId, value: apiReturnedData.data.id } })\r\n }\r\n }\r\n else {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealVerticalChanged, dealDropDownValue: { key: oppdealId, value: Guid.emptyGuid() } })\r\n }\r\n }\r\n catch (error) {\r\n // if there's an error, log it\r\n console.log(error);\r\n }\r\n }\r\n\r\n function setPrimaryLegalentity(dataItem: any) {\r\n setselectedIsPrimary({\r\n [\"PrimaryName\"]: \" Primary Legal Entity Name : \" + dataItem.legalEntityName,\r\n [\"PrimaryID\"]: dataItem.id,\r\n [\"PrimaryCountry\"]: \" Primary Legal Country : \" + dataItem.country + \",\",\r\n [\"CountryName\"]: dataItem.country\r\n })\r\n setCustomerInfoForOpportunityDeal();\r\n }\r\n\r\n //callback function on delete click event of selected legal entites\r\n const onDeleteCallBack = (deletedRowData: any, refreshedGridData: ILegalEntity[]) => {\r\n var isUnitstransactVisible = internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies;\r\n let deletedlegalConfig = readGridConfig(GridType.LegalEntitySelection, isUnitstransactVisible, ApplicationConstants.LegalEntitySelectionUnitstransact);\r\n deletedlegalConfig.kendoGridProps.data = refreshedGridData\r\n deletedlegalConfig.kendoGridProps.totalRecords = refreshedGridData.length;\r\n //to hide clear all button in approved case\r\n if (deletedlegalConfig.kendoGridProps.actionTypes?.showClearAllGridAction) {\r\n deletedlegalConfig.kendoGridProps.actionTypes.showClearAllGridAction = hideClearAll(refreshedGridData)\r\n }\r\n if (internalPricingContextState.opportunityDeals[0].dealCustomers?.findIndex((item) => item.customerType === CustomerType.Primary) != -1 && internalPricingContextState.pageMode !== PageMode.Create) {\r\n deletedlegalConfig.kendoGridProps.editMode = true;\r\n }\r\n else {\r\n deletedlegalConfig.kendoGridProps.editMode = false;\r\n }\r\n setSelectionGridconfig({ ...deletedlegalConfig });\r\n setSelectedLegalGridData(refreshedGridData);\r\n selectedLegalData = refreshedGridData;\r\n setlegalOptionDisable(refreshedGridData.length === 0 ? false : true);\r\n if (selectedIsPrimary.PrimaryID === deletedRowData.id || isNullOrEmpty(deletedRowData.id))\r\n setselectedIsPrimary({ [\"PrimaryName\"]: \"\", [\"PrimaryID\"]: \"\", [\"PrimaryCountry\"]: \"\", [\"CountryName\"]: \"\" });\r\n\r\n dispatchSelectedData(refreshedGridData, getPrimaryLegalID(refreshedGridData), false);\r\n resetSearchgrid(deletedRowData, refreshedGridData);\r\n }\r\n \r\n //callback function on edit click event of selected legal entites\r\n const onEditCallBack = (data: any) => {\r\n if (!isNullOrEmpty(data)) {\r\n data.errors = validateExcelRecord(data);\r\n let tempData = internalPricingContextState.opportunityDeals[0].dealCustomers || [];;\r\n let editedRowIndex = tempData.findIndex((obj => obj.id == data.id));\r\n if (editedRowIndex != -1)\r\n tempData[editedRowIndex] = data;\r\n else {\r\n data.Id = tempData.length + 1;\r\n tempData.unshift(data);\r\n }\r\n dispatchSelectedData([...tempData], tempData.filter(x => x.customerType == CustomerType.Primary)[0]?.id ||\"\",true);\r\n validateDealCustomers();\r\n let updatedConfig = readGridConfig(GridType.LegalEntitySelection, internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies, ApplicationConstants.LegalEntitySelectionUnitstransact);\r\n updatedConfig.kendoGridProps.data = tempData;\r\n setSelectionGridconfig(updatedConfig);\r\n }\r\n }\r\n\r\n //callback function on click of process button in legal entities, this will help us to enable/disable radio selection\r\n const onProcessCallBack = (excelProps: any) => {\r\n setlegalOptionDisable(excelProps.processedCount === 0 ? false : true);\r\n }\r\n\r\n // Method called on onChange event of any child combobox (facet)\r\n const selectedValues = async (selectedValue: any[], facetName: string): Promise<void> => {\r\n try {\r\n // create filter expression based on selected facet data\r\n let filterStringExpression = \"\";\r\n if (selectedCountries.length > 0) {\r\n filterStringExpression = filterStringExpression + props.createGlobalFilterExpression([ApplicationConstants.CustomerSearchCountryGlobalIndex], [selectedCountries.map(item => item.text)], false);\r\n }\r\n\r\n filterStringExpression = filterStringExpression + props.createFilterExpression(allFacetNames, facetName, selectedValue, allSelectedFacets);\r\n\r\n if (filterStringExpression.substring(filterStringExpression.length - 4) == 'and ') {\r\n filterStringExpression = filterStringExpression.slice(0, -4);\r\n }\r\n\r\n setFilterString(filterStringExpression);\r\n\r\n let facetString = props.facetList(allFacetNames);\r\n let apiReturnedData = await Promise.resolve(nextGenService.getCustomerSearchResults(filterStringExpression, selectedSearchValue, 0, facetString))\r\n\r\n if (apiReturnedData.status === 200) {\r\n\r\n let searchlegalConfig;\r\n if (IsOTLE) {\r\n searchlegalConfig = { ...otleSearchGridconfig };\r\n }\r\n else {\r\n searchlegalConfig = { ...searchGridconfig };\r\n }\r\n searchlegalConfig.kendoGridProps.data = (apiReturnedData.data as { [key: string]: any })[\"value\"] as string;\r\n searchlegalConfig.kendoGridProps.totalRecords = (apiReturnedData.data as { [key: string]: any })[\"@odata.count\"] as number;\r\n setSearchGridconfig({ ...searchlegalConfig });\r\n\r\n for (var i = 0; i < allFacetNames.length; i++) {\r\n if (allFacetNames[i] != facetName) {\r\n setComboBoxDatasource((apiReturnedData.data as { [key: string]: any })[\"@search.facets\"][allFacetNames[i]] as string[], allFacetNames[i]);\r\n setSelectedValuesDatasource(allSelectedFacets[i], allFacetNames[i]);\r\n }\r\n else {\r\n setSelectedValuesDatasource(selectedValue, facetName);\r\n }\r\n }\r\n }\r\n }\r\n catch (error) {\r\n // if there's an error, log it\r\n console.log(error);\r\n }\r\n }\r\n\r\n //Set selected values of facets\r\n const setSelectedValuesDatasource = (selectedValue: any[], facetType: string): void => {\r\n switch (facetType) {\r\n case ApplicationConstants.CRMChildAccountFacetName:\r\n setSelectedCrmChildAccountNameValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.AddressFacetName:\r\n setSelectedAddressValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.CityFacetName:\r\n setSelectedCityValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.PostalCodeFacetName:\r\n setSelectedPostalCodeValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.StateFacetName:\r\n setSelectedStateProvinceValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.ChildCRMIDFacetName:\r\n setSelectedCrmidValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.TPIDFacetName:\r\n setSelectedTpidValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.GPIDFacetName:\r\n setSelectedGpidValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.DunsNumberFacetName:\r\n setSelectedDunsidValues(selectedValue);\r\n break;\r\n\r\n default: console.log(\"Default setSelectedValuesDatasource\");\r\n }\r\n }\r\n\r\n //Set data source of facets\r\n const setComboBoxDatasource = (values: any[], facetType: string): void => {\r\n switch (facetType) {\r\n case ApplicationConstants.CRMChildAccountFacetName:\r\n setCrmChildAccountName(values);\r\n break;\r\n\r\n case ApplicationConstants.AddressFacetName:\r\n setAddress(values);\r\n break;\r\n\r\n case ApplicationConstants.CityFacetName:\r\n setCity(values);\r\n break;\r\n\r\n case ApplicationConstants.PostalCodeFacetName:\r\n setPostalCode(values);\r\n break;\r\n\r\n case ApplicationConstants.StateFacetName:\r\n setStateProvince(values);\r\n break;\r\n\r\n case ApplicationConstants.ChildCRMIDFacetName:\r\n setChildCrmid(values);\r\n break;\r\n\r\n case ApplicationConstants.TPIDFacetName:\r\n setTpid(values);\r\n break;\r\n\r\n case ApplicationConstants.GPIDFacetName:\r\n setGpid(values);\r\n break;\r\n\r\n case ApplicationConstants.DunsNumberFacetName:\r\n setDunsid(values);\r\n break;\r\n\r\n default: console.log(\"Default setSelectedValuesDatasource\");\r\n }\r\n }\r\n\r\n /**\r\n * callback handler for Pivot change action.\r\n * @function\r\n */\r\n const onPivotChange = (item: CoherencePivotTabProps) => {\r\n if (item.key) {\r\n setlegalOption(item.key);\r\n if (item.key === UIControlsText.DefaultLegalOption) {\r\n setlegalSearchChecked(true)\r\n }\r\n else {\r\n setlegalSearchChecked(false)\r\n }\r\n }\r\n };\r\n\r\n //hide or show facets on click of button\r\n const onShowFacets = () => {\r\n var isCollapsed = false;\r\n if (panes) {\r\n isCollapsed = panes[0]?.collapsed;\r\n }\r\n setPanes([\r\n { size: \"15%\", collapsible: true, resizable: true, collapsed: !isCollapsed },\r\n {}\r\n ]);\r\n setSearchFilterButtonText(isCollapsed ? UIControlsText.HideSearchFilter : UIControlsText.ShowSearchFilter)\r\n }\r\n\r\n //#region #Upload\r\n let uploadFileObj: any = { file: {} }\r\n const [attachment, setAttachment] = useState<IAttachment>();\r\n const [errorMessage, seterrorMessage] = useState<string>(\"\");\r\n const [hideDialog, sethideDialog] = useState<boolean>(true);\r\n const [excelHeaderColumns, setExcelHeaderColumns] = useState<string[]>([]);\r\n\r\n //#region #Upload File Handler and Process Excel File Handler\r\n // Function to trigger on File Upload and store in UploadFileObj and Call to Process the excel data\r\n const uploadFileHandler = (e: any) => {\r\n const files = e.target.files;\r\n if (files && files[0]) {\r\n uploadFileObj = { file: files[0] };\r\n }\r\n e.target.files = null;\r\n e.target.value = null;\r\n processFileToBuffer();\r\n };\r\n\r\n // Function to convert the uploaded excel file to array buffer and store to attachment object \r\n const processFileToBuffer = () => {\r\n if (uploadFileObj.file[\"type\"] != undefined) {\r\n let fileSize = Math.round((uploadFileObj.file.size / 1024) / 1024);\r\n if (fileSize < 10) {\r\n getFileArrayBuffer(uploadFileObj, function (arrayBuffer: any) {\r\n let attachmentObj: IAttachment = {\r\n id: Guid.newGuid(),\r\n name: uploadFileObj.file.name,\r\n extension: uploadFileObj.file.extension,\r\n size: uploadFileObj.file.size,\r\n source: \"\",\r\n content: encode(arrayBuffer)\r\n };\r\n setAttachment(attachmentObj);\r\n });\r\n processExcelData();\r\n }\r\n else {\r\n seterrorMessage(UIControlsText.UploadFileSizeErrorMessage);\r\n sethideDialog(false);\r\n }\r\n }\r\n }\r\n\r\n // Function to process the excel data to JSON and Bind to ILegal Entites\r\n const processExcelData = () => {\r\n if (uploadFileObj.file[\"type\"] != undefined) {\r\n readExcelHeader(uploadFileObj, function (excelHeaderResponse: any) {\r\n if (validateExcelTemplate(excelHeaderResponse)) {\r\n processExcelDataToJson(uploadFileObj, function (processedJson: any) {\r\n if (processedJson.length == 0) { // validate atleast one record is entered in the excel file\r\n seterrorMessage(UIControlsText.UploadLegalEntityNoData);\r\n sethideDialog(false);\r\n }\r\n else {\r\n let excelEntites: ILegalEntity[] = [];\r\n let isDealVolumeApplicable = internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies;\r\n let newSelectedLegals: ILegalEntity[] = internalPricingContextState.opportunityDeals[0].dealCustomers || [];\r\n let isDuplicateRowDetected: boolean = false;\r\n if(internalPricingContextState.pageMode?.toLowerCase() === PageMode.Create.toLowerCase()){\r\n newSelectedLegals = newSelectedLegals.filter(x => x.isUploadedRecord == false);\r\n }\r\n excelEntites = processedJson.map((eachItem: any, index: number) => {\r\n let newGuid = Guid.newGuid();\r\n let eachEntity: ILegalEntity = {\r\n id: newGuid,\r\n customerId: newGuid,\r\n customerType: isNullOrEmpty(eachItem[UploadLegalEntity.IsPrimary]) ? CustomerType.Affiliates : eachItem[UploadLegalEntity.IsPrimary] ? CustomerType.Primary : CustomerType.Affiliates,\r\n country: eachItem[UploadLegalEntity.Country]?.toString().trim(),\r\n crmAccountId: eachItem[UploadLegalEntity.CustomerAccountId]?.toString().trim(),\r\n legalEntityName: eachItem[UploadLegalEntity.LegalEntityName]?.toString().trim(),\r\n tpid: typeof eachItem[UploadLegalEntity.TPID] != 'string' ? eachItem[UploadLegalEntity.TPID]?.toString().trim() : 0,\r\n segment: eachItem[UploadLegalEntity.Segment]?.toString().trim(),\r\n vertical: eachItem[UploadLegalEntity.CustomerVertical]?.toString().trim(),\r\n unitsCommitted: isDealVolumeApplicable ? eachItem[UploadLegalEntity.DealVolume] != null && eachItem[UploadLegalEntity.DealVolume] != \"\" && typeof eachItem[UploadLegalEntity.DealVolume] == 'number' ? eachItem[UploadLegalEntity.DealVolume] : 0 : 0,\r\n isManaged: (isNullOrEmpty(eachItem[UploadLegalEntity.IsManaged]) ? false : eachItem[UploadLegalEntity.IsManaged].toString().trim().toLowerCase() === \"yes\" || eachItem[UploadLegalEntity.IsManaged] === true ? true : false),\r\n errors: \"\",\r\n action: ActionType.Add,\r\n isUploadedRecord: true\r\n }\r\n if(internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()){\r\n let duplicateRowIndex = newSelectedLegals.findIndex((obj => obj.country == eachEntity.country && obj.legalEntityName == eachEntity.legalEntityName));\r\n if (duplicateRowIndex == -1){\r\n newSelectedLegals = [...newSelectedLegals,eachEntity];\r\n }\r\n else\r\n {\r\n isDuplicateRowDetected = true;\r\n }\r\n }\r\n else{\r\n newSelectedLegals = [...newSelectedLegals,eachEntity];\r\n }\r\n return eachEntity;\r\n });\r\n dispatchSelectedData([...newSelectedLegals], newSelectedLegals.filter(x => x.customerType == CustomerType.Primary)[0]?.id ||\"\",true);\r\n uploadFileObj = { file: {} };\r\n validateDealCustomers();\r\n let updatedConfig = readGridConfig(GridType.LegalEntitySelection, internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies, ApplicationConstants.LegalEntitySelectionUnitstransact);\r\n updatedConfig.kendoGridProps.data = newSelectedLegals;\r\n setSelectionGridconfig(updatedConfig);\r\n if(isDuplicateRowDetected){\r\n setIsDialogHidden(false);\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n seterrorMessage(UIControlsText.UploadLegalEntityIncorrectTemplate);\r\n sethideDialog(false);\r\n }\r\n });\r\n }\r\n }\r\n\r\n //Validate Legal Entities Upon uploading excel file.\r\n const validateDealCustomers = () => {\r\n nextGenService.validateDealCustomers(internalPricingContextState)\r\n .then((response: any) => {\r\n if (!isNullOrEmpty(response.data)) {\r\n let dealCustomers = response.data.opportunityDeals[0].dealCustomers;\r\n let customers = internalPricingContextState.opportunityDeals[0].dealCustomers;\r\n dealCustomers = dealCustomers.map((item: any) => ({\r\n ...item,\r\n isUploadedRecord: customers?.find(x => x.id === item.id)?.isUploadedRecord == false ? false : true,\r\n }));\r\n dispatchSelectedData(dealCustomers, dealCustomers.filter((x: { customerType: CustomerType; }) => x.customerType == CustomerType.Primary)[0]?.id ||\"\", true);\r\n }\r\n }).catch((error) => {\r\n console.log(\"error occurred\");\r\n });\r\n }\r\n\r\n // Function to validate template\r\n const validateExcelTemplate = (headerColumns: any): boolean => {\r\n let isValidTemplate = true;\r\n if (isNullOrEmpty(headerColumns)) {\r\n isValidTemplate = false;\r\n seterrorMessage(UIControlsText.UploadLegalEntityIncorrectTemplate);\r\n sethideDialog(false);\r\n }\r\n else { // validate if uploaded excel header keys are matching and valid \r\n if (!(headerColumns.includes(UploadLegalEntity.Country.toString()) &&\r\n headerColumns.includes(UploadLegalEntity.CustomerAccountId.toString()) &&\r\n headerColumns.includes(UploadLegalEntity.LegalEntityName.toString()) &&\r\n headerColumns.includes(UploadLegalEntity.TPID.toString()) &&\r\n headerColumns.includes(UploadLegalEntity.CustomerVertical.toString()) &&\r\n headerColumns.includes(UploadLegalEntity.IsManaged.toString())\r\n )) {\r\n isValidTemplate = false;\r\n seterrorMessage(UIControlsText.UploadLegalEntityIncorrectTemplate);\r\n sethideDialog(false);\r\n }\r\n if (internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies && !headerColumns.includes(UploadLegalEntity.DealVolume.toString())) {\r\n isValidTemplate = false;\r\n seterrorMessage(UIControlsText.UploadLegalEntityIncorrectTemplate);\r\n sethideDialog(false);\r\n }\r\n }\r\n return isValidTemplate;\r\n }\r\n //#endregion #Upload File Handler and Process Excel File Handler\r\n\r\n //#region #Download Excel Template\r\n const downloadTemplate = () => {\r\n exportToExcel(excelHeaderColumns, \"Upload_Legal_Entities\", \"Legal Entities\");\r\n }\r\n \r\n // IsManaged custom cell rendering\r\n const onCustomCellRenderCallBack = (selectedRowData: any) => {\r\n if (IsOTLE) {\r\n let option = [{ key: selectedRowData.dataItem.id, text: \"\", ariaLabel: \"pick one\" }];\r\n return (\r\n <RadioGridCell\r\n cellId={selectedRowData.dataItem.id}\r\n options={option}\r\n selectedOption={selectedCustomer?.id}\r\n itemSelectionUpdate={onCustomerSelectionHandler}\r\n />\r\n );\r\n }\r\n\r\n const isManagedView = selectedRowData.dataItem.isManaged ? (<td className=\"k-command-cell\" role=\"gridcell\">Yes</td>) : (<td className=\"k-command-cell\" role=\"gridcell\">No</td>);\r\n\r\n return selectedRowData.editMode || internalPricingContextState.pageMode === PageMode.View || (internalPricingContextState.pageMode === PageMode.Edit && internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview) ? isManagedView : (\r\n <DropDownGridCell\r\n isMultiSelect={false} \r\n cellId={selectedRowData.dataItem.id}\r\n data={dropDownYesOrNoData}\r\n selectedValues={selectedRowData.dataItem.isManaged ? [1] : [0]}\r\n itemSelectionUpdate={onHandleIsManagedCallBack}\r\n isUploadedRecord={selectedRowData.dataItem.isUploadedRecord} \r\n />\r\n );\r\n };\r\n \r\n const onHandleIsManagedCallBack = (cellId: string, selectedDropDownVal: any): void => {\r\n let tempData = internalPricingContextState.opportunityDeals[0].dealCustomers || [];\r\n if (!isNullOrEmpty(cellId) && !isNullOrEmpty(tempData)) {\r\n let editedRowIndex = tempData.findIndex((obj => obj.id == cellId));\r\n if (editedRowIndex != -1 && tempData[editedRowIndex].isUploadedRecord) {\r\n tempData[editedRowIndex].isManaged = selectedDropDownVal[0] == 1 ? true : false;\r\n tempData[editedRowIndex].unManaged = !tempData[editedRowIndex].isManaged\r\n tempData[editedRowIndex].errors = validateExcelRecord(tempData[editedRowIndex]);\r\n let updatedConfig = readGridConfig(GridType.LegalEntitySelection, internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.AffiliateCompanies, ApplicationConstants.LegalEntitySelectionUnitstransact);\r\n updatedConfig.kendoGridProps.data = [...tempData];\r\n // legalEntityUploadGridConfig.kendoGridProps.data = [...tempData];\r\n dispatchSelectedData([...tempData], tempData.filter(x => x.customerType == CustomerType.Primary)[0]?.id || \"\", false);\r\n }\r\n }\r\n }// Function to Init single excel Item and perform validations on it and return errormessages.\r\n const validateExcelRecord = (item: ILegalEntity) => {\r\n let errorMessage: string = \"\";\r\n if (!isNullOrEmpty(item)) {\r\n errorMessage += validateRequiredField(item);\r\n errorMessage += validateSegmentField(item);\r\n errorMessage += validateCountryExists(item);\r\n }\r\n return errorMessage != \"\" ? errorMessage.replace(/,\\s*$/, \"\") : \"\";\r\n }\r\n // Function to check the Required Fields for the Excel based in IsManaged\r\n const validateRequiredField = (item: ILegalEntity) => {\r\n let errorMessage: string = \"\";\r\n if (isNullOrEmpty(item.country))\r\n errorMessage = UIControlsText.Country + \", \";\r\n if (isNullOrEmpty(item.legalEntityName))\r\n errorMessage += UIControlsText.LegalEntityName + \", \";\r\n if (item.isManaged) {\r\n if (isNullOrEmpty(item.crmAccountId))\r\n errorMessage += UIControlsText.CRMAccountID + \", \";\r\n if (isNullOrEmpty(item.tpid))\r\n errorMessage += UIControlsText.TPID + \", \";\r\n }\r\n return errorMessage != \"\" ? \"\".concat(UIControlsText.UploadRequiredErrorMessage, errorMessage) : \"\";\r\n }\r\n\r\n const validateCountryExists = (item: ILegalEntity) => {\r\n if (isNullOrEmpty(item.country) || selectedCountries?.filter(x => x.text.toLowerCase() == item.country.toLowerCase()).length == 0)\r\n return UIControlsText.UploadCountryGEOErrorMessage;\r\n return \"\";\r\n }\r\n // Function to check the segmane contains SMB return error message if does not exits\r\n const validateSegmentField = (item: ILegalEntity) => {\r\n if (!item.isManaged && (isNullOrEmpty(item.segment) || (!item.segment.toLowerCase().includes(PageConstants.CustomerSegmentContainsSMB))))\r\n return UIControlsText.UploadSegmentErrorMessage + \", \";;\r\n return \"\";\r\n }\r\n\r\n const onAddNewCustomerSelectionHandler = (customerEntity: ILegalEntity) => {\r\n customerEntity.reviewDecision = CustomerStatusCodes.Approved;\r\n customerEntity.action = ActionType.Add;\r\n customerEntity.customerType = CustomerType.Primary;\r\n onCustomerSelectionHandler('unManaged', customerEntity);\r\n setSelectedCustomer({ ...customerEntity });\r\n setSelectedDunsidValues([]);\r\n closePanel();\r\n }\r\n\r\n const onAddNewPanelCallBack = () => {\r\n setShowAddCustomer(true);\r\n }\r\n const closePanel = () => {\r\n setShowAddCustomer(false);\r\n }\r\n\r\n const setGuidanceText = () => {\r\n if (IsOTLE) {\r\n setCustomerSearchGuidanceText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CustomerSearchGuidanceOTLE\", UIControlsText.CustomerSearchGuidanceOTLE))\r\n }\r\n else {\r\n setCustomerSearchGuidanceText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CustomerSearchGuidance\", UIControlsText.CustomerSearchGuidance))\r\n }\r\n }\r\n \r\n /**\r\n * Customer Domain change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLInputElement>} event Element Click Event.\r\n * @param {string} item Value.\r\n */\r\n const onCustomerDomainTextChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n if (newValue) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.dealCustomerValueChanged, dealInputControlValue: { key: ApplicationConstants.DealCustomerDomain, value: newValue, id: internalPricingContextState?.opportunityDeals[0]?.id } })\r\n }\r\n }\r\n\r\n const triggerEditCustomer = () => {\r\n setShowAddCustomer(true);\r\n }\r\n\r\n const customerDetails = {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardCustomer\",\r\n baseState: internalPricingContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDetails\", UIControlsText.CustomerDetails),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDetailsIcon\", UIControlsText.CustomerDetailsIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: \"customerCardStack\",\r\n horizontal: \"true\",\r\n wrap: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: \"customerCardStackItem\",\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"GuidanceTextInformation\",\r\n data: {\r\n id: \"CustomerSearchGuidanceText\",\r\n label: customerSearchGuidanceText,\r\n }\r\n }\r\n\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: \"customerCardRow\",\r\n horizontal: \"true\",\r\n disableshrink: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: \"customerCardColumn\",\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n visible: selectedCustomer != undefined ? true : false,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"SelectedCustomerInfo\",\r\n contolType: UIControlType.CustomerTable,\r\n selectedCustomer: selectedCustomer,\r\n showEdit: hideUnManagedCustomerEdit,\r\n editEvent: triggerEditCustomer\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackContainerDomain\",\r\n //Only for OTLE\r\n visible: internalPricingDealTypeValue == PageConstants.OTLEDealtype,\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, internalPricingDealTypeValue),\r\n data: {\r\n id: \"CustomerDomainTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"CustomerDomainPlaceholderTextExample\", UIControlsText.CustomerDomainPlaceholderTextExample),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n disabled: internalPricingContextState?.opportunityDeals && (internalPricingContextState?.opportunityDeals[0] !== undefined) && (internalPricingContextState?.opportunityDeals[0]?.dealCustomers?.length == 0),\r\n onGetErrorMessage: getTextFieldErrorMessage,\r\n value: selectedCustomer?.dealCustomerDomain || (internalPricingContextState?.opportunityDeals && internalPricingContextState?.opportunityDeals[0]?.dealCustomers && (internalPricingContextState?.opportunityDeals[0]?.dealCustomers[0]?.dealCustomerDomain)),\r\n onChange: onCustomerDomainTextChange\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText), internalPricingContextState.pageMode, internalPricingContextState.opportunityDeals[0]?.statusCode, undefined, undefined, internalPricingDealTypeValue),\r\n data: {\r\n id: \"CustomerDomainTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText),\r\n contolType: UIControlType.LabelValueView,\r\n value: selectedCustomer?.dealCustomerDomain || (internalPricingContextState?.opportunityDeals && internalPricingContextState?.opportunityDeals[0]?.dealCustomers && (internalPricingContextState?.opportunityDeals[0]?.dealCustomers[0]?.dealCustomerDomain)),\r\n }\r\n },\r\n {\r\n type: 'DialogComponent',\r\n data: {\r\n id: 'invalidCustomerDialog',\r\n hidden:hideCustomerDialog,\r\n isBlocking: true,\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"InactiveCustomer\", UIControlsText.InactiveCustomer),\r\n subText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SelectedCustomer\", UIControlsText.SelectedCustomer) + customerName,\r\n DialogContent:customerMessage,\r\n onDismiss: () => {\r\n setHideCustomerDialog(true);\r\n },\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n },\r\n ]\r\n }\r\n };\r\n\r\n const createUnmanagedCust = {\r\n type: \"Row\",\r\n visible: (internalPricingContextState.pageMode === PageMode.Create || internalPricingContextState.pageMode === PageMode.Edit),\r\n data: {\r\n id: \"yeah\",\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"addCustomer\",\r\n contolType: UIControlType.Panel,\r\n isOpen: showAddCustomer,\r\n dismissPanel: closePanel,\r\n headerText: hideUnManagedCustomerEdit ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddNewCustomerText\", UIControlsText.AddNewCustomerText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EditCustomerText\", UIControlsText.EditCustomerText),\r\n content: <CreateUnmanagedCustomer {...{ onSubmitToPricingProgramCallBack: onAddNewCustomerSelectionHandler, onCloseCallBack: closePanel, savedCustomer: selectedCustomer }} />,\r\n type: PanelType.custom,\r\n customWidth: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PanelCustomerWidth55Percent\", UIControlsText.PanelCustomerWidth55Percent)\r\n }\r\n }]\r\n }\r\n }\r\n\r\n const customerGuidanceText = {\r\n type: 'Row',\r\n data: {\r\n id: \"CustomerSearchGuidanceText\",\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'Col',\r\n data: {\r\n id: \"CustomerSearchGuidanceColumn\",\r\n style: DefaultPageStyles.padding8,\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"GuidanceTextInformation\",\r\n visible: internalPricingContextState.pageMode === PageMode.Create || internalPricingContextState.pageMode === PageMode.Edit,\r\n data: {\r\n id: \"CustomerSearchResultsGuidance\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CustomerSearchResultsGuidance\", UIControlsText.CustomerSearchResultsGuidance),\r\n styles: PageStyles.textFieldStylesTwoColumn,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n };\r\n\r\n //#endregion #Upload\r\n if (IsCPS) {\r\n return (\r\n <div id='legalEntityContent' className={_Styles.LegalEntityForm}\r\n data-nextgen-parent-group={UIControlsText.LegalEntitiesText} data-nextgen-parentid={UIControlsText.LegalEntitiesText}>\r\n {isFieldVisible(UIControlsText.LegalEntitiesSearchElements, internalPricingContextState.pageMode, (internalPricingContextState.opportunityDeals[0]?.dealType == ApplicationConstants.CPstrategicPageName ? ApplicationConstants.CPstrategicPageName : ApplicationConstants.otlePageName)) &&\r\n <div>\r\n <CoherencePivot\r\n className=\"legal-entity-subtab\"\r\n onTabSelected={onPivotChange}\r\n useGrayPivot={false}\r\n selectedKey={legalOption}\r\n tabs={[\r\n {\r\n name: UIControlsText.SearchTabText,\r\n ariaLabel: UIControlsText.SearchTabText,\r\n key: UIControlsText.DefaultLegalOption,\r\n headerButtonProps: {\r\n ...{\r\n \"data-nextgen-id\": UIControlsText.SearchTabText\r\n }\r\n }\r\n },\r\n {\r\n name: UIControlsText.UploadTabText,\r\n ariaLabel: UIControlsText.UploadTabText,\r\n key: UIControlsText.UploadLegalOption,\r\n headerButtonProps: {\r\n ...{\r\n \"data-nextgen-id\": UIControlsText.UploadTabText\r\n }\r\n }\r\n }\r\n ]}\r\n />\r\n </div>\r\n }\r\n \r\n <React.Fragment>\r\n <Row>\r\n {legalOption === UIControlsText.DefaultLegalOption &&\r\n <Col>\r\n <div className=\"in-left\">\r\n <Stack horizontal tokens={stackTokens} styles={stackStyles}>\r\n {isFieldVisible(UIControlsText.LegalEntitiesSearchElements, internalPricingContextState.pageMode, (internalPricingContextState.opportunityDeals[0]?.dealType == ApplicationConstants.CPstrategicPageName ? ApplicationConstants.CPstrategicPageName : ApplicationConstants.otlePageName)) &&\r\n <Stack>\r\n <Dropdown\r\n label={UIControlsText.DealCountryText}\r\n ariaLabel={UIControlsText.DealCountryText}\r\n placeholder={UIControlsText.DealCountryPlaceHolderText}\r\n styles={PageStyles.textFieldStylesTwoColumn}\r\n options={countriesDropDown}\r\n multiSelect={true}\r\n defaultSelectedKeys={countriesDropDown.map(item => item?.key.toString())}\r\n onChange={onCountrySelectionChange} />\r\n </Stack>\r\n }\r\n {isFieldVisible(UIControlsText.LegalEntitiesSearchElements, internalPricingContextState.pageMode, (internalPricingContextState.opportunityDeals[0]?.dealType == ApplicationConstants.CPstrategicPageName ? ApplicationConstants.CPstrategicPageName : ApplicationConstants.otlePageName)) &&\r\n <Stack id=\"legalEntitySearchBar\" className={_Styles.legalTextStyles}>\r\n <Col>\r\n <SearchBar {\r\n ...{\r\n store: store, onSubmit, placeHolderText: UIControlsText.Search, onClear, onShowFacets,\r\n searchID: UIControlsText.CustomerSearchID,\r\n showFacetsText: searchFilterButtonText,\r\n hideFacetsButton: hideSearchFilterButton\r\n }\r\n } />\r\n <Label>{UIControlsText.CustomerSearchPlaceHolderText}</Label>\r\n </Col>\r\n </Stack>\r\n }\r\n </Stack>\r\n <Splitter className={_Styles.SplitterStyle} panes={internalPricingContextState.pageMode !== PageMode.View && showSearchFacet ? panes : []} onChange={onSplitterChange}>\r\n {isFieldVisible(UIControlsText.LegalEntitiesSearchElements, internalPricingContextState.pageMode, (internalPricingContextState.opportunityDeals[0]?.dealType == ApplicationConstants.CPstrategicPageName ? ApplicationConstants.CPstrategicPageName : ApplicationConstants.otlePageName)) && showSearchFacet &&\r\n <div>\r\n <Label id=\"gridTitle\" className={_Styles.LegalEntityLabel} >{UIControlsText.SearchFilter}</Label>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.CRMChildAccountFacetName,\r\n facetLabel: UIControlsText.CRMChildAccountFacetText,\r\n facetData: crmChildAccountName,\r\n selectedData: selectedCrmChildAccountNameValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.AddressFacetName,\r\n facetLabel: UIControlsText.AddressFacetText,\r\n facetData: address,\r\n selectedData: selectedAddressValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.CityFacetName,\r\n facetLabel: UIControlsText.CityFacetText,\r\n facetData: city,\r\n selectedData: selectedCityValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.PostalCodeFacetName,\r\n facetLabel: UIControlsText.PostalCodeFacetText,\r\n facetData: postalCode,\r\n selectedData: selectedPostalCodeValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.StateFacetName,\r\n facetLabel: UIControlsText.StateProvinceFacetText,\r\n facetData: stateProvince,\r\n selectedData: selectedStateProvinceValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.ChildCRMIDFacetName,\r\n facetLabel: UIControlsText.CRMIDFacetText,\r\n facetData: childCrmId,\r\n selectedData: selectedCrmidValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.TPIDFacetName,\r\n facetLabel: UIControlsText.TPIDFacetText,\r\n facetData: tpid,\r\n selectedData: selectedTpidValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.GPIDFacetName,\r\n facetLabel: UIControlsText.GPIDFacetText,\r\n facetData: gpid,\r\n selectedData: selectedGpidValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.DunsNumberFacetName,\r\n facetLabel: UIControlsText.DunsNumberFacetText,\r\n facetData: dunsid,\r\n selectedData: selectedDunsidValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n </div>\r\n }\r\n <div id=\"searchAndSelectGrid\">\r\n {isFieldVisible(UIControlsText.LegalEntitiesSearchElements, internalPricingContextState.pageMode, (internalPricingContextState.opportunityDeals[0]?.dealType == ApplicationConstants.CPstrategicPageName ? ApplicationConstants.CPstrategicPageName : ApplicationConstants.otlePageName)) &&\r\n <div>\r\n <Stack horizontal horizontalAlign=\"space-between\">\r\n <Label id=\"gridTitle\" className={_Styles.LegalEntityLabel} >{UIControlsText.LegalEntitiesSearchResult}</Label>\r\n </Stack> \r\n <div>\r\n <NextGenKendoGrid {...{ kendoGridProps: { ...searchGridconfig.kendoGridProps }, onRowSelectionCallBack, onPageChange }} />\r\n </div>\r\n </div>\r\n }\r\n \r\n </div>\r\n </Splitter>\r\n </div>\r\n </Col>\r\n }\r\n {legalOption === \"upload\" &&\r\n <div className=\"mt-5 mb-5 text-center in-left\">\r\n <input type=\"file\"\r\n className=\"border w-50\"\r\n id=\"file\"\r\n onChange={uploadFileHandler}\r\n />\r\n <Link onClick={downloadTemplate} derline className=\"ps-2\">\r\n Download Template\r\n </Link>\r\n </div>\r\n }\r\n </Row>\r\n \r\n <Row>\r\n <Col>\r\n {isFieldVisible(UIControlsText.AdditionalLegalEntities, internalPricingContextState.pageMode) &&\r\n <div>\r\n {isFieldVisible(UIControlsText.LegalEntitiesSearchElements, internalPricingContextState.pageMode, (internalPricingContextState.opportunityDeals[0]?.dealType == ApplicationConstants.CPstrategicPageName ? ApplicationConstants.CPstrategicPageName : ApplicationConstants.otlePageName)) &&\r\n <Stack horizontal tokens={stackTokens} >\r\n <div id=\"primarylegalparentdiv\">\r\n <hr />\r\n <span className={_Styles.PrimarySelection}>\r\n <span id=\"gridTitle\"> {UIControlsText.SelectedLegalEntities} </span> {selectedIsPrimary.PrimaryCountry}\r\n {selectedIsPrimary.PrimaryName}</span>\r\n <hr />\r\n </div>\r\n </Stack>\r\n }\r\n {internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() && (\r\n <Row>\r\n <Label id=\"gridTitleLegalEntity\" className={_Styles.LegalEntityLabel}>{UIControlsText.AdditionalLegalEntities}</Label>\r\n </Row>\r\n )}\r\n <div>\r\n <MdppAccessibilityPanelGrid {...{ kendoGridProps: { ...selectionGridconfig.kendoGridProps }, onPrimarySelectionCallBack, onEditCallBack, onDeleteCallBack, onCustomCellRenderCallBack }} />\r\n </div>\r\n </div>\r\n }\r\n </Col>\r\n </Row>\r\n </React.Fragment>\r\n <CoherenceDialog\r\n hidden={isDialogHidden}\r\n onDismiss={() => {\r\n setIsDialogHidden(true);\r\n }}\r\n dialogContentProps={{\r\n type: DialogType.normal,\r\n title: UIControlsText.ConfirmTitle,\r\n subText: UIControlsText.DuplicateLEMessage\r\n }}\r\n >\r\n <CoherenceDialogFooter>\r\n <PrimaryButton\r\n text={UIControlsText.OkText}\r\n ariaLabel={UIControlsText.OkText}\r\n onClick={() => {\r\n setIsDialogHidden(true);\r\n }}\r\n />\r\n </CoherenceDialogFooter>\r\n </CoherenceDialog>\r\n </div>\r\n )\r\n }\r\n else {\r\n return (\r\n\r\n <div id='legalEntityContent' className={_Styles.LegalEntityForm}\r\n data-nextgen-parent-group={UIControlsText.LegalEntitiesText} data-nextgen-parentid={UIControlsText.LegalEntitiesText}>\r\n <React.Fragment>\r\n {FormRenderingService(customerDetails, internalPricingContextState)}\r\n <Row>\r\n {legalOption === UIControlsText.DefaultLegalOption &&\r\n <><Col>\r\n <div className=\"in-left\">\r\n <Stack horizontal tokens={stackTokens} styles={stackStyles}>\r\n {isFieldVisible(UIControlsText.LegalEntitiesSearchElements, internalPricingContextState.pageMode, (internalPricingContextState.opportunityDeals[0]?.dealType == ApplicationConstants.CPstrategicPageName ? ApplicationConstants.CPstrategicPageName : ApplicationConstants.otlePageName)) &&\r\n <Stack>\r\n <Dropdown\r\n label={UIControlsText.DealCountryText}\r\n ariaLabel={UIControlsText.DealCountryText}\r\n placeholder={UIControlsText.DealCountryPlaceHolderText}\r\n styles={PageStyles.textFieldStylesTwoColumn}\r\n options={countriesDropDown}\r\n multiSelect={true}\r\n disabled={true}\r\n defaultSelectedKeys={countriesDropDown.map(item => item?.key.toString())}\r\n onChange={onCountrySelectionChange} />\r\n </Stack>\r\n }\r\n {isFieldVisible(UIControlsText.LegalEntitiesSearchElements, internalPricingContextState.pageMode, (internalPricingContextState.opportunityDeals[0]?.dealType == ApplicationConstants.CPstrategicPageName ? ApplicationConstants.CPstrategicPageName : ApplicationConstants.otlePageName)) &&\r\n <Stack id=\"legalEntitySearchBar\" className={_Styles.legalTextStyles}>\r\n <Col>\r\n <SearchBar {\r\n ...{\r\n store: store, onSubmit, placeHolderText: UIControlsText.Search, onClear, onShowFacets,\r\n searchID: UIControlsText.CustomerSearchID,\r\n showFacetsText: searchFilterButtonText,\r\n hideFacetsButton: hideSearchFilterButton\r\n }\r\n } />\r\n <Label>{UIControlsText.CustomerSearchPlaceHolderText}</Label>\r\n </Col>\r\n </Stack>\r\n }\r\n </Stack>\r\n {FormRenderingService(customerGuidanceText, internalPricingContextState)}\r\n <Splitter className={_Styles.SplitterStyle} panes={internalPricingContextState.pageMode !== PageMode.View && showSearchFacet ? panes : []} onChange={onSplitterChange}>\r\n {isFieldVisible(UIControlsText.LegalEntitiesSearchElements, internalPricingContextState.pageMode, (internalPricingContextState.opportunityDeals[0]?.dealType == ApplicationConstants.CPstrategicPageName ? ApplicationConstants.CPstrategicPageName : ApplicationConstants.otlePageName)) && showSearchFacet &&\r\n <div>\r\n <Label id=\"gridTitle\" className={_Styles.LegalEntityLabel} >{UIControlsText.SearchFilter}</Label>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.CRMChildAccountFacetName,\r\n facetLabel: UIControlsText.CRMChildAccountFacetText,\r\n facetData: crmChildAccountName,\r\n selectedData: selectedCrmChildAccountNameValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.AddressFacetName,\r\n facetLabel: UIControlsText.AddressFacetText,\r\n facetData: address,\r\n selectedData: selectedAddressValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.CityFacetName,\r\n facetLabel: UIControlsText.CityFacetText,\r\n facetData: city,\r\n selectedData: selectedCityValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.PostalCodeFacetName,\r\n facetLabel: UIControlsText.PostalCodeFacetText,\r\n facetData: postalCode,\r\n selectedData: selectedPostalCodeValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.StateFacetName,\r\n facetLabel: UIControlsText.StateProvinceFacetText,\r\n facetData: stateProvince,\r\n selectedData: selectedStateProvinceValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.ChildCRMIDFacetName,\r\n facetLabel: UIControlsText.CRMIDFacetText,\r\n facetData: childCrmId,\r\n selectedData: selectedCrmidValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.TPIDFacetName,\r\n facetLabel: UIControlsText.TPIDFacetText,\r\n facetData: tpid,\r\n selectedData: selectedTpidValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n <SearchableComboBoxComponent\r\n {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.DunsNumberFacetName,\r\n facetLabel: UIControlsText.DunsNumberFacetText,\r\n facetData: dunsid,\r\n selectedData: selectedDunsidValues,\r\n showFacetCount: true\r\n },\r\n selectedValues\r\n }\r\n }>\r\n </SearchableComboBoxComponent>\r\n </div>\r\n }\r\n <div id=\"searchAndSelectGrid\">\r\n <div>\r\n <NextGenKendoGrid {...{ kendoGridProps: { ...otleSearchGridconfig.kendoGridProps }, onCustomCellRenderCallBack, onPageChange, onAddNewPanelCallBack, onPrimarySelectionCallBack, savedCustomer: selectedCustomer }} />\r\n </div>\r\n </div>\r\n </Splitter>\r\n </div>\r\n {FormRenderingService(createUnmanagedCust, internalPricingContextState)}\r\n </Col></>\r\n }\r\n </Row>\r\n <Row>\r\n\r\n </Row>\r\n </React.Fragment>\r\n <CoherenceDialog\r\n hidden={isDialogHidden}\r\n onDismiss={() => {\r\n setIsDialogHidden(true);\r\n }}\r\n dialogContentProps={{\r\n type: DialogType.normal,\r\n title: UIControlsText.ConfirmTitle,\r\n subText: UIControlsText.DuplicateLEMessage\r\n }}\r\n >\r\n <CoherenceDialogFooter>\r\n <PrimaryButton\r\n text={UIControlsText.OkText}\r\n ariaLabel={UIControlsText.OkText}\r\n onClick={() => {\r\n setIsDialogHidden(true);\r\n }}\r\n />\r\n </CoherenceDialogFooter>\r\n </CoherenceDialog>\r\n </div>\r\n )\r\n }\r\n \r\n}\r\nexport default InternalPricingLegalEntitiesSearchAndUpload;","import React, { useState, useEffect, useRef } from 'react';\r\nimport { UIControlsText, UIConfigIdentifierConstants } from '../../../../content/UIControlsText';\r\nimport { PageStyles, DealDetailsStyles } from '../../common/content/Page.Styles';\r\nimport { Dropdown, IDropdownOption, MessageBarType, IChoiceGroupOption, ActionButton, TextField, Stack } from '@fluentui/react';\r\nimport { PrimaryResellerGridColumnConfig, PrimaryResellerGridItemsType } from '../../../shared/ComponentTypes/DetailListEditableGridTypes';\r\nimport { defaultColumnProps, DefaultPageStyles } from '../../../../content/styles/Page.styles';\r\nimport { CaseActionTypes } from '../../common/reducer/CaseActionTypes';\r\nimport { isEditableRow, isValidEmailWithSeperator, getFieldConfigByState, getRequestorsChannelFunctionalities, isMsStoreUser, getParentAccountAction } from '../../../../components/shared/common/util';\r\nimport { stackItemStyles, channelConfig, smallAlignmentTokens, initialChannelDisplayOnEdit, selectCountryBasedOnRegion, replaceMEToUAEForDistributors } from '../../PricingProgramForm/PricingProgramFormUtils';\r\nimport { Guid } from '../../../../infrastructure/Guid';\r\nimport { IOpportunityAccount } from '../../../../models/IOpportunityAccount';\r\nimport { AccountAllType } from '../../../../models/AccountAllType';\r\nimport { IOpportunityChannelContact } from '../../../../models/IOpportunityChannelContact';\r\nimport { nextGenService } from '../../../../services/NextGenService';\r\nimport { JavaScriptExtensions } from '../../../../infrastructure/JavaScriptExtensions';\r\nimport { PartnerTypeLabel } from '../../../../models/PartnerTypeLabel';\r\nimport { ErrorMessages } from '../../../../content/ErrorMessages';\r\nimport { ChannelSubType } from '../../../../models/ChannelSubType';\r\nimport { StatePropertiesText } from '../../common/state/StatePropertiesText';\r\nimport { IEntityLookupColumnConfig } from '../../../../models/IEntityLookupColumnConfig';\r\nimport { IAccount } from '../../../../models/IAccount';\r\nimport { PageMode } from '../../../../models/PageMode';\r\nimport { partnerTypeValues } from '../../../../services/StaticData';\r\nimport { GridType } from '../../../../models/GridType';\r\nimport { CssClassConstants } from '../../../../content/CssClassConstants';\r\nimport _ from 'lodash';\r\nimport { ICountry } from '../../../../models/ICountry';\r\nimport { GridSelectionType } from '../../../../components/shared/grid/SelectionType';\r\nimport { PartnerType } from '../../../../models/PartnerType';\r\nimport { ActionType } from '../../../../models/ActionType';\r\nimport { IColumnConfig } from 'fluentui-editable-grid';\r\nimport { IColumn } from 'office-ui-fabric-react';\r\nimport { UserSubRole } from '../../../../models/UserSubRole';\r\nimport { FieldMapMode } from '../../../../models/FieldMapMode';\r\nimport { countriesFilter, getRuleValidationMessage, getEntityDataFromSession } from '../../../../components/shared/common/util';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { OpportunityDealStatusCodes } from '../../../../models/OpportunityDealStatusCodes';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { IDealInfoProps } from '../../PricingProgramForm/props/IDealInfoProps';\r\nimport CustomTileCardComponent from '../../../shared/ComponentTypes/CustomTileCardComponent'\r\nimport { useInternalPricingContext } from '../context/internalpricing-context';\r\nimport { isMSStoreDisable } from \"../../../../components/shared/common/util\";\r\n\r\nexport function OtleChannel(props: IDealInfoProps) {\r\n const { internalPricingContextState, internalPricingContextDispatch } = useInternalPricingContext();\r\n const currentDealStatusCode = internalPricingContextState.opportunityDeals.find(t => t.name === internalPricingContextState.selectedOptyDealCaseNumber)?.statusCode === OpportunityDealStatusCodes.Approved ? OpportunityDealStatusCodes.Approved : 0;\r\n const [endCustomerCountry, setEndCustomerCountry] = useState<ICountry>();\r\n const [primaryResellerGridItems, setPrimaryResellerGridItems] = useState<PrimaryResellerGridItemsType[]>([]);\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n //Show the content appropriate to the Channel Requestor Role and other combinations\r\n const [showChannelContentBasedOnRoleType] = useState(() => {\r\n return getChannelPersona();\r\n });\r\n const productGroup = internalPricingContextState?.productGroup || \"\";\r\n const [resellerRegionalCountries, setResellerRegionalCountries] = useState<ICountry[]>();\r\n const [resellers, setResellers] = useState<any>([]); // To update with resellers\r\n const [selectedResellerCountry, setSelectedResellerCountry] = useState<any>('');\r\n const [selectedResellerType, setSelectedResellerType] = useState<any>(PartnerType.ADR);\r\n const [initialResellerType] = useState<any>(PartnerType.ADR);\r\n const [selectedResellers, setSelectedResellers] = useState<any[]>([]);\r\n const [panelType, setPanelType] = useState<string>('');\r\n const [invalidResellers, setInvalidResellers] = useState<string>(\"\");\r\n const [hideInvalidResellerDialog, setHideInvalidResellerDialog] = useState<boolean>(true);\r\n const pivotTab = internalPricingContextState.pivotTabs?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText));\r\n const [msStoreSelection, setMsStoreSelection] = useState(UIControlsText.NoText);\r\n const getMsStoreItem = (): string => {\r\n return internalPricingContextState?.opportunityAccounts?.find(opp => opp.partnerType === PartnerType.MsStore) ? UIControlsText.YesText : UIControlsText.NoText\r\n };\r\n\r\n const onPanelClick = (value: string) => {\r\n setPanelType(value);\r\n };\r\n\r\n const setSelectedResellersOrDistributors = () => {\r\n if (internalPricingContextState?.opportunityAccounts && internalPricingContextState?.opportunityAccounts.length > 0) {\r\n const initialSelectedResellers = internalPricingContextState?.opportunityAccounts?.filter(reseller => (reseller.partnerType === PartnerType.ADR || reseller.partnerType === PartnerType.DMP) && reseller.action !== ActionType.PanelAdd).map((x: any) => ({\r\n accountId: x.accounts.length > 0 && x.accounts[0].accountId,\r\n companyName: x.accountCompanyName,\r\n countryId: x.countryId,\r\n countryName: x.countryName,\r\n partnerType: x.partnerType,\r\n organizationId: x.accounts.length > 0 && x.accounts[0].organizationId,\r\n action: x.action\r\n }))\r\n setSelectedResellers(initialSelectedResellers || [])\r\n }\r\n }\r\n\r\n const onResellerTypeChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption) => {\r\n if (item) {\r\n let filteredValues = resellerAccounts.current.filter((val: any) => val.partnerType === item.key);\r\n if (endCustomerCountry?.countryId) {\r\n filteredValues = filteredValues.filter((val: any) => val.applicablePriceListGeo === endCustomerCountry.applicablePriceListGeo);\r\n }\r\n const updatedResellers = {\r\n current: filteredValues\r\n };\r\n setSelectedResellerType(item.key);\r\n setResellers(updatedResellers);\r\n }\r\n };\r\n\r\n const onCountryChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption) => {\r\n const [list, setSelectedCountry, setSelectedList] =\r\n [resellerAccounts, setSelectedResellerCountry, setResellers];\r\n if (item) {\r\n let filteredValues = list.current.filter((val: any) => val.countryId === item.key);\r\n if (panelType === 'reseller' && selectedResellerType) {\r\n filteredValues = filteredValues.filter((val: any) => val.partnerType === selectedResellerType)\r\n }\r\n const updatedList = {\r\n current: filteredValues\r\n };\r\n setSelectedCountry(item.key);\r\n setSelectedList(updatedList);\r\n }\r\n }\r\n\r\n const clearErrorFromContext = (partnerTypes?: PartnerType[], optyAccounts?: IOpportunityAccount[], targetPropertyId?: string, errorMessage?: string) => {\r\n const pivotTabsData = internalPricingContextState.pivotTabs;\r\n let pivotTabChannel = pivotTabsData?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)) || {};\r\n const optyAccount = optyAccounts?.find(t => (t.channelSubType !== ChannelSubType.Requester) && (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(partnerTypes?.find(x => t.partnerType === x))));\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(optyAccount)) {\r\n pivotTabChannel?.errors?.delete(targetPropertyId || \"\");\r\n }\r\n else {\r\n pivotTabChannel?.errors?.set(targetPropertyId || \"\", errorMessage || \"\");\r\n }\r\n\r\n internalPricingContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabsData });\r\n }\r\n\r\n const resellerColumnDefinitions: IEntityLookupColumnConfig[] = [\r\n {\r\n apiField: 'name',\r\n key: 'name',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText),\r\n displayOrder: 2\r\n }, {\r\n apiField: 'organizationId',\r\n key: 'organizationId',\r\n columnTitle: 'MPN ID',\r\n displayOrder: 3,\r\n }];\r\n\r\n\r\n const resellerTypes = [PartnerType.ADR, PartnerType.DMP];\r\n\r\n const resellerTableConfigurations = (\r\n <div className='configContainer'>\r\n <Dropdown\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerTypeText\", UIControlsText.ResellerTypeText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerTypeText\", UIControlsText.ResellerTypeText)}\r\n options={_.uniqBy(resellerTypes.map((item: any) => ({ key: item, text: partnerTypeValues[item] } as IDropdownOption)), 'key')}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerTypeText\", UIControlsText.ResellerTypeText)}\r\n styles={PageStyles.PaneldropdownStyles}\r\n onChange={onResellerTypeChange}\r\n selectedKey={selectedResellerType}\r\n disabled={false}\r\n required\r\n />\r\n <Dropdown\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerCountryText\", UIControlsText.ResellerCountryText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerCountryText\", UIControlsText.ResellerCountryText)}\r\n options={_.uniqBy(resellerRegionalCountries?.map((item: any) => ({ key: item.countryId, text: item.countryName } as IDropdownOption)), 'key')}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ResellerCountryPlaceholderText\", UIControlsText.ResellerCountryPlaceholderText)}\r\n styles={PageStyles.PaneldropdownStyles}\r\n onChange={onCountryChange}\r\n defaultSelectedKey={endCustomerCountry?.countryId}\r\n selectedKey={selectedResellerCountry}\r\n disabled={!endCustomerCountry?.isEUEFTA}\r\n required\r\n />\r\n </div>);\r\n\r\n const onResellerChange = (selectedItems: any[]): void => {\r\n const [list, setSelectedList, countrySelection] = [resellerAccounts, setSelectedResellers, selectedResellerCountry];\r\n if (selectedItems) {\r\n const updatedValues = list.current.map((item: any) => {\r\n return {\r\n ...item,\r\n key: `${item.accountId}-${item.partnerType}`,\r\n };\r\n });\r\n const modifiedList = {\r\n current: updatedValues,\r\n };\r\n let updatedList: IAccount[] = [];\r\n if (selectedItems) {\r\n selectedItems.forEach(x => {\r\n let value: any;\r\n value = modifiedList.current?.find((y: any) => y.key === x.key);\r\n if (value) {\r\n value.action = JavaScriptExtensions.isNullOrUndfinedOrEmpty(x.action) ? ActionType.PanelAdd : x.action;\r\n updatedList.push(value);\r\n }\r\n });\r\n }\r\n setSelectedList(updatedList);\r\n }\r\n }\r\n\r\n const onClearAll = () => {\r\n if (panelType === 'reseller') {\r\n setSelectedResellersOrDistributors();\r\n const filteredResllers: any = resellerAccounts.current.filter((item: any) => item.applicablePriceListGeo === endCustomerCountry?.applicablePriceListGeo)\r\n setResellers({ current: filteredResllers })\r\n setSelectedResellerType(initialResellerType)\r\n setSelectedResellerCountry(endCustomerCountry?.countryId)\r\n }\r\n };\r\n\r\n const onAddButtonClicked = () => {\r\n onPrimaryResellerAdd([...selectedResellers]);\r\n }\r\n\r\n const [opportunityAccounts, setOpportunityAccounts] = useState<IOpportunityAccount[]>([]);\r\n const [opportunityChannelContacts, setOpportunityChannelContacts] = useState<IOpportunityChannelContact[]>([]);\r\n const [isResellerLoading, setIsResellerLoading] = useState<boolean>(false);\r\n const resellerAccounts = useRef<IAccount[]>([]);\r\n function getChannelPersona() {\r\n let initialChannelDisplay;\r\n if (isMsStoreUser()) {\r\n initialChannelDisplay = getRequestorsChannelFunctionalities(UserSubRole.MSStoreUser, endCustomerCountry?.countryName || \"\");\r\n }\r\n else if (internalPricingContextState.pageMode === PageMode.Create) {\r\n initialChannelDisplay = getRequestorsChannelFunctionalities(internalPricingContextState.partnerDetails?.userRole || \"\", endCustomerCountry?.countryName || \"\");\r\n }\r\n else {\r\n initialChannelDisplay = getRequestorsChannelFunctionalities(PartnerType[0] || \"\", endCustomerCountry?.countryName || \"\");\r\n initialChannelDisplayOnEdit(internalPricingContextState, initialChannelDisplay);\r\n }\r\n return initialChannelDisplay;\r\n }\r\n\r\n //Create a new IOpportunityAccount\r\n function getNewOpportunityAccount(type?: PartnerType, partnerAccount?: IAccount): IOpportunityAccount {\r\n return { id: Guid.newGuid(), accounts: partnerAccount ? [{ ...partnerAccount, action: ActionType.Add }] : undefined, partnerType: type, isAllSelected: AccountAllType.None, isComplete: true, countryId: selectCountryBasedOnRegion(endCustomerCountry?.countryId || \"\", partnerAccount?.countryId || \"\", props?.countries || [], type), action: ActionType.Add } as IOpportunityAccount;\r\n }\r\n\r\n //Create a new IOpportunityChannelContact\r\n function getNewOpportunityChannelContact(opportunityAccountId?: string, email?: string): IOpportunityChannelContact {\r\n return { id: Guid.newGuid(), opportunityAccountId: opportunityAccountId, channelContactEmails: email?.replace(',', ';'), source: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText), action: ActionType.Add, isComplete: email ? isValidEmailWithSeperator(email, ';') : false } as IOpportunityChannelContact;\r\n }\r\n\r\n async function getResellers(countries: ICountry[]) {\r\n setIsResellerLoading(true);\r\n\r\n //Remove resellers when the countries are removed.\r\n resellerAccounts.current = resellerAccounts.current.filter(r => r.productTypeId === productGroup).filter(r => countries.map(c => c.countryId).indexOf(r.countryId as string) >= 0);\r\n\r\n //Newly selected countries\r\n let newCountries = countries.filter(c => resellerAccounts.current.filter(r => r.productTypeId === productGroup).map(r => r.countryId).indexOf(c.countryId) === -1);\r\n let count = newCountries.length;\r\n\r\n if (newCountries.length === 0) {\r\n setIsResellerLoading(false);\r\n }\r\n\r\n //Get resellers for newly selected countries\r\n newCountries.forEach(async c => {\r\n let response = await nextGenService.getAllActiveResellersByProductAndCountry(productGroup, c.countryId);\r\n count--;\r\n if (count === 0) {\r\n setIsResellerLoading(false);\r\n }\r\n\r\n if (response.status === 200) {\r\n resellerAccounts.current = resellerAccounts.current.concat(response.data);\r\n resellerAccounts.current = _.uniqBy(resellerAccounts.current, v => [v.accountId, v.partnerType].join());\r\n setResellers({ current: resellerAccounts.current });\r\n }\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n var regionalCountries: ICountry[] = [];\r\n if (internalPricingContextState?.opportunityDeals && internalPricingContextState?.opportunityDeals[0]?.geoCountries && internalPricingContextState?.opportunityDeals[0]?.geoCountries.length) {\r\n const countryId = internalPricingContextState?.opportunityDeals[0]?.geoCountries[0] && internalPricingContextState?.opportunityDeals[0]?.geoCountries[0].countryId;\r\n var endCustomerCountry = props.countries?.find(c => c.countryId === countryId);\r\n if (endCustomerCountry && endCustomerCountry.countryId) {\r\n setEndCustomerCountry(endCustomerCountry);\r\n setSelectedResellerCountry(endCustomerCountry.countryId);\r\n regionalCountries = countriesFilter(endCustomerCountry.countryId)\r\n setResellerRegionalCountries(regionalCountries);\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: [] });\r\n setMsStoreSelection(UIControlsText.NoText);\r\n }\r\n\r\n if (regionalCountries.length > 0 && JavaScriptExtensions.isDefined(productGroup)) {\r\n getResellers(regionalCountries || []);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [internalPricingContextState?.opportunityDeals && internalPricingContextState?.opportunityDeals[0]?.geoCountries]);\r\n\r\n useEffect(() => {\r\n if (resellerRegionalCountries && resellerRegionalCountries.length > 0 && JavaScriptExtensions.isDefined(productGroup)) {\r\n getResellers(resellerRegionalCountries || []);\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [internalPricingContextState?.productGroup]);\r\n\r\n useEffect(() => {\r\n if (internalPricingContextState.opportunityAccounts) {\r\n\r\n //Validate if selected account is still valid when editing Draft case\r\n if (internalPricingContextState.pageMode === PageMode.Edit\r\n && internalPricingContextState.opportunityDeals.length\r\n && internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.Draft) {\r\n //Reseller account validation\r\n const invalidResellers = internalPricingContextState.opportunityAccounts.filter(a => (a.partnerType === PartnerType.ADR || a.partnerType === PartnerType.DMP) && a.accounts?.some(x => JavaScriptExtensions.isDefined(x.isActive) && !x.isActive));\r\n\r\n //Distributor account validation\r\n const invalidDistributors = internalPricingContextState.opportunityAccounts.filter(a => a.channelSubType !== ChannelSubType.Requester && a.partnerType === PartnerType.ADD && a.accounts?.some(x => JavaScriptExtensions.isDefined(x.isActive) && !x.isActive));\r\n\r\n let updatedAccounts = [...internalPricingContextState.opportunityAccounts];\r\n let invalidPartners: string = \"\";\r\n if (invalidResellers && invalidResellers.length > 0) {\r\n //Remove the invalid reseller & Show message\r\n updatedAccounts = updatedAccounts.filter(a => !invalidResellers.map(inv => inv?.id).includes(a.id));\r\n invalidPartners = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"UnavailablePartner\", ErrorMessages.UnavailablePartner) + invalidResellers.map(r => r?.accounts?.map(a => a.companyName)).join(', ');\r\n }\r\n\r\n if (invalidDistributors && invalidDistributors.length > 0) {\r\n //Remove the invalid Distributor & Show message\r\n updatedAccounts = updatedAccounts.filter(a => !invalidDistributors.map(inv => inv?.id).includes(a.id));\r\n invalidPartners = invalidPartners === \"\" ? getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"UnavailablePartner\", ErrorMessages.UnavailablePartner) : invalidPartners + ', ';\r\n invalidPartners = invalidPartners + invalidDistributors.map(r => r?.accounts?.map(a => a.companyName)).join(', ')\r\n }\r\n\r\n if (invalidPartners != \"\") {\r\n setInvalidResellers(invalidPartners);\r\n setHideInvalidResellerDialog(false);\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: updatedAccounts });\r\n }\r\n }\r\n\r\n //Set IsComplete Flag on initialization\r\n let accounts = [...internalPricingContextState.opportunityAccounts];\r\n if (internalPricingContextState.opportunityAccounts.length > 0 && internalPricingContextState.opportunityAccounts.filter(acc => !JavaScriptExtensions.isDefined(acc.isComplete)).length > 0) {\r\n accounts.filter(acc => !JavaScriptExtensions.isDefined(acc.isComplete)).map((acc) => acc.isComplete = true);\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: accounts });\r\n }\r\n setOpportunityAccounts(accounts);\r\n\r\n let resellerItems = internalPricingContextState.opportunityAccounts.filter(reseller => reseller.partnerType === PartnerType.ADR || reseller.partnerType === PartnerType.DMP)\r\n .map((acc) => {\r\n const contact = internalPricingContextState.opportunityChannelContacts?.find((c) => c.opportunityAccountId === acc.id);\r\n return {\r\n id: acc.id,\r\n resellerCountry: acc.accounts && acc.accounts[0].countryName,\r\n resellerType: acc.partnerType ? PartnerTypeLabel.get(acc.partnerType) : \"\",\r\n resellerNames: acc.accounts && acc.accounts[0].companyName,\r\n resellerEmailContacts: contact?.channelContactEmails,\r\n deleteAction: acc.id,\r\n action: acc.accounts && acc.accounts[0]?.action\r\n } as PrimaryResellerGridItemsType\r\n });\r\n setPrimaryResellerGridItems(resellerItems);\r\n setSelectedResellersOrDistributors();\r\n setMsStoreSelection(getMsStoreItem());\r\n }\r\n }, [internalPricingContextState.opportunityAccounts]);\r\n\r\n useEffect(() => {\r\n if (internalPricingContextState.opportunityChannelContacts) {\r\n //Set IsComplete Flag on initialization\r\n let contacts = [...internalPricingContextState.opportunityChannelContacts]\r\n contacts.filter(c => !JavaScriptExtensions.isDefined(c.isComplete)).map(\r\n c => c.isComplete = validateContactErrorMessage(c.channelContactEmails || '', StatePropertiesText.ValidateEmailText + c.opportunityAccountId) === '');\r\n\r\n setOpportunityChannelContacts(contacts);\r\n }\r\n }, [internalPricingContextState.opportunityChannelContacts]);\r\n\r\n useEffect(() => {\r\n if (endCustomerCountry) {\r\n setSelectedResellerType(PartnerType.ADR);\r\n }\r\n }, [endCustomerCountry]);\r\n\r\n //Common helper function --> to handle render Action Button Delete or Edit type\r\n function renderActionButton(rowId: string, buttonId: string, iconName: string, isFieldDisabled: boolean | undefined, onRenderClickFunction: any\r\n , gridInitialItems: PrimaryResellerGridItemsType[]): JSX.Element {\r\n let isDisabledForExistingItems = getFieldStatusBasedOnExistingItemsActionFlag(rowId, gridInitialItems);\r\n let isActionButtonDisabled = isDisabledForExistingItems || ((typeof (isFieldDisabled) == 'undefined') ? false : isFieldDisabled);\r\n\r\n return <ActionButton\r\n id={buttonId}\r\n iconProps={{\r\n iconName: iconName, ariaLabel: iconName,\r\n styles: isActionButtonDisabled ? DefaultPageStyles.grayColor : DefaultPageStyles.redColor\r\n }}\r\n disabled={isActionButtonDisabled}\r\n onClick={() => { onRenderClickFunction(); console.log(); }}>\r\n </ActionButton>\r\n }\r\n\r\n // Attach Primary Reseller grid callbacks\r\n const attachPrimaryResellerCallbacks = (columnConfig: IColumnConfig[]): IColumnConfig[] => {\r\n const isFieldDisabled = getFieldConfigByState(internalPricingContextState, \"PrimaryResellerContainer\", FieldMapMode.Disable);\r\n columnConfig.filter((item) => item.key === 'resellerEmailContacts').map((item) => item.onRender = onRenderResellerEmail);\r\n columnConfig.filter((item) => item.key === 'deleteAction').map((item) => item.onRender = onRenderResellerDelete);\r\n if (isFieldDisabled) {\r\n columnConfig.forEach((item, index) => {\r\n if (item.key === 'deleteAction') {\r\n columnConfig.splice(index, 1);\r\n }\r\n });\r\n }\r\n return columnConfig;\r\n };\r\n\r\n // Overridden OnRender event for Email textbox with validations\r\n function onRenderResellerEmail(item?: any, index?: number, column?: IColumn): JSX.Element {\r\n const fieldContent = item[column?.fieldName || ''] as string;\r\n const isDisabled = getFieldConfigByState(internalPricingContextState, \"PrimaryResellerContainer\", FieldMapMode.Disable);\r\n let gridInitialItems: PrimaryResellerGridItemsType[] = primaryResellerGridItems.filter((acc) => acc && acc.id === item?.id && acc.action === ActionType.Created);\r\n\r\n return renderTextFieldElement_HelperFunction(fieldContent, isDisabled, gridInitialItems, item, column);\r\n };\r\n\r\n //Common Helper function to render Multiline TextField Email \r\n function renderTextFieldElement_HelperFunction(fieldContent: string, isDisabled: boolean | undefined, gridInitialItems: PrimaryResellerGridItemsType[], item?: any, column?: IColumn): JSX.Element {\r\n let isDisabledForExistingItems = getFieldStatusBasedOnExistingItemsActionFlag(item?.id, gridInitialItems);\r\n let isActionButtonDisabled = isDisabledForExistingItems || ((typeof (isDisabled) == 'undefined') ? false : isDisabled);\r\n\r\n return <TextField\r\n id={item[column?.key || '']}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"EmailCCRecipientsPlaceholderTextExample\", UIControlsText.EmailCCRecipientsPlaceholderTextExample)}\r\n validateOnFocusOut\r\n required={true}\r\n multiline\r\n maxLength={1000}\r\n validateOnLoad={false}\r\n onGetErrorMessage={getEmailContactErrorMessage(StatePropertiesText.ValidateEmailText + item?.id)}\r\n onChange={onEmailContactsChange(item?.id)}\r\n disabled={isActionButtonDisabled}\r\n value={internalPricingContextState?.opportunityChannelContacts?.find(t => t.opportunityAccountId === item.id && t.source === \"Channel\")?.channelContactEmails}\r\n errorMessage={pivotTab?.errors?.get(StatePropertiesText.ValidateEmailText + item?.id)}\r\n />\r\n }\r\n\r\n // Reseller contact email change event handler\r\n const onEmailContactsChange = (accountId: string) => (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {\r\n let contacts = [...opportunityChannelContacts];\r\n updateChannelContact(contacts, accountId, newValue);\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelContactChanged, channelContacts: contacts });\r\n }\r\n\r\n // Overridden OnRender event for Primary Reseller Delete button\r\n function onRenderResellerDelete(item?: any, index?: number, column?: IColumn): JSX.Element {\r\n const accountId = item[column?.fieldName || ''] as string;\r\n const isFieldDisabled = getFieldConfigByState(internalPricingContextState, \"PrimaryResellerContainer\", FieldMapMode.Disable);\r\n const iconName = CssClassConstants.DeleteIconName;\r\n let gridInitialItems: PrimaryResellerGridItemsType[] = primaryResellerGridItems.filter((acc) => acc && acc.id === accountId && acc.action === ActionType.Created);\r\n\r\n return renderActionButton(accountId, 'primaryResellerDeleteButton', iconName, isFieldDisabled, () => onResellerDelete(accountId), gridInitialItems);\r\n }\r\n\r\n // Primary Reseller Delete button event handler\r\n function onResellerDelete(accountId: string) {\r\n if (internalPricingContextState.opportunityAccounts && accountId) {\r\n //Update Panel related variables\r\n let accounts = [...internalPricingContextState.opportunityAccounts].find((acc) => acc.id === accountId)?.accounts || [];\r\n let updatedAccounts = selectedResellers.filter((account) => account.accountId !== accounts[0].accountId);\r\n setSelectedResellers(updatedAccounts);\r\n\r\n //Update context\r\n let oppAccounts = [...internalPricingContextState.opportunityAccounts].filter((acc) => acc.id !== accountId);\r\n let contacts = [...internalPricingContextState.opportunityChannelContacts || []].filter((contact) => contact.opportunityAccountId !== accountId);\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: oppAccounts });\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelContactChanged, channelContacts: contacts });\r\n clearErrorFromContext([PartnerType.ADR], oppAccounts, StatePropertiesText.ValidatePrimaryResellers, getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryResellersOnly\", ErrorMessages.ValidatePrimaryResellersOnly));\r\n }\r\n }\r\n\r\n //Common Helper function to check if the existing row's delete button needs to be disabled.\r\n function getFieldStatusBasedOnExistingItemsActionFlag(rowAccountId: string, gridInitialItems: PrimaryResellerGridItemsType[]) {\r\n let isDisabled: boolean = false;\r\n\r\n if (gridInitialItems?.length > 0) {\r\n isDisabled = true;\r\n }\r\n return isDisabled;\r\n }\r\n\r\n //Add new IOpportunityAccount\r\n const addAccounts = (selectedAccounts: IAccount[]) => {\r\n //Remove uncheched accounts & its associated contacts\r\n let updatedAccounts = opportunityAccounts.filter(acc => selectedAccounts.some(s => acc.accounts && acc.accounts[0]?.accountId === s.accountId));\r\n let updatedContacts = opportunityChannelContacts.filter(c => c.source !== getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText) || (c.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText) && updatedAccounts.some(a => a.id === c.opportunityAccountId)));\r\n\r\n let newAccounts = selectedAccounts.filter(ac => !opportunityAccounts.find((opp) => opp.accounts && opp.accounts[0]?.accountId === ac?.accountId))\r\n .map((acc) => getNewOpportunityAccount(acc.partnerType, acc));\r\n let newContacts = newAccounts.map((acc) => getNewOpportunityChannelContact(acc?.id));\r\n\r\n internalPricingContextDispatch(\r\n {\r\n type: CaseActionTypes.channelAccountContactChanged,\r\n opportunityChannel:\r\n {\r\n opportunityAccounts: [...updatedAccounts, ...newAccounts, ...opportunityAccounts.filter(a => a.partnerType === PartnerType.MsStore)],\r\n channelContacts: [...updatedContacts, ...newContacts]\r\n }\r\n });\r\n\r\n if (opportunityAccounts.find(t => (t.partnerType === PartnerType.ADR || t.partnerType === PartnerType.DMP)) !== null) {\r\n const pivotTabsData = internalPricingContextState.pivotTabs;\r\n let pivotTabChannel = pivotTabsData?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)) || {};\r\n pivotTabChannel?.errors?.delete(StatePropertiesText.ValidatePrimaryResellers);\r\n internalPricingContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabsData });\r\n }\r\n }\r\n\r\n //callback method to add new ADDs from Panel\r\n const onPrimaryResellerAdd = (selectedItems: any[]): void => {\r\n if (selectedItems) {\r\n const selectedData = [...selectedItems];\r\n selectedData.forEach(t => t.action = (t.action === ActionType.PanelAdd) ? ActionType.Add : t.action)\r\n setSelectedResellers(selectedData);\r\n addAccounts([...selectedData]);\r\n }\r\n }\r\n\r\n // Get Email Contacts TextField ErrorMessage.\r\n const getEmailContactErrorMessage = (targetPropertyId?: string) => (value: string): string => {\r\n return validateContactErrorMessage(value, targetPropertyId)\r\n };\r\n\r\n const validateContactErrorMessage = (value: string, targetPropertyId?: string): string => {\r\n let message = '';\r\n if (!value) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredResellerEmail\", ErrorMessages.RequiredResellerEmail);\r\n }\r\n else if (!isValidEmailWithSeperator(value, \";\")) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"InvalidResellerEmail\", ErrorMessages.InvalidResellerEmail);\r\n }\r\n\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(targetPropertyId)) {\r\n setErrorsDataIntoContext(message, targetPropertyId || \"\");\r\n }\r\n return message;\r\n }\r\n\r\n const setErrorsDataIntoContext = (message: string, targetPropertyId: string) => {\r\n const pivotTabsData = internalPricingContextState.pivotTabs;\r\n var pivotTab = pivotTabsData?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText));\r\n if (JavaScriptExtensions.isEmptyOrNullOrUndefined(message)) {\r\n pivotTab?.errors?.delete(targetPropertyId);\r\n }\r\n else {\r\n pivotTab?.errors?.set(targetPropertyId, message);\r\n }\r\n internalPricingContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabsData })\r\n }\r\n\r\n //Update IOpportunityChannelContact\r\n function updateChannelContact(contacts: IOpportunityChannelContact[], id?: string, email?: string, isMSStore?: boolean) {\r\n let updatedContact = contacts.find(c => c.opportunityAccountId === id);\r\n email = email?.replace(',', ';');\r\n if (updatedContact) {\r\n updatedContact.channelContactEmails = email?.replace(',', ';');\r\n updatedContact.isComplete = validateContactErrorMessage(email || '', StatePropertiesText.ValidateEmailText + id) === '';\r\n }\r\n }\r\n\r\n // MsStore ChoiceGroup change event handler\r\n const onMSStoreChannelChange = (ev?: React.FormEvent<HTMLElement | HTMLInputElement>, option?: IChoiceGroupOption): void => {\r\n if (option && option.key) {\r\n setMsStoreSelection(option.key);\r\n let msStoreAccount = opportunityAccounts && opportunityAccounts.find(a => a.partnerType === PartnerType.MsStore) as IOpportunityAccount;\r\n\r\n if (option.key === UIControlsText.YesText) {\r\n if (!msStoreAccount && endCustomerCountry) {\r\n msStoreAccount =\r\n {\r\n id: Guid.newGuid(),\r\n countryId: endCustomerCountry.countryId,\r\n partnerType: PartnerType.MsStore,\r\n isAllSelected: AccountAllType.None,\r\n isComplete: true,\r\n action: getParentAccountAction(endCustomerCountry?.countryId, PartnerType.MsStore)\r\n };\r\n\r\n let accounts = internalPricingContextState.opportunityAccounts?.filter(acc => acc.partnerType !== PartnerType.MsStore) || [];\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: [...accounts, msStoreAccount] });\r\n }\r\n } else {\r\n if (msStoreAccount) {\r\n let accounts = internalPricingContextState.opportunityAccounts?.filter(acc => acc.id !== msStoreAccount.id) || [];\r\n internalPricingContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: accounts });\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Function to evaluate if OTLE MSStore Option is enabled/disabled.\r\n const isOtleMSStoreDisabled = (): boolean => {\r\n var isMSStoreDisabled = true;\r\n if (endCustomerCountry && ((internalPricingContextState.pageMode === PageMode.Edit\r\n && internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Draft)\r\n || internalPricingContextState.pageMode === PageMode.Create)) {\r\n isMSStoreDisabled = !endCustomerCountry.isMsStore;\r\n }\r\n else if (endCustomerCountry && internalPricingContextState.pageMode === PageMode.Edit\r\n && internalPricingContextState.opportunityAccounts && internalPricingContextState.opportunityAccounts.length\r\n && (internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Approved\r\n || internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Incomplete)) {\r\n if (internalPricingContextState.opportunityAccounts.filter(x => x.partnerType === PartnerType.MsStore && x.action !== ActionType.Add).length > 0) {\r\n isMSStoreDisabled = true;\r\n }\r\n else {\r\n isMSStoreDisabled = !endCustomerCountry.isMsStore;\r\n\r\n }\r\n }\r\n\r\n return isMSStoreDisabled;\r\n }\r\n\r\n const channelData = {\r\n id: 'DocCardContainerForReseller',\r\n baseState: internalPricingContextState,\r\n name: \"Reseller Details\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellersIcon\", UIControlsText.ResellersIcon),\r\n visible: !(showChannelContentBasedOnRoleType?.MSStore) && !isResellerLoading && showChannelContentBasedOnRoleType?.PrimaryResellersOnly,\r\n className: \"otle-reseller\",\r\n components: [\r\n {\r\n type: 'DialogComponent',\r\n data: {\r\n id: 'invalidResellerDialog',\r\n hidden: hideInvalidResellerDialog,\r\n isBlocking: true,\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"UnavailableChannelPartner\", ErrorMessages.UnavailableChannelPartner),\r\n subText: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"InvalidResellerAccounts\", ErrorMessages.InvalidResellerAccounts),\r\n DialogContent: invalidResellers,\r\n onDismiss: () => {\r\n setHideInvalidResellerDialog(true);\r\n setInvalidResellers(\"\");\r\n },\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackReseller',\r\n visible: true,\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n tokens: smallAlignmentTokens,\r\n wrap: true,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemForAddChannelRoleBasedContentForReseller',\r\n vertical: true,\r\n wrap: true,\r\n visible: true,\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: UIConfigIdentifierConstants.PrimaryResellerContainerId,\r\n visible: true,\r\n components: [\r\n {\r\n type: \"CustomViewModeComponent\",\r\n data: {\r\n id: \"LabelResellerInformation\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerInformation\", UIControlsText.ResellerInformation),\r\n styles: PageStyles.sectionHeading,\r\n }\r\n },\r\n {\r\n type: \"GuidanceTextInformation\",\r\n data: {\r\n id: UIConfigIdentifierConstants.GuidanceTextForResellerId,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"GuidanceTextForReseller\", UIControlsText.GuidanceTextForReseller),\r\n styles: PageStyles.textFieldStylesWidth146,\r\n visible: true\r\n }\r\n },\r\n {\r\n type: \"ChoiceGroup\",\r\n data: {\r\n id: \"MSStoreChannel\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MsStoreLabeltext\", UIControlsText.MsStoreLabeltext),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MsStoreLabeltext\", UIControlsText.MsStoreLabeltext),\r\n styles: DealDetailsStyles.horizontalChoiceGroup,\r\n options: [{ key: UIControlsText.YesText, text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) }, { key: UIControlsText.NoText, text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText), styles: { field: DealDetailsStyles.marginLeft10 } }],\r\n required: true,\r\n defaultSelectedKey: msStoreSelection,\r\n selectedKey: msStoreSelection,\r\n onChange: onMSStoreChannelChange,\r\n disabled: isOtleMSStoreDisabled()\r\n }\r\n },\r\n {\r\n type: \"PanelTableContainer\",\r\n data: {\r\n invokePanelProps: {\r\n iconProps: {\r\n iconName: CssClassConstants.AddItemIconName,\r\n ariaLabel: CssClassConstants.AddIconName\r\n },\r\n buttonStyles: PageStyles.buttonStylesLong,\r\n buttonText: showChannelContentBasedOnRoleType?.PrimaryResellersOnly ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddResellerText\", UIControlsText.AddResellerText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddPrimaryResellerText\", UIControlsText.AddPrimaryResellerText),\r\n onButtonClick: () => onPanelClick('reseller'),\r\n disabled: getFieldConfigByState(internalPricingContextState, \"PrimaryResellerContainer\", FieldMapMode.Disable)\r\n || internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview\r\n },\r\n messageBar: {\r\n messageBarType: MessageBarType.error,\r\n isMultiline: false,\r\n dismissButtonAriaLabel: \"Close\"\r\n },\r\n panelType: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Reseller\", UIControlsText.Reseller),\r\n errorMessage: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameErrorMessage\", UIControlsText.ResellerNameErrorMessage) || '',\r\n headerText: GridType.ResellersList,\r\n sortingDataType: 'number',\r\n propertyName: 'organizationId',\r\n onItemSelection: onResellerChange,\r\n onClearAll: onClearAll,\r\n tableConfigurationFields: resellerTableConfigurations,\r\n selectionType: GridSelectionType.Mulitple,\r\n columnDefinitions: resellerColumnDefinitions,\r\n tableContent: resellers && resellers.current && resellers.current.length > 0 && resellers.current.map((pt: any) => ({\r\n key: `${pt.accountId}-${pt.partnerType}`, id: pt.accountId, name: pt.companyName, data: partnerTypeValues[`${pt.partnerType}`], partnerType: pt.partnerType, country: pt.countryName, countryId: pt.countryId, organizationId: pt.organizationId, countryGeo: pt.applicablePriceListGeo,\r\n editMode: false\r\n })) || [],\r\n countrySelected: selectedResellerCountry,\r\n geoSelected: endCustomerCountry?.applicablePriceListGeo,\r\n partnerTypeSelected: selectedResellerType,\r\n selectedItems: selectedResellers && selectedResellers.map((x: any) => ({\r\n key: `${x.accountId}-${x.partnerType}`, id: x.accountId, name: x.companyName, data: partnerTypeValues[`${x.partnerType}`], partnerType: x.partnerType, country: x.countryName, countryId: x.countryId, countryGeo: x.applicablePriceListGeo, organizationId: x.organizationId, action: x.action,\r\n editMode: isEditableRow(selectedResellerCountry, internalPricingContextState?.pageMode, currentDealStatusCode, x, x.partnerType)\r\n } as any)) || [],\r\n disableSelectAllSelection: false,\r\n primaryButtonProps: {\r\n ariaLabel: 'AddReseller',\r\n text: showChannelContentBasedOnRoleType?.PrimaryResellersOnly ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddResellerText\", UIControlsText.AddResellerText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddPrimaryResellerText\", UIControlsText.AddPrimaryResellerText),\r\n onClick: () => onAddButtonClicked(),\r\n style: PageStyles.panelButtonStyle,\r\n },\r\n onDefaultButtonClick: onClearAll,\r\n footerTextField: `${selectedResellers && selectedResellers.length} Resellers selected`,\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: !JavaScriptExtensions.isEmptyOrNullOrUndefined(pivotTab?.errors?.get(StatePropertiesText.ValidatePrimaryResellers)),\r\n data: {\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n contolType: UIControlType.Label,\r\n id: \"ValidatePrimaryResellerError\",\r\n value: pivotTab?.errors?.get(StatePropertiesText.ValidatePrimaryResellers),\r\n className: 'ms-LabelValueInvalid',\r\n styles: DefaultPageStyles.customWidthStyleAuto\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"DetailListEditableGrid\",\r\n data: {\r\n id: \"DetailsListGridForPrimaryReseller\",\r\n key: \"DetailsListGridForPrimaryReseller\",\r\n styles: { root: { height: \"100%\" } },\r\n items: primaryResellerGridItems,\r\n columns: attachPrimaryResellerCallbacks(PrimaryResellerGridColumnConfig),\r\n gridConfigOptions: {\r\n enableCellEdit: internalPricingContextState?.pageMode == PageMode.Create,\r\n },\r\n enableDefaultEditMode: internalPricingContextState?.pageMode == PageMode.Create,\r\n height: \"200px\",\r\n width: \"100%\",\r\n visible: primaryResellerGridItems?.length !== 0,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n };\r\n\r\n return (\r\n <div\r\n data-nextgen-parent-group={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)}\r\n data-nextgen-parentid={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)}\r\n className=\"otle-channel\">\r\n <Stack horizontal {...defaultColumnProps} styles={PageStyles.labelStyles}>\r\n <CustomTileCardComponent {...channelData} />\r\n </Stack>\r\n </div>\r\n );\r\n}","import { IOpportunityDealDetails } from \"../../../models/IOpportunityDealDetails\";\r\nimport { IUserRoleDetail } from \"../../../models/IUserRoleDetail\";\r\nimport { getDealClosureDecisionNameByCode, getDealDurationConfig, getDealVolumes, getDistinctUserRole, getLoggedinUserRoleDetails, getUserRole, isNullOrEmpty } from \"../common/util\";\r\nimport { IActionButtonConfig } from \"./IActionButtonConfig\";\r\nimport ActionMenuConfig from \"./action-menu-config.json\";\r\nimport { IActionMenuConfig } from \"../../../models/IActionMenuConfig\";\r\nimport { IKendoGridProps } from \"../grid/IKendoGridProps\";\r\nimport { JavaScriptExtensions } from \"../../../infrastructure/JavaScriptExtensions\";\r\nimport { IActionMenuPermissions } from \"../../../models/IActionMenuPermissons\";\r\nimport { CaseActions } from \"./case-actions\";\r\nimport { DealType } from \"../../../models/DealType\";\r\nimport { ApplicationConstants } from \"../../../models/ApplicationConstants\";\r\nimport { OpportunityDealPortalEditStatusNames } from \"../../../models/OpportunityDealPortalEditStatusNames\"\r\nimport { OpportunityDealStatusCodes } from \"../../../models/OpportunityDealStatusCodes\";\r\nimport { OpportunityDealClosureDecisionName } from \"../../../models/OpportunityDealClosureDecisionName\";\r\n\r\nexport function enableActionMenu(opportunityDeal: IOpportunityDealDetails) {\r\n const config: IActionMenuConfig | undefined = readActionMenuConfig(opportunityDeal.dealType.name || \"\");\r\n const userRoles = getUserRole();\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n const actionsConfig: IActionButtonConfig =\r\n {\r\n enableEdit: false,\r\n enableExpire: false,\r\n enableExtend: false,\r\n enableRenew: false,\r\n enableCopy: false,\r\n enableDelete: false,\r\n enableCPStrategicLetters: false,\r\n enableCPCaseDecisionLetter: false,\r\n enableRevert: false,\r\n showCPCaseDecisionLetter: true,\r\n showCPStrategicLetters: true\r\n };\r\n\r\n const distinctUserRole = getDistinctUserRole(userRoleDetails);\r\n opportunityDeal.userType = JavaScriptExtensions.isNullOrUndfinedOrEmpty(opportunityDeal.userType) ? [] : opportunityDeal.userType;\r\n actionsConfig.enableEdit = enableAction(CaseActions.Edit, config?.allowCaseEdit, opportunityDeal, userRoles);\r\n actionsConfig.enableExpire = enableAction(CaseActions.Expire, config?.allowCaseExpire, opportunityDeal, userRoles);\r\n actionsConfig.enableExtend = enableAction(CaseActions.Extend, config?.allowCaseExtend, opportunityDeal, userRoles);\r\n actionsConfig.enableRenew = enableAction(CaseActions.Renew, config?.allowCaseRenew, opportunityDeal, userRoles);\r\n actionsConfig.enableCopy = enableAction(CaseActions.Copy, config?.allowCaseCopy, opportunityDeal, userRoles);\r\n actionsConfig.enableDelete = enableAction(CaseActions.Delete, config?.allowCaseDelete, opportunityDeal, userRoles);\r\n\r\n actionsConfig.enableCPStrategicLetters = enableCPStrategicLettersAction(config, opportunityDeal, userRoles);\r\n actionsConfig.enableCPCaseDecisionLetter = enableCPCaseDecisionLetter(config, opportunityDeal, userRoles);\r\n actionsConfig.enableRevert = enableAction(CaseActions.Revert, config?.allowCaseRevert, opportunityDeal, userRoles);\r\n\r\n return actionsConfig;\r\n}\r\n\r\nexport function readActionMenuConfig(dealType: string): IActionMenuConfig | undefined {\r\n const gridConfigs = ActionMenuConfig.map((item: IActionMenuConfig) => {\r\n return {\r\n dealType: item.dealType,\r\n allowCaseView: item.allowCaseView,\r\n allowAddCaseToDashboard: item.allowAddCaseToDashboard,\r\n allowCaseEdit: item.allowCaseEdit,\r\n allowCaseRevert: item.allowCaseRevert,\r\n allowCaseDelete: item.allowCaseDelete,\r\n allowCaseExpire: item.allowCaseExpire,\r\n allowCaseLetters: item.allowCaseLetters,\r\n allowCaseDecisionLetter: item.allowCaseDecisionLetter,\r\n allowCaseCopy: item.allowCaseCopy,\r\n allowCaseExtend: item.allowCaseExtend,\r\n allowCaseRenew: item.allowCaseRenew,\r\n } as IActionMenuConfig\r\n });\r\n\r\n return gridConfigs.find((item: IActionMenuConfig) => item.dealType.toLowerCase() === dealType.toLowerCase());\r\n}\r\n\r\nfunction enableAction(caseAction: CaseActions, config: IActionMenuPermissions | undefined, opportunityDeal: IOpportunityDealDetails, userRoles: string): boolean {\r\n\r\n if (config?.userRoles?.some((r: any) => userRoles.includes(r)) &&\r\n config?.statusValues?.indexOf(opportunityDeal.statusCodeName) !== -1 &&\r\n config?.userType?.some((u: any) => opportunityDeal.userType?.includes(u))) {\r\n let enable = true\r\n if (caseAction === CaseActions.Renew) {\r\n return enable && validateRenew(opportunityDeal)\r\n } \r\n\r\n if (caseAction === CaseActions.Revert) {\r\n return enable && opportunityDeal.isRevertEligible\r\n }\r\n\r\n if (caseAction === CaseActions.Edit) {\r\n return enable && validateEdit(opportunityDeal)\r\n }\r\n\r\n if (caseAction === CaseActions.Copy) {\r\n let cutoffDate = new Date();\r\n cutoffDate.setHours(0, 0, 0, 0);\r\n cutoffDate.setMonth(cutoffDate.getMonth() - ApplicationConstants.CaseCopyCutOffInMonths);\r\n\r\n if (opportunityDeal?.expirationDate !== undefined && opportunityDeal?.expirationDate < cutoffDate) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction validateRenew(opportunityDeal: IOpportunityDealDetails): boolean {\r\n if (opportunityDeal == undefined) {\r\n return false\r\n }\r\n\r\n if (!opportunityDeal.isRenewalEligible) {\r\n return false\r\n }\r\n \r\n let currentDate = new Date()\r\n let dealUnitsTransacted = opportunityDeal.unitsTransactedHardware\r\n let dealUnitsCommitted = opportunityDeal.dealVolume\r\n\r\n let caseStartDate = new Date()\r\n if (opportunityDeal?.caseStartDate !== undefined) {\r\n caseStartDate = new Date(opportunityDeal?.caseStartDate)\r\n }\r\n\r\n let dealExpirationDate = opportunityDeal.expirationDate\r\n if (dealExpirationDate === undefined) {\r\n return false\r\n }\r\n\r\n let dealDurations = getDealDurationConfig(opportunityDeal?.dealType?.name || \"\", opportunityDeal?.customerCountry)\r\n if (isNullOrEmpty(dealDurations)) {\r\n return false\r\n }\r\n\r\n let renewalEligibleWindow = dealDurations?.renewalEligibleWindowInDays || 0\r\n let maxCaseDuration = dealDurations?.maximumDurationInMonths || 0;\r\n\r\n let maxExpirationDate = new Date(caseStartDate)\r\n maxExpirationDate.setMonth(caseStartDate.getMonth() + maxCaseDuration);\r\n\r\n let diffInMs = Math.abs(maxExpirationDate.valueOf() - currentDate.valueOf())\r\n diffInMs = diffInMs / (1000 * 60 * 60 * 24)\r\n if (diffInMs > renewalEligibleWindow) {\r\n return false\r\n }\r\n\r\n let dealVolumes = getDealVolumes(opportunityDeal?.dealType?.name || \"\", opportunityDeal?.productType, opportunityDeal?.dealVertical, opportunityDeal?.customerCountry)\r\n if (isNullOrEmpty(dealVolumes)) {\r\n return false\r\n }\r\n\r\n let unitsTransactedThreshold = dealVolumes?.renewalMinimumUnitsTransacted || 0\r\n if (opportunityDeal.dealType?.name === DealType.DealRegistration) {\r\n if (dealUnitsTransacted && dealUnitsTransacted < unitsTransactedThreshold) {\r\n return false\r\n }\r\n }\r\n\r\n if (opportunityDeal.dealType.name === DealType.SpecialPricing) {\r\n if (dealUnitsTransacted && dealUnitsTransacted < (unitsTransactedThreshold * dealUnitsCommitted / 100)) {\r\n return false\r\n }\r\n }\r\n \r\n return true\r\n}\r\n\r\nfunction validateEdit(opportunityDeal: IOpportunityDealDetails): boolean {\r\n if (opportunityDeal === undefined) {\r\n return false;\r\n }\r\n\r\n if (opportunityDeal.closureDecisionString === OpportunityDealPortalEditStatusNames.EditPendingReview) {\r\n return false; \r\n }\r\n\r\n if (opportunityDeal.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview) {\r\n if (opportunityDeal.closureDecision === undefined) {\r\n if (opportunityDeal.closureDecisionString !== OpportunityDealClosureDecisionName.RequireAdditionalInformation) {\r\n return false; \r\n }\r\n }\r\n else if (getDealClosureDecisionNameByCode(Number(opportunityDeal.closureDecision)) !== OpportunityDealClosureDecisionName.RequireAdditionalInformation) {\r\n return false; \r\n }\r\n }\r\n \r\n return true;\r\n}\r\n\r\nfunction enableCPStrategicLettersAction(config: IActionMenuConfig | undefined, opportunityDeal: IOpportunityDealDetails, userRoles: string): boolean {\r\n\r\n if (config?.allowCaseLetters?.userRoles?.some((r: any) => userRoles.includes(r)) &&\r\n config?.allowCaseLetters?.statusValues?.indexOf(opportunityDeal.statusCodeName) !== -1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction enableCPCaseDecisionLetter(config: IActionMenuConfig | undefined, opportunityDeal: IOpportunityDealDetails, userRoles: string): boolean {\r\n\r\n if (config?.allowCaseDecisionLetter?.userRoles?.some((r: any) => userRoles.includes(r)) &&\r\n (config?.allowCaseDecisionLetter?.statusValues?.indexOf(opportunityDeal.statusCodeName) !== -1)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport const manufactureConfirmatonLetterVisible = (config: IKendoGridProps | undefined, userRoleDetails: IUserRoleDetail[]) => {\r\n return JavaScriptExtensions.isNullOrUndfinedOrEmpty(config?.actionTypes?.showManufactureConfirmationLetter) ? false : config?.actionTypes?.showManufactureConfirmationLetter\r\n}","/**\r\n * Enum for Product Structure.\r\n * @readonly\r\n * @enum {Enum}\r\n */\r\nexport enum ProductStructure {\r\n\r\n /**\r\n * ProductFamily value.\r\n */\r\n ProductFamily = 1,\r\n\r\n /**\r\n * ProductSKU value.\r\n */\r\n ProductSKU = 2,\r\n\r\n /**\r\n * BusinessUnit value.\r\n */\r\n BusinessUnit = 3,\r\n\r\n}","import { useEffect, useState } from 'react';\r\nimport { UIControlsText, UIConfigIdentifierConstants } from '../../../../content/UIControlsText';\r\nimport { DealDetailsStyles, PageStyles } from '../../common/content/Page.Styles';\r\nimport { DistributorGridColumnConfig, PrimaryResellerGridColumnConfig, PrimaryResellerGridItemsType, DistributorGridItemsType, IColumnConfig } from '../../../shared/ComponentTypes/DetailListEditableGridTypes';\r\nimport { defaultColumnProps, _Styles } from '../../../../content/styles/Page.styles';\r\nimport { getEntityDataFromSession, getRuleValidationMessage } from '../../../../components/shared/common/util';\r\nimport { stackItemStyles, smallAlignmentTokens } from '../../PricingProgramForm/PricingProgramFormUtils';\r\nimport { PartnerTypeLabel } from '../../../../models/PartnerTypeLabel';\r\nimport _ from 'lodash';\r\nimport { PartnerType } from '../../../../models/PartnerType';\r\nimport { Stack } from '@fluentui/react';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { useInternalPricingContext } from '../context/internalpricing-context';\r\nimport { EditControlType } from 'fluentui-editable-grid';\r\nimport DocumentCardContainerComponent from '../../../shared/ComponentTypes/CustomTileCardContainer';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { UserSubRole } from '../../../../models/UserSubRole';\r\n\r\nexport function OtleChannelView() {\r\n const { internalPricingContextState } = useInternalPricingContext();\r\n const opportunityAccounts = internalPricingContextState && internalPricingContextState?.opportunityAccounts;\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [primaryResellerGridItems, setPrimaryResellerGridItems] = useState<PrimaryResellerGridItemsType[]>([]);\r\n const [distributorListGridItems, setDistributorGridItemsState] = useState<DistributorGridItemsType[]>([]);\r\n const userRole = sessionStorage.getItem(SessionStorageConsts.userRole);\r\n\r\n //Show the content appropriate to the Channel Requestor Role and other combinations\r\n const [msStoreSelection, setMsStoreSelection] = useState(UIControlsText.NoText);\r\n\r\n\r\n const getMsStoreItem = (): string => {\r\n return internalPricingContextState?.opportunityAccounts?.find(opp => opp.partnerType === PartnerType.MsStore) ? UIControlsText.YesText : UIControlsText.NoText\r\n };\r\n\r\n const getPrimaryResellerGridItems = () => {\r\n return opportunityAccounts?.filter(reseller => reseller.partnerType === PartnerType.ADR || reseller.partnerType === PartnerType.DMP)\r\n .map((optyAcc) => {\r\n const contact = internalPricingContextState.opportunityChannelContacts?.find((c) => c.opportunityAccountId === optyAcc.id);\r\n return {\r\n id: optyAcc.id,\r\n resellerCountry: optyAcc.accounts && optyAcc.accounts[0]?.countryName,\r\n resellerType: optyAcc.partnerType ? PartnerTypeLabel.get(optyAcc.partnerType) : \"\",\r\n resellerNames: optyAcc.accounts && optyAcc.accounts[0]?.companyName,\r\n resellerEmailContacts: contact?.channelContactEmails,\r\n deleteAction: optyAcc.id\r\n } as PrimaryResellerGridItemsType\r\n });\r\n }\r\n\r\n const getDistributorGridItems = () => {\r\n return opportunityAccounts?.filter(optyAccount => optyAccount.partnerType === PartnerType.ADD)\r\n .map((optyAcc) => {\r\n const contact = internalPricingContextState.opportunityChannelContacts?.find((c) => c.opportunityAccountId === optyAcc.id);\r\n const distiAccounts = optyAcc?.accounts && optyAcc?.accounts[0];\r\n return {\r\n id: optyAcc.id,\r\n distributorCountry: distiAccounts?.countryName,\r\n distributorNames: distiAccounts?.companyName,\r\n distributorEmailContacts: contact?.channelContactEmails,\r\n associatedPartner: distiAccounts && optyAcc.partnerAccounts && optyAcc.partnerAccounts[distiAccounts.accountId]\r\n && optyAcc.partnerAccounts[distiAccounts.accountId][0]\r\n && optyAcc.partnerAccounts[distiAccounts.accountId][0].companyName\r\n } as DistributorGridItemsType\r\n });\r\n }\r\n\r\n // Attach Primary Reseller grid callbacks\r\n const attachPrimaryResellerCallbacks = (columnConfig: IColumnConfig[]): IColumnConfig[] => {\r\n columnConfig = columnConfig.filter(x => x.key !== \"deleteAction\");\r\n if (userRole === UserSubRole.ADD) {\r\n columnConfig = columnConfig.filter(x => x.key !== \"resellerEmailContacts\");\r\n }\r\n\r\n return columnConfig;\r\n };\r\n\r\n // Attach Distributor grid callbacks\r\n const attachDistributorCallbacks = (columnConfig: IColumnConfig[]): IColumnConfig[] => {\r\n var emailColumn = columnConfig.find(x => x.key === \"distributorEmailContacts\");\r\n columnConfig = columnConfig.filter(x => x.key !== \"distributorOwner\" && x.key !== \"deleteAction\" && x.key !== \"distributorEmailContacts\");\r\n\r\n var associatedPartner = {\r\n key: 'associatedPartner',\r\n name: 'associatedPartner',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AssociatedReseller\", UIControlsText.AssociatedReseller),\r\n editable: true,\r\n dataType: 'string',\r\n minWidth: 180,\r\n maxWidth: 200,\r\n isResizable: true,\r\n inputType: EditControlType.TextField\r\n };\r\n\r\n columnConfig = columnConfig.concat([associatedPartner]);\r\n if (emailColumn) {\r\n columnConfig = columnConfig.concat([emailColumn]);\r\n }\r\n\r\n return columnConfig;\r\n };\r\n\r\n useEffect(() => {\r\n if (opportunityAccounts && opportunityAccounts.length) {\r\n setPrimaryResellerGridItems(getPrimaryResellerGridItems() || []);\r\n setDistributorGridItemsState(getDistributorGridItems() || []);\r\n setMsStoreSelection(getMsStoreItem());\r\n }\r\n }, [opportunityAccounts]);\r\n\r\n /**\r\n * Content for the Channel tab in view mode with JSON format\r\n * @json\r\n */\r\n const ChannelJson = {\r\n className: \"otle-reseller\",\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'MSStoreChannel',\r\n visible: userRole !== UserSubRole.ADD && userRole !== UserSubRole.ADR && userRole !== UserSubRole.DMP && userRole !== UserSubRole.Reseller,\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n tokens: smallAlignmentTokens,\r\n wrap: true,\r\n components: [\r\n {\r\n type: 'ChoiceGroup',\r\n data: {\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MsStoreLabeltext\", UIControlsText.MsStoreLabeltext),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MsStoreLabeltext\", UIControlsText.MsStoreLabeltext),\r\n styles: DealDetailsStyles.horizontalChoiceGroup,\r\n visible: true,\r\n options: [{ key: UIControlsText.YesText, text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) }, { key: UIControlsText.NoText, text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText), styles: { field: DealDetailsStyles.marginLeft10 } }],\r\n required: true,\r\n defaultSelectedKey: msStoreSelection,\r\n selectedKey: msStoreSelection,\r\n disabled: false,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForReseller\",\r\n visible: primaryResellerGridItems.length > 0,\r\n baseState: internalPricingContextState,\r\n name: \"Reseller Details\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellersIcon\", UIControlsText.ResellersIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackReseller',\r\n visible: true,\r\n styles: stackItemStyles,\r\n components: [\r\n //Reseller Grid\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemForAddChannelRoleBasedContentForReseller',\r\n visible: true,\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: UIConfigIdentifierConstants.PrimaryResellerContainerId,\r\n visible: true,\r\n components: [\r\n {\r\n type: \"DetailListEditableGrid\",\r\n data: {\r\n id: \"DetailsListGridForPrimaryReseller\",\r\n key: \"DetailsListGridForPrimaryReseller\",\r\n styles: { root: { height: \"100%\" } },\r\n items: primaryResellerGridItems,\r\n columns: attachPrimaryResellerCallbacks(PrimaryResellerGridColumnConfig),\r\n gridConfigOptions: {\r\n enableCellEdit: false,\r\n },\r\n enableDefaultEditMode: false,\r\n height: \"140px\",\r\n width: \"100%\",\r\n visible: primaryResellerGridItems?.length !== 0,\r\n className: \"channel-grid\",\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForDistributor\",\r\n visible: distributorListGridItems?.length > 0,\r\n baseState: internalPricingContextState,\r\n name: \"Distributor Details\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.UserEvent, \"DistributorIcon\", UIControlsText.DistributorIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'ChannelStackForDisti',\r\n horizontal: true,\r\n components: [\r\n //Distributor Grid\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForAddChannelRoleBasedContentForDistributor',\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"DetailListEditableGrid\",\r\n data: {\r\n id: \"DetailsListCustomColumnsForDistributor\",\r\n key: \"DetailsListCustomColumnsForDistributor\",\r\n items: distributorListGridItems,\r\n columns: attachDistributorCallbacks(DistributorGridColumnConfig),\r\n gridConfigOptions: { enableCellEdit: false },\r\n styles: PageStyles.textFieldPanelWidth,\r\n visible: distributorListGridItems?.length > 0,\r\n height: (90 + (30 * distributorListGridItems?.length)) + \"px\",\r\n className: \"channel-grid\",\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n };\r\n\r\n return (\r\n <div data-nextgen-parent-group={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)}\r\n data-nextgen-parentid={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)}\r\n className=\"otle-channel\">\r\n <Stack horizontal {...defaultColumnProps} styles={PageStyles.labelStyles}>\r\n <DocumentCardContainerComponent {...ChannelJson} />\r\n </Stack>\r\n </div>\r\n );\r\n}","import { defaultColumnProps, _Styles } from '../../../../content/styles/Page.styles';\r\nimport { ILegalEntity } from '../../../../models/ILegalEntity';\r\nimport { useInternalPricingContext } from '../../CPStrategic/context/internalpricing-context';\r\nimport DocumentCardContainerComponent from '../../../shared/ComponentTypes/CustomTileCardContainer';\r\nimport { Stack } from 'office-ui-fabric-react/lib/components/Stack';\r\nimport { PageStyles } from '../../common/content/Page.Styles';\r\nimport { smallAlignmentTokens, stackItemCustomerStyles } from '../../PricingProgramForm/PricingProgramFormUtils';\r\nimport { getEntityDataFromSession, getRuleValidationMessage, isFieldVisible } from '../../../../components/shared/common/util';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { UIControlsText } from '../../../../content/UIControlsText';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { ApplicationConstants } from '../../../../models/ApplicationConstants';\r\n\r\nexport function OtleCustomerView() {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const { internalPricingContextState } = useInternalPricingContext();\r\n let customerDetail: ILegalEntity = {} as ILegalEntity;\r\n \r\n // to read customer information from context\r\n if (internalPricingContextState?.opportunityDeals[0].dealCustomers && internalPricingContextState?.opportunityDeals[0].dealCustomers.length > 0) {\r\n customerDetail = internalPricingContextState.opportunityDeals[0].dealCustomers[0];\r\n }\r\n\r\n //validate customer type and visible fields accordingly\r\n const isManagedCustomer = (isManagedCustomerField: boolean): boolean => {\r\n var isManaged = customerDetail?.isManaged;\r\n return isManagedCustomerField === isManaged\r\n }\r\n //validate customer type and visible fields accordingly\r\n const isCustomerExists = (): boolean => {\r\n var isExists = true \r\n if(!customerDetail?.country)\r\n {\r\n isExists = false;\r\n }\r\n return isExists;\r\n }\r\n\r\n const CustomerDetailsJson = {\r\n components:\r\n [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForCustDetails\",\r\n wrap: true,\r\n horizontal: true,\r\n visible: isCustomerExists(),\r\n disableShrink:true,\r\n tokens: smallAlignmentTokens,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomercountry',\r\n visible: isCustomerExists(),\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardCustomer\",\r\n baseState: internalPricingContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDetails\", UIControlsText.CustomerDetails),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDetailsIcon\", UIControlsText.CustomerDetailsIcon),\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForAllCustomerStackItems\",\r\n wrap: true,\r\n horizontal: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n styles: stackItemCustomerStyles,\r\n align: \"start\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerCountryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerCountry\", UIControlsText.CustomerCountry),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerCountry\", UIControlsText.CustomerCountry), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.country,\r\n styles: PageStyles.textFieldStylesFourColumn\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerName',\r\n visible: isManagedCustomer(true),\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerNameValueField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameText\", UIControlsText.CustomerNameText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameText\", UIControlsText.CustomerNameText), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.legalEntityName,\r\n styles: PageStyles.textFieldStylesFourColumn\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerDomain',\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText), internalPricingContextState.pageMode, ApplicationConstants.otlePageName),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerDomainTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText), \r\n contolType: UIControlType.LabelValueView,\r\n styles: PageStyles.textFieldStylesFourColumn,\r\n value: customerDetail?.dealCustomerDomain,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'TPID',\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"TPID\", UIControlsText.TPID), internalPricingContextState.pageMode, ApplicationConstants.otlePageName),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"TPIDTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"TPID\", UIControlsText.TPID),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"TPID\", UIControlsText.TPID), \r\n contolType: UIControlType.LabelValueView,\r\n styles: PageStyles.textFieldStylesFourColumn,\r\n value: customerDetail?.tpid,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'CRMChildAccountId',\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CRMAccountID\", UIControlsText.CRMAccountID), internalPricingContextState.pageMode, ApplicationConstants.otlePageName),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CRMAccountIDTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CRMAccountID\", UIControlsText.CRMAccountID),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CRMAccountID\", UIControlsText.CRMAccountID), \r\n contolType: UIControlType.LabelValueView,\r\n styles: PageStyles.textFieldStylesFourColumn,\r\n value: customerDetail?.crmAccountId,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'Segment',\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerSegment\", UIControlsText.CustomerSegment), internalPricingContextState.pageMode, ApplicationConstants.otlePageName),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"SegmentTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerSegment\", UIControlsText.CustomerSegment),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerSegment\", UIControlsText.CustomerSegment), \r\n contolType: UIControlType.LabelValueView,\r\n styles: PageStyles.textFieldStylesFourColumn,\r\n value: customerDetail?.segment,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerIndustry',\r\n visible: isManagedCustomer(false) && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Industry\", UIControlsText.Industry), internalPricingContextState.pageMode, ApplicationConstants.otlePageName),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerIndustryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Industry\", UIControlsText.Industry),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Industry\", UIControlsText.Industry), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.industry,\r\n styles: PageStyles.textFieldStylesFourColumn\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerName',\r\n visible: isManagedCustomer(false) && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameEnglish\", UIControlsText.CustomerNameEnglish), internalPricingContextState.pageMode, ApplicationConstants.otlePageName),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerIndustryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameEnglish\", UIControlsText.CustomerNameEnglish),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameEnglish\", UIControlsText.CustomerNameEnglish), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.legalEntityName,\r\n styles: PageStyles.textFieldStylesOneColumn\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerName',\r\n visible: isManagedCustomer(false) && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameLocalLanguage\", UIControlsText.CustomerNameLocalLanguage), internalPricingContextState.pageMode, ApplicationConstants.otlePageName),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerIndustryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameLocalLanguage\", UIControlsText.CustomerNameLocalLanguage),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameLocalLanguage\", UIControlsText.CustomerNameLocalLanguage), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.organizationNameInLocalLanguage,\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerAddress',\r\n visible: isManagedCustomer(false) && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressFacetText\", UIControlsText.AddressFacetText), internalPricingContextState.pageMode, ApplicationConstants.otlePageName),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerAddressTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressFacetText\", UIControlsText.AddressFacetText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressFacetText\", UIControlsText.AddressFacetText), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.address,\r\n styles: PageStyles.textFieldStylesFourColumn,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerVertical',\r\n visible: isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Vertical\", UIControlsText.Vertical), internalPricingContextState.pageMode, ApplicationConstants.otlePageName),\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerVerticalTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Vertical\", UIControlsText.Vertical),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Vertical\", UIControlsText.Vertical), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.vertical,\r\n styles: PageStyles.textFieldStylesFourColumn,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerVerticalCategory',\r\n visible: isManagedCustomer(false) && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"VerticalCategory\", UIControlsText.VerticalCategory), internalPricingContextState.pageMode, ApplicationConstants.otlePageName),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerVerticalCategoryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"VerticalCategory\", UIControlsText.VerticalCategory),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"VerticalCategory\", UIControlsText.VerticalCategory), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.verticalCategory,\r\n styles: PageStyles.textFieldStylesFourColumn\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerWebPageURL',\r\n visible: isManagedCustomer(false) && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"WebPageUrl\", UIControlsText.WebPageUrl), internalPricingContextState.pageMode, ApplicationConstants.otlePageName),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerWebpageTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"WebPageUrl\", UIControlsText.WebPageUrl),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"WebPageUrl\", UIControlsText.WebPageUrl), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.webPageURL,\r\n styles: PageStyles.textFieldStylesFourColumn,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerEmailDomain',\r\n visible: isManagedCustomer(false) && isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailDomain\", UIControlsText.EmailDomain), internalPricingContextState.pageMode, ApplicationConstants.otlePageName),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerEmailDomainTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailDomain\", UIControlsText.EmailDomain),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailDomain\", UIControlsText.EmailDomain), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.emailDomain,\r\n styles: PageStyles.textFieldStylesFourColumn,\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]};\r\n return (\r\n <div>\r\n <Stack horizontal {...defaultColumnProps} styles={PageStyles.labelStyles}>\r\n <DocumentCardContainerComponent {...CustomerDetailsJson} />\r\n </Stack>\r\n </div>\r\n ); \r\n}","import { itemAlignmentsStackTokens, stackItemCustomerStyles, stackItemStyles } from '../../PricingProgramForm/PricingProgramFormUtils';\r\nimport { defaultColumnProps, _Styles } from '../../../../content/styles/Page.styles';\r\nimport { useInternalPricingContext } from '../../CPStrategic/context/internalpricing-context';\r\nimport { useEffect, useState } from 'react';\r\nimport { IGridProps } from \"../../../../components/shared/grid/IGridProps\";\r\nimport { getEntityDataFromSession, getURLParamValue, readGridConfig, getRuleValidationMessage } from '../../../../components/shared/common/util';\r\nimport { GridType } from '../../../../models/GridType';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { UIControlsText } from '../../../../content/UIControlsText';\r\nimport { IProductType } from '../../../../models/IProductType';\r\nimport { IProductFamily } from '../../../../models/IProductFamily';\r\nimport { IDealType } from '../../../../models/IDealType';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { ProductStructure } from '../../../../models/ProductStructure';\r\nimport { OpportunityDealStatusCodes } from '../../../../models/OpportunityDealStatusCodes';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport DocumentCardContainerComponent from '../../../shared/ComponentTypes/CustomTileCardContainer';\r\nimport { Stack } from 'office-ui-fabric-react/lib/components/Stack';\r\nimport { PageStyles } from '../../common/content/Page.Styles';\r\nimport { ApplicationConstants } from '../../../../models/ApplicationConstants';\r\nimport { DealType } from '../../../../models/DealType';\r\n\r\nexport function InternalPricingProductDetails() {\r\n const { internalPricingContextState } = useInternalPricingContext();\r\n const [internalPricingProductGridConfig, setinternalPricingProductGridConfig] = useState<IGridProps>(readGridConfig(GridType.InternalPricingProducts));\r\n const [productGroup, setProductGroup] = useState<string>(\"\");\r\n const [dealType, setDealType] = useState<string>(\"\");\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n useEffect(() => {\r\n // to read product information from context\r\n if (internalPricingContextState?.opportunityDeals[0]?.id) {\r\n var oppDeal = internalPricingContextState.opportunityDeals[0]; \r\n const dealTypes = getEntityDataFromSession<IDealType>(SessionStorageConsts.dealTypes);\r\n const dealTypeName = dealTypes.find(t => t.id === oppDeal.dealType?.id)?.name;\r\n var products = oppDeal.products;\r\n setDealType(dealTypeName || \"\"); \r\n let groupedbyPFAM = [\r\n ...new Map(\r\n products?.map((item: IProductFamily) => [item.productFamilyCode, item])\r\n ).values(),\r\n ];\r\n let Config = { ...internalPricingProductGridConfig };\r\n var data = groupedbyPFAM.filter(d => d.productStructure === ProductStructure.ProductFamily);\r\n if (oppDeal.statusCode === OpportunityDealStatusCodes.Draft) {\r\n data = groupedbyPFAM;\r\n }\r\n Config.kendoGridProps.data = data;\r\n setinternalPricingProductGridConfig({ ...Config }); \r\n \r\n // If OTLE deal type then show quantity column\r\n if(dealTypeName === DealType.OTLE){\r\n Config.kendoGridProps.columns.filter(x => x.key == ApplicationConstants.Quantity.toLowerCase()).forEach((item) => {\r\n item[\"isVisible\"] = true;\r\n });\r\n } \r\n\r\n let productTypes: IProductType[] = [];\r\n let productTypesInSession = sessionStorage.getItem(SessionStorageConsts.productTypes);\r\n if (productTypesInSession !== null && internalPricingContextState.productGroup) {\r\n productTypes = JSON.parse(productTypesInSession);\r\n let productTypeSelected : IProductType[] = productTypes.filter(product => product.productId == internalPricingContextState.productGroup);\r\n if (productTypeSelected) {\r\n setProductGroup(productTypeSelected[0].productName)\r\n }\r\n } \r\n }\r\n }, [internalPricingContextState.opportunityDeals[0].products])\r\n\r\n const ProductDetailsJson = {\r\n components: \r\n [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForProductDetails\",\r\n baseState: internalPricingContextState,\r\n name: 'Product Details',\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductVariantIConName\", UIControlsText.ProductVariantIConName),\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForProductsTable\",\r\n wrap: true,\r\n vertical: true,\r\n verticalAlign: \"start\", \r\n tokens: itemAlignmentsStackTokens,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'productgroupdetails',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'Col',\r\n visible: true,\r\n data: {\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n contolType: UIControlType.Label,\r\n id: \"CustomerCountryTextField\",\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductGroup\", UIControlsText.ProductGroup),\r\n value: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductGroup\", UIControlsText.ProductGroup).concat(\" \").concat(productGroup),\r\n className: 'productgroupStyle'\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'ProductDetails',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [ \r\n {\r\n type: 'Col',\r\n visible: true,\r\n data: {\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"NextGenKendoGrid\",\r\n data: {\r\n ...{\r\n kendoGridProps: { ...internalPricingProductGridConfig.kendoGridProps }\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]};\r\n return (\r\n <div>\r\n <Stack horizontal {...defaultColumnProps} styles={PageStyles.labelStyles}>\r\n <DocumentCardContainerComponent {...ProductDetailsJson} />\r\n </Stack>\r\n </div>\r\n ); \r\n}","import React, { useEffect } from 'react'\r\nimport { Prompt } from 'react-router-dom'\r\nimport { IRouteLeavingGuardProps } from '../props/IRouteLeavingGuardProps'\r\nimport { PageMode } from '../../../../models/PageMode'\r\n\r\nconst RouteLeavingGuard: React.FunctionComponent<IRouteLeavingGuardProps> = (props: IRouteLeavingGuardProps) => {\r\n useEffect(() => {\r\n if (!props.when || props.pageMode?.toLocaleLowerCase() !== PageMode.Create.toLocaleLowerCase()) return () => {}\r\n\r\n const beforeUnloadCallback = (event: any) => {\r\n event.preventDefault()\r\n event.returnValue = \"\"\r\n return \"\"\r\n }\r\n\r\n window.addEventListener('beforeunload', beforeUnloadCallback)\r\n return () => {\r\n window.removeEventListener('beforeunload', beforeUnloadCallback)\r\n }\r\n }, [props.when])\r\n\r\n return <Prompt when={props.when} \r\n message={() => {\r\n if (props.when) {\r\n return true\r\n } \r\n return \"\"\r\n }} />\r\n}\r\n\r\nexport default RouteLeavingGuard","/**\r\n * Enum for RfpType.\r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport enum RfpType {\r\n /**\r\n * Yes.\r\n */\r\n Yes = 1,\r\n\r\n /**\r\n * No.\r\n */\r\n No = 0\r\n}","import React from 'react';\r\nimport { CoherencePivot, CoherencePivotTabProps, PivotContent, PivotContentItem } from '@cseo/controls';\r\nimport InternalPricingDealOverview from './internalpricing-deal-overview';\r\nimport { PageProps } from '../../../../content/styles/Page.types';\r\nimport { JavaScriptExtensions } from '../../../../infrastructure/JavaScriptExtensions';\r\nimport { AffiliationType } from '../../../../models/AffiliationType';\r\nimport { PageStyles } from '../../common/content/Page.Styles';\r\nimport CPStrategicChannel from './cp-strategic-channel';\r\nimport { UIControlsText } from '../../../../content/UIControlsText';\r\nimport { useInternalPricingContext } from '../context/internalpricing-context';\r\nimport { CaseActionTypes } from '../../common/reducer/CaseActionTypes';\r\nimport InternalPricingCommands from './internalpricing-commands';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { useEffect, useState } from 'react';\r\nimport { IProductType } from '../../../../models/IProductType';\r\nimport { ICountry } from '../../../../models/ICountry';\r\nimport { IVertical } from '../../../../models/IVertical';\r\nimport { Breadcrumb, MessageBar, MessageBarType, PrimaryButton, Separator, Stack, nullRender } from '@fluentui/react';\r\nimport { ApplicationConstants } from '../../../../models/ApplicationConstants';\r\nimport { IFacetData } from '../../../../models/IFacetData';\r\nimport { getURLParamValue, getStatusNameByCode, isFieldVisible, isMSSeller, getLoggedinUserRoleDetails, getDistinctUserRole, downloadDatabyInputFormat, getUserRole, getUserSession, getRuleValidationMessage, getEntityDataFromSession, intializeSessionConstants, isNullOrEmpty } from '../../../../components/shared/common/util';\r\nimport { PageMode } from '../../../../models/PageMode';\r\nimport CPProductSearch from './internalpricing-product-search';\r\nimport ChannelContacts from '../../common/components/channel-contacts';\r\nimport { IUserRoleDetail } from '../../../../models/IUserRoleDetail';\r\nimport { nextGenService } from '../../../../services/NextGenService';\r\nimport { UserSubRole } from '../../../../models/UserSubRole';\r\nimport { ActionType } from '../../../../models/ActionType';\r\nimport { CssClassConstants } from '../../../../content/CssClassConstants';\r\nimport { DealType } from '../../../../models/DealType';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport InternalPricingLegalEntitiesSearchAndUpload from './internalpricing-legal-entities-merge';\r\nimport { useToHandleGlassFravcr as mdppAccessibilityOpenChannelTab } from '../../../../hooks/accessiblity-hooks';\r\nimport { OtleChannel } from './otle-channel';\r\nimport { ActionMenu } from '../../../../components/shared/action-menu/action-menu';\r\nimport { IActionMenuProps } from '../../../../components/shared/action-menu/IActionMenuProps';\r\nimport { ChannelSubType } from '../../../../models/ChannelSubType';\r\nimport { getSelectedDealDetails, showActionMenuHelper } from '../../PricingProgramForm/PricingProgramFormUtils';\r\nimport { enableActionMenu } from '../../../../components/shared/action-menu/actionMenuUtil';\r\nimport { OtleChannelView } from './otle-channel-view';\r\nimport { SuccessPage } from '../../PricingProgramForm/CreateForm/SuccessPage';\r\nimport { OtleCustomerView } from './otle-customer-view';\r\nimport { OpportunityDealStatusCodes } from \"../../../../models/OpportunityDealStatusCodes\";\r\nimport { InternalPricingProductDetails } from './internalpricing-product-details';\r\nimport { BreadCrumbStyles, separatorStyles } from '../../../../content/styles/Page.styles';\r\nimport { useLocation } from 'react-router-dom';\r\nimport RouteLeavingGuard from '../../common/components/RouteLeavingGuard';\r\nimport { PageConstants } from '../../../pageconstants/Constants';\r\n\r\ntype PivotOption = \"Deal Overview\" | \"Legal Entities\" | \"Channel\" | \"Deal Details\";\r\n\r\n/**\r\n * InternalPricing Case/Deal Page - For both CP Strategic and OTLE programs.\r\n * @function component\r\n */\r\n// intializeSessionConstants();\r\n\r\nconst InternalPricingCase: React.FunctionComponent<PageProps> = (props: PageProps) => {\r\n const location = useLocation();\r\n \r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [verticals, setVerticals] = useState<IVertical[]>([]);\r\n const [countries, setCountries] = useState<ICountry[]>([]);\r\n const [productTypes, setProductTypes] = useState<IProductType[]>([]);\r\n const [userRoles] = useState<string>(getUserRole());\r\n const [showSuccessPage, setShowSuccessPage] = useState<boolean>(false);\r\n const [isSaveDraftButtonClicked, setIsSaveDraftButtonClicked] = useState(false);\r\n const [oppNumber, setOppNumber] = React.useState<string>(\"\");\r\n const [dirty, setDirty] = useState<boolean>(false);\r\n const { internalPricingContextState, internalPricingContextDispatch } = useInternalPricingContext();\r\n const dealType = internalPricingContextState && internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals.length && internalPricingContextState.opportunityDeals[0].dealType?.name?.toLocaleLowerCase() || \"\";\r\n\r\n const saveDraftClickHandler = (state: boolean) => {\r\n setIsSaveDraftButtonClicked(state)\r\n };\r\n\r\n const successPageHandler = (state: boolean) => {\r\n setShowSuccessPage(state)\r\n setDirty(false)\r\n };\r\n\r\n const setOpportunityNumber = (oppNumber: string) => {\r\n setOppNumber(oppNumber)\r\n };\r\n\r\n const getProductTypes = (): IProductType[] => {\r\n let productTypes: IProductType[] = [];\r\n let productTypesInSession = sessionStorage.getItem(SessionStorageConsts.productTypes);\r\n if (productTypesInSession !== null) {\r\n productTypes = JSON.parse(productTypesInSession);\r\n }\r\n\r\n return productTypes;\r\n }\r\n\r\n const getCountries = (): ICountry[] => {\r\n let countries: ICountry[] = [];\r\n let countriesInSession = sessionStorage.getItem(SessionStorageConsts.countries);\r\n if (countriesInSession !== null) {\r\n countries = JSON.parse(countriesInSession);\r\n }\r\n\r\n return countries;\r\n }\r\n\r\n const getVerticals = (): IVertical[] => {\r\n let verticals: IVertical[] = [];\r\n let verticalsInSession = sessionStorage.getItem(SessionStorageConsts.verticals);\r\n if (verticalsInSession !== null) {\r\n verticals = JSON.parse(verticalsInSession);\r\n }\r\n\r\n return verticals;\r\n }\r\n\r\n const [isFieldMissing, setIsFieldMissing] = useState(false);\r\n const [panes] = useState<Array<any>>([\r\n { size: \"15%\", collapsible: true, resizable: true, collapsed: true },\r\n {}\r\n ]);\r\n\r\n /**\r\n * callback handler for Pivot change action.\r\n * @function\r\n */\r\n const onPivotChange = (item: CoherencePivotTabProps) => {\r\n if (item.key) {\r\n internalPricingContextDispatch({ type: CaseActionTypes.casePivotChanged, selectedPivot: item.key });\r\n }\r\n };\r\n\r\n /**\r\n * Using Derived state checks if Pivot buttons is diabled.\r\n * @function\r\n * @returns {boolen}\r\n */\r\n const areCommandButtonsDisabled = (): boolean | undefined => {\r\n let isCommandButtonDisabled : boolean | undefined;\r\n switch (dealType) {\r\n case \"cp strategic\":\r\n isCommandButtonDisabled = !internalPricingContextState\r\n || !internalPricingContextState.opportunityDeals\r\n || internalPricingContextState.opportunityDeals.length === 0\r\n || JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.productGroup)\r\n || JavaScriptExtensions.isNullOrUndfinedOrEmpty(internalPricingContextState.isMultiNational)\r\n || !internalPricingContextState.opportunityDeals[0].geoCountries\r\n || internalPricingContextState.opportunityDeals[0].geoCountries.length === 0\r\n || (internalPricingContextState.isMultiNational === true && internalPricingContextState.opportunityDeals[0].geoCountries.length <= 1)\r\n || JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0].dealName)\r\n || JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0].dealOverview)\r\n || JavaScriptExtensions.isNullOrUndfinedOrEmpty(internalPricingContextState.opportunityDeals[0].expirationDate)\r\n || JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0].expirationDateJustification)\r\n || JavaScriptExtensions.isNullOrUndfinedOrEmpty(internalPricingContextState.opportunityDeals[0].affiliationType)\r\n || internalPricingContextState.opportunityDeals[0].dealContacts && internalPricingContextState.opportunityDeals[0].dealContacts?.length > 0 && internalPricingContextState.opportunityDeals[0].dealContacts?.filter(con => con.action !== ActionType.Delete).filter(con => !con.isComplete).length > 0\r\n || (internalPricingContextState.opportunityDeals[0].affiliationType === AffiliationType.Others\r\n && JavaScriptExtensions.isEmptyOrNullOrUndefined(internalPricingContextState.opportunityDeals[0].affiliationTypeOthers));\r\n break;\r\n\r\n case \"otle\":\r\n isCommandButtonDisabled = !internalPricingContextState\r\n || !internalPricingContextState.opportunityDeals\r\n || internalPricingContextState.opportunityDeals.length === 0\r\n || !internalPricingContextState.productGroup\r\n || !internalPricingContextState.opportunityDeals[0].geoCountries\r\n || internalPricingContextState.opportunityDeals[0].geoCountries.length === 0\r\n || !internalPricingContextState.opportunityDeals[0].dealName\r\n || !(internalPricingContextState.opportunityDeals[0].dealOverview)\r\n || !(internalPricingContextState.opportunityDeals[0].dealVertical)\r\n || (internalPricingContextState?.opportunityDeals[0]?.dealVolume == 0)\r\n || Number(internalPricingContextState.opportunityDeals[0]?.dealVolume) < Number(sessionStorage.getItem(SessionStorageConsts.dealQuantityThresholdConfigs))\r\n || !(internalPricingContextState.opportunityDeals[0].expirationDate)\r\n || (internalPricingContextState.opportunityDeals[0]?.dealContacts != null) && internalPricingContextState.opportunityDeals[0].dealContacts && internalPricingContextState.opportunityDeals[0].dealContacts?.length > 0 && internalPricingContextState.opportunityDeals[0].dealContacts?.filter(con => con.action !== ActionType.Delete).filter(con => !con.isComplete).length > 0\r\n || (!internalPricingContextState?.attachments || (internalPricingContextState?.attachments && (internalPricingContextState?.attachments?.length <= 0 || internalPricingContextState?.attachments?.filter(att => att?.source == UIControlsText.ProofOfPreference)?.length <= 0)))\r\n ;\r\n break;\r\n }\r\n return isCommandButtonDisabled;\r\n }\r\n\r\n /**\r\n * Get tab style.\r\n * @function\r\n */\r\n const getTabStyle = (tabName: string) => {\r\n return areCommandButtonsDisabled() ? PageStyles.disabledTabs : (internalPricingContextState.missingTabs?.find(tab => tab == tabName) != null? PageStyles.missingFieldTabs : {});\r\n }\r\n\r\n useEffect(() => {\r\n if (internalPricingContextState.missingTabs && internalPricingContextState.missingTabs.length > 0) {\r\n setIsFieldMissing(true);\r\n }\r\n else {\r\n setIsFieldMissing(false);\r\n }\r\n }, [internalPricingContextState.missingTabs])\r\n\r\n useEffect(() => {\r\n if (location && isNullOrEmpty(location.search)) {\r\n setDirty(true)\r\n }\r\n }, [location])\r\n\r\n const facetList = (facetNames: string[]): string[] => {\r\n let facetCount = ApplicationConstants.FacetCount;\r\n let facetString: string[] = [];\r\n\r\n for (let i = 0; i < facetNames.length; i++) {\r\n facetString.push(facetNames[i] + \",count:\" + facetCount);\r\n }\r\n\r\n return facetString;\r\n }\r\n\r\n const createFilterExpression = (facetNames: string[], facetName: string, selectedValue: any[], allSelectedFacets: any[]): string => {\r\n let filterStringExpression = \"\";\r\n for (var i = 0; i < facetNames.length; i++) {\r\n if (facetNames[i] !== facetName) {\r\n if (allSelectedFacets[i].length > 0) {\r\n filterStringExpression = filterStringExpression + \"(\" + allSelectedFacets[i].map((item: IFacetData) => {\r\n if (item.value.indexOf(\"'\") > -1) {\r\n return \" \" + facetNames[i] + \" eq '\" + item.value.replace(/'/g, \"''\") + \"' \"\r\n }\r\n else {\r\n return \" \" + facetNames[i] + \" eq '\" + item.value + \"' \"\r\n }\r\n }).join(\" or \") + \") and \";\r\n }\r\n }\r\n else {\r\n if (selectedValue.length > 0) {\r\n filterStringExpression = filterStringExpression + \"(\" + selectedValue.map(item => {\r\n if (item.value.indexOf(\"'\") > -1) {\r\n return \" \" + facetNames[i] + \" eq '\" + item.value.replace(/'/g, \"''\") + \"' \"\r\n }\r\n else {\r\n return \" \" + facetName + \" eq '\" + item.value + \"' \"\r\n }\r\n }).join(\" or \") + \") and \";\r\n }\r\n }\r\n }\r\n\r\n return filterStringExpression;\r\n\r\n }\r\n\r\n const createGlobalFilterExpression = (filterNames: string[], filterValues: any[], euFilter: boolean): string => {\r\n let filterStringExpression = \"\";\r\n for (let i = 0; i < filterValues.length; i++) {\r\n if (filterValues[i].length > 0) {\r\n if (euFilter && filterNames[i] === ApplicationConstants.CustomerSearchCountryGlobalIndex) {\r\n filterStringExpression = filterStringExpression + \"(\" + ApplicationConstants.CustomerSearchCascadeCountryGlobalIndex + \" eq 'EU' or \" + filterValues[i].map((item: string) => \" \" + filterNames[i] + \" eq '\" + item + \"' \").join(\" or \") + \") and \";\r\n }\r\n else {\r\n filterStringExpression = filterStringExpression + \"(\" + filterValues[i].map((item: string) => \" \" + filterNames[i] + \" eq '\" + item + \"' \").join(\" or \") + \") and \";\r\n }\r\n }\r\n else if (euFilter) {\r\n filterStringExpression = filterStringExpression + \"(\" + ApplicationConstants.CustomerSearchCascadeCountryGlobalIndex + \" eq 'EU') and \";\r\n }\r\n\r\n }\r\n\r\n return filterStringExpression;\r\n }\r\n\r\n //Gets channel contacts tab visibility flag.\r\n const isChannelContactTabVisible = (dealType: string): boolean => {\r\n return (isFieldVisible(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts), internalPricingContextState.pageMode, ApplicationConstants.CPstrategicPageName) || isMSSeller()) && dealType === DealType.CPStrategic.toLocaleLowerCase();\r\n }\r\n\r\n const [disableDownloadButton, setDisableDownloadButton] = useState(false)\r\n const [hideDownLoadButton, setHideDownLoadButton] = useState(true)\r\n const [hideChannel, setHideChannel] = useState(false)\r\n const [actionMenuConfig, setActionMenuConfig] = React.useState<IActionMenuProps>();\r\n\r\n useEffect(() => {\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n var countries = userRoleDetails.filter(country => country.countryId && country.countryId !== null && country.countryId !== \"\").map(function (userRoleDetail) { return userRoleDetail.countryId }).join(',');\r\n var accounts = userRoleDetails.filter(accounts => accounts.accountId && accounts.accountId !== null && accounts.accountId !== \"\").map(function (userRoleDetail) { return userRoleDetail.accountId }).join(',');\r\n var userRole = getUserRole();\r\n var userSubRole = userRole.split(\",\");\r\n if (userSubRole.includes(UserSubRole.MSStoreUser)) {\r\n setHideDownLoadButton(false)\r\n setHideChannel(true)\r\n }\r\n else if ((userSubRole[0] === UserSubRole.ADD || userSubRole[0] === UserSubRole.ADR || userSubRole[0] === UserSubRole.DMP) && countries !== \"\" && accounts !== \"\") {\r\n setHideDownLoadButton(false)\r\n }\r\n else {\r\n setHideDownLoadButton(true)\r\n }\r\n setVerticals(getVerticals());\r\n setCountries(getCountries());\r\n setProductTypes(getProductTypes());\r\n }, [internalPricingContextState.id]);\r\n\r\n useEffect(() => {\r\n if (internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() || internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()) {\r\n if (internalPricingContextState.opportunityDeals && internalPricingContextState.opportunityDeals.length > 0) {\r\n var oppDeal = internalPricingContextState.opportunityDeals[0];\r\n if (oppDeal) {\r\n const oppDealdetails = showActionMenuHelper(internalPricingContextState, oppDeal);\r\n const actionMenuConfig = enableActionMenu(oppDealdetails);\r\n actionMenuConfig.showCPStrategicLetters = false // hiding manufacturers confirmation letter action when viewing DR/SP case\r\n setActionMenuConfig({ actionConfig: actionMenuConfig, selectedData: getSelectedDealDetails(oppDealdetails, oppDeal)});\r\n }\r\n }\r\n }\r\n }, [internalPricingContextState.id, internalPricingContextState.pageMode]);\r\n\r\n //Temporarily Commented to check performance issue \r\n\r\n //accessibility - add for attribute to each label not associated with an input/text element.\r\n useEffect(() => {\r\n let comboBoxes = document.querySelectorAll(\"div[role='combobox']\");\r\n comboBoxes.forEach(comboBox => {\r\n let label = document.querySelector(\"#\" + comboBox.id + \"-label\");\r\n label && label.setAttribute(\"for\", comboBox.id);\r\n });\r\n\r\n //accessibility - screen reader callout deal country as disabled/unavailable when all other fields are disabled\r\n var formElements = document.querySelectorAll('.ms-Stack ~ .ms-Stack .ms-Dropdown , .ms-Stack ~ .ms-Stack .ms-TextField');\r\n var dropDown = document.querySelector('#' + CssClassConstants.DealCountryDropdownId);\r\n var filteredFormElements = Array.from(formElements).filter(formElement => formElement.id !== CssClassConstants.DealCountryDropdownId);\r\n\r\n if (filteredFormElements.every(formElement => formElement.classList.contains(\"is-disabled\"))) {\r\n dropDown?.setAttribute(\"aria-disabled\", \"true\");\r\n dropDown?.removeAttribute(\"aria-required\");\r\n }\r\n });\r\n\r\n //Temporarily Commented to check performance issue \r\n useEffect(() => {\r\n //Fixing Accessibility for sortIcons\r\n var sortIcons = document.querySelectorAll(\"span[aria-label='Sortable']\");\r\n sortIcons.forEach((element) => {\r\n element.setAttribute(\"role\", \"button\");\r\n });\r\n\r\n //Fixing Accessibility for GridPagerBtns & gridFootercell\r\n var pagerBtns = document.getElementsByClassName(\"k-icon\");\r\n for (let i = 0; i < pagerBtns.length; i++) {\r\n pagerBtns[i].setAttribute(\"aria-hidden\", \"true\");\r\n }\r\n document.querySelector(\"[role='columnfooter']\")?.setAttribute('role', 'gridcell');\r\n\r\n //Fixing Accessibility issue for grid filterTextbox\r\n /*var filterTextbox = document.querySelectorAll(\".k-filtercell .k-filtercell-wrapper > .k-textbox\");\r\n const currentColumns = props.kendoGridProps.columns.filter(col => col.isVisible === true);\r\n filterTextbox.forEach(c => {\r\n for (let i = 0; i < filterTextbox.length; i++) {\r\n if (currentColumns[i]) {\r\n filterTextbox[i].setAttribute('aria-label', `${ currentColumns[i].columnTitle }`);\r\n }\r\n }\r\n });*/\r\n\r\n //Fixing Accessibility issue for grid checkbox\r\n var gridCheckbox = document.getElementsByClassName(\"k-checkbox\");\r\n for (let i = 0; i < gridCheckbox.length; i++) {\r\n gridCheckbox[i].setAttribute('aria-label', 'checkbox');\r\n }\r\n\r\n //fixing Accessibility issue when no rows selected in grid\r\n var gridRows = document.getElementsByClassName(\"k-grid-norecords\");\r\n for (let i = 0; i < gridRows.length; i++) {\r\n gridRows[i].removeAttribute('aria-rowindex');\r\n gridRows[i].setAttribute('role', 'alert');\r\n }\r\n\r\n //fixing Accessibility issue when no rows selected in grid\r\n var gridRow = document.querySelectorAll('[role=\"row\"]');\r\n for (let i = 0; i < gridRow.length; i++) {\r\n gridRow[i].removeAttribute('aria-rowindex');\r\n }\r\n\r\n // Fix for accessibility issue - No label text found for input elements\r\n var filesTxt = document.querySelectorAll('input[type=\"file\"]');\r\n for (let i = 0; i < filesTxt.length; i++) {\r\n filesTxt[i].setAttribute('aria-label', 'files');\r\n }\r\n\r\n // Accessibility fix for \"nested-interactive controls\"\r\n var selectFilesButtonContainers = document.querySelectorAll('div[aria-label=\"Select files...\"]');\r\n selectFilesButtonContainers.forEach((node) => {\r\n if (node.getAttribute(\"role\") === \"button\") {\r\n node.removeAttribute(\"role\");\r\n }\r\n });\r\n\r\n var gridCellInputs = document.querySelectorAll('[role=\"gridcell\"] > input');\r\n gridCellInputs.forEach(gridCellInput => {\r\n gridCellInput && (gridCellInput.className === 'k-textbox' || gridCellInput.className === 'k-input k-formatted-value') && gridCellInput.setAttribute('aria-label', \"grid cell textbox\");\r\n });\r\n\r\n var klinkSpans = document.querySelectorAll('span.k-link');\r\n klinkSpans.forEach(klinkSpan => {\r\n klinkSpan && klinkSpan.getAttribute('aria-label') && klinkSpan.removeAttribute('aria-label');\r\n });\r\n });\r\n\r\n var mddppAccessibilityPivot = mdppAccessibilityOpenChannelTab();\r\n var mdppAccessibilityPivotHandler = (): string => {\r\n if (mddppAccessibilityPivot) {\r\n return mddppAccessibilityPivot as PivotOption;\r\n }\r\n return internalPricingContextState.selectedPivot as PivotOption;\r\n }\r\n\r\n return (\r\n <>\r\n <RouteLeavingGuard when={dirty} pageMode={internalPricingContextState.pageMode?.toLocaleLowerCase() || \"\"} />\r\n { showSuccessPage && \r\n <SuccessPage { ...{\"id\": \"SuccessPage\", \"caseNumber\": oppNumber, \"isSavingDraft\": isSaveDraftButtonClicked, \"opportunityId\": internalPricingContextState.id, \"navigateTo\": dealType === DealType.CPStrategic.toLocaleLowerCase() ? \"/managecase/cpstrategic\" : \"/managecase/otle\", \"dealType\": dealType} } /> }\r\n { !showSuccessPage && \r\n <div className=\"headerStyle\" id=\"parentDiv\" data-nextgen-parent-group=\"nextgen-tabs\" data-nextgen-parentid=\"nextgen-tabs\">\r\n {\r\n (internalPricingContextState.pageMode?.toLocaleLowerCase() === PageMode.Edit.toLocaleLowerCase() || internalPricingContextState.pageMode?.toLocaleLowerCase() === PageMode.View.toLocaleLowerCase()) &&\r\n <ActionMenu {...actionMenuConfig}/>\r\n }\r\n {(internalPricingContextState.saveDraft || internalPricingContextState.submitCase || internalPricingContextState.submitCaseAsync) &&\r\n <div className=\"overlay\">\r\n </div>\r\n }\r\n {isFieldMissing && (\r\n <Stack style={PageStyles.ErrorMessageStyles}>\r\n {internalPricingContextState.pageMode?.toLowerCase() !== PageMode.View.toLowerCase() &&\r\n <MessageBar\r\n messageBarType={MessageBarType.error}\r\n isMultiline={true}\r\n onDismiss={() => setIsFieldMissing(false)}\r\n dismissButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}>\r\n {internalPricingContextState.errors && internalPricingContextState.errors.length ?\r\n internalPricingContextState.errors.join('\\n')\r\n : getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredFieldMissing\", UIControlsText.RequiredFieldMissing)}\r\n </MessageBar>\r\n }\r\n </Stack>\r\n )}\r\n {(internalPricingContextState.pageMode?.toLowerCase() === PageMode.Create.toLowerCase()) &&\r\n <Stack>\r\n <Breadcrumb id={\"BreadcrumbNewCase\"} styles={BreadCrumbStyles} \r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseSubmissionText\", UIControlsText.CaseSubmissionText)} \r\n items={[\r\n { text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"HomeText\", UIControlsText.HomeText), key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"HomeText\", UIControlsText.HomeText), href: \"/homepage\" },\r\n { text: dealType == DealType.OTLE.toLocaleLowerCase() ? UIControlsText.OTLENewCaseSubmission : UIControlsText.CPNewCaseSubmission, key: \"NCS\", href: (dealType == DealType.OTLE.toLocaleLowerCase() ? \"/managecase/otle\" : \"/managecase/cpstrategic\")}\r\n ]}>\r\n </Breadcrumb>\r\n <Separator id={\"SeparatorId\"} styles={separatorStyles}> \r\n </Separator>\r\n </Stack>\r\n }\r\n {(internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() || internalPricingContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) &&\r\n <Stack>\r\n <div>\r\n <div className=\"caseIdStyle\">\r\n <h1>\r\n {JavaScriptExtensions.stringFormat(\"{0}{1}{2}{3}{4}\", getURLParamValue(ApplicationConstants.OpportunityNumberParamName), \" | \", (internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()? UIControlsText.ViewCaseText : UIControlsText.EditCaseText) , \" | \", dealType === DealType.CPStrategic.toLocaleLowerCase()? ApplicationConstants.CPStrategic : ApplicationConstants.OTLECases)}\r\n </h1>\r\n </div>\r\n <div className=\"caseStatusStyle\">\r\n <span>\r\n {JavaScriptExtensions.stringFormat(\"{0}{1}{2}\", \"Status\", \" - \", getStatusNameByCode(internalPricingContextState.opportunityDeals[0].statusCode))}\r\n </span>\r\n </div>\r\n </div>\r\n </Stack>\r\n }\r\n <CoherencePivot className=\"tabListStyle\"\r\n onTabSelected={onPivotChange}\r\n useGrayPivot={true}\r\n selectedKey={mdppAccessibilityPivotHandler()}\r\n tabs={[\r\n {\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n headerButtonProps: { \r\n style: getTabStyle(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText)),\r\n \"data-nextgen-id\": getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText) \r\n }\r\n },\r\n {\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntitiesText\", UIControlsText.LegalEntitiesText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntitiesText\", UIControlsText.LegalEntitiesText),\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntitiesText\", UIControlsText.LegalEntitiesText),\r\n headerButtonProps: {\r\n ...{\r\n disabled: areCommandButtonsDisabled(),\r\n style: getTabStyle(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntitiesText\", UIControlsText.LegalEntitiesText)),\r\n \"data-nextgen-id\": getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntitiesText\", UIControlsText.LegalEntitiesText)\r\n }\r\n }\r\n },\r\n {\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText),\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText),\r\n headerButtonProps: {\r\n ...{\r\n disabled: areCommandButtonsDisabled(),\r\n style: getTabStyle(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)),\r\n hidden: hideChannel,\r\n \"data-nextgen-id\": getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)\r\n }\r\n }\r\n },\r\n {\r\n name: internalPricingContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase() ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PricingAndDiscountsText\", UIControlsText.PricingAndDiscountsText): getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSelection\", UIControlsText.ProductSelection),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSelection\", UIControlsText.ProductSelection),\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSelection\", UIControlsText.ProductSelection),\r\n headerButtonProps: {\r\n ...{\r\n disabled: areCommandButtonsDisabled(),\r\n style: getTabStyle(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSelection\", UIControlsText.ProductSelection)),\r\n \"data-nextgen-id\": getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSelection\", UIControlsText.ProductSelection)\r\n }\r\n }\r\n },\r\n {\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts),\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts),\r\n headerButtonProps: {\r\n ...{\r\n disabled: areCommandButtonsDisabled(),\r\n style: getTabStyle(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts)),\r\n hidden: !isChannelContactTabVisible(dealType),\r\n \"data-nextgen-id\": getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts)\r\n }\r\n }\r\n },\r\n ]}\r\n />\r\n <PivotContent selectedKey={mdppAccessibilityPivotHandler()}>\r\n <PivotContentItem itemKey={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText)}>\r\n <InternalPricingDealOverview {... { countries: countries, productTypes: productTypes, verticals: verticals, internalPricingDealType: dealType }\r\n } />\r\n </PivotContentItem>\r\n </PivotContent>\r\n <PivotContent selectedKey={mdppAccessibilityPivotHandler()}>\r\n <PivotContentItem itemKey={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LegalEntitiesText\", UIControlsText.LegalEntitiesText)}>\r\n {\r\n (internalPricingContextState.pageMode === PageMode.View || internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.Approved\r\n || internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.Incomplete || internalPricingContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview) && dealType === DealType.OTLE.toLocaleLowerCase()\r\n && <OtleCustomerView />\r\n }\r\n {\r\n internalPricingContextState.pageMode !== PageMode.View && internalPricingContextState.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.Approved \r\n && internalPricingContextState.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.Incomplete && internalPricingContextState.opportunityDeals[0]?.statusCode !== OpportunityDealStatusCodes.PendingSecondaryReview && dealType === DealType.OTLE.toLocaleLowerCase()\r\n && <InternalPricingLegalEntitiesSearchAndUpload\r\n {\r\n ...{\r\n facetList,\r\n createFilterExpression,\r\n createGlobalFilterExpression,\r\n splitterConfig: panes\r\n }\r\n }\r\n />\r\n }\r\n {\r\n dealType === DealType.CPStrategic.toLocaleLowerCase()\r\n && <InternalPricingLegalEntitiesSearchAndUpload\r\n {\r\n ...{\r\n facetList,\r\n createFilterExpression,\r\n createGlobalFilterExpression,\r\n splitterConfig: panes\r\n }\r\n }\r\n />\r\n } \r\n </PivotContentItem>\r\n </PivotContent>\r\n <PivotContent selectedKey={mdppAccessibilityPivotHandler()}>\r\n <PivotContentItem itemKey={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)}>\r\n {\r\n internalPricingContextState.pageMode === PageMode.View && dealType === DealType.OTLE.toLocaleLowerCase()\r\n && <OtleChannelView />\r\n }\r\n {\r\n internalPricingContextState.pageMode !== PageMode.View && dealType === DealType.OTLE.toLocaleLowerCase()\r\n && <OtleChannel {... { countries: countries, productTypes: productTypes }} />\r\n }\r\n {\r\n dealType === DealType.CPStrategic.toLocaleLowerCase()\r\n && <CPStrategicChannel {... { countries: countries, productTypes: productTypes }} />\r\n }\r\n </PivotContentItem>\r\n </PivotContent>\r\n <PivotContent selectedKey={mdppAccessibilityPivotHandler()}>\r\n <PivotContentItem itemKey={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSelection\", UIControlsText.ProductSelection)}>\r\n {\r\n internalPricingContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Draft && internalPricingContextState.pageMode === PageMode.View ? <InternalPricingProductDetails /> : \r\n <CPProductSearch\r\n {\r\n ...{\r\n verticals,\r\n facetProps: {\r\n facetList,\r\n createFilterExpression,\r\n createGlobalFilterExpression,\r\n splitterConfig: panes\r\n }\r\n }\r\n }\r\n />\r\n } \r\n </PivotContentItem>\r\n </PivotContent>\r\n {isChannelContactTabVisible(dealType) &&\r\n <PivotContent selectedKey={mdppAccessibilityPivotHandler()}>\r\n <PivotContentItem itemKey={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts)}>\r\n <ChannelContacts {... { countries: getCountries(), productTypes: getProductTypes(), pageContext: internalPricingContextState, pageDispatch: internalPricingContextDispatch }} />\r\n </PivotContentItem>\r\n </PivotContent>\r\n }\r\n <InternalPricingCommands {...{ areCommandButtonsDisabled, saveDraftClickHandler, successPageHandler, setOpportunityNumber, dealType }} />\r\n <div id=\"footerPadding\"></div>\r\n </div> }\r\n </>\r\n\r\n );\r\n}\r\n\r\nexport default InternalPricingCase;","import { FC } from 'react';\r\nimport { IStackTokens, Stack } from '@fluentui/react/lib/Stack';\r\nimport { Dropdown } from '@fluentui/react/lib/Dropdown';\r\nimport { dropdownStyles } from '../../../content/styles/Page.styles';\r\nimport { ICaseDropdownControlProps } from '../props/ICaseDropdownControlProps';\r\nimport { UIControlsText } from '../../../content/UIControlsText';\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"../../../components/shared/common/util\";\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings)\r\n\r\nconst stackTokens: IStackTokens = { childrenGap: 5 };\r\n\r\nexport const CaseDropdown: FC<ICaseDropdownControlProps> = (props: ICaseDropdownControlProps) => {\r\n return (\r\n <Stack tokens={stackTokens}>\r\n <Dropdown\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"CasesDropdownPlaceHolderText\", UIControlsText.CasesDropdownPlaceHolderText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DashboardView\", UIControlsText.DashboardView)}\r\n options={props.options}\r\n styles={dropdownStyles}\r\n onChange={props.onChange}\r\n disabled={props.disabled}\r\n defaultSelectedKey={props.defaultSelectedKey}\r\n />\r\n </Stack>\r\n );\r\n};","import { FC, useEffect, useState } from 'react';\r\nimport { Breadcrumb, IBreadcrumbItem } from '@fluentui/react/lib/Breadcrumb';\r\nimport { useHistory } from 'react-router';\r\nimport { IBreadCrumbProps } from '../props/IBreadCrumbProps';\r\nimport BreadCrumbData from './breadcrumb.config.json'\r\nimport { BreadCrumbStyles } from '../../../content/styles/Page.styles';\r\nimport { UIControlsText } from '../../../content/UIControlsText';\r\nimport React from 'react';\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\nimport { getEntityDataFromSession, getRuleValidationMessage } from '../common/util';\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\n\r\nexport const Breadcrumbs: FC<IBreadCrumbProps> = (props: IBreadCrumbProps) => {\r\n const [items, setItems] = useState<IBreadcrumbItem[]>([])\r\n const history = useHistory();\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n useEffect(() => {\r\n setItems([])\r\n props.items.map((item: { text: string; key: string; }, index: number) => setItems((prevState: IBreadcrumbItem[]) => [...prevState, { text: item.text, key: item.key, onClick: onBreadcrumbItemClicked }]))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props])\r\n\r\n function onBreadcrumbItemClicked(ev?: React.MouseEvent<HTMLElement>, item?: IBreadcrumbItem): void {\r\n // eslint-disable-next-line array-callback-return\r\n Object.keys(BreadCrumbData.routing).map((key, index) => {\r\n if (key === item?.key) {\r\n history.push((BreadCrumbData.routing as any)[item?.key]);\r\n }\r\n })\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Breadcrumb\r\n items={items}\r\n maxDisplayedItems={10}\r\n ariaLabel={ getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BreadcrumbAriaLabelText\", UIControlsText.BreadcrumbAriaLabelText)}\r\n overflowAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BreadcrumbAriaLabelText\", UIControlsText.BreadcrumbAriaLabelText)}\r\n styles={BreadCrumbStyles}\r\n />\r\n </React.Fragment>\r\n );\r\n};","import { Fragment, FormEvent, useState, useEffect, FC, useCallback } from \"react\";\r\nimport { IDropdownOption } from \"@fluentui/react/lib/Dropdown\";\r\nimport { IBreadcrumbItem } from '@fluentui/react/lib/Breadcrumb';\r\nimport { CaseDropdown } from \"../../components/shared/searchablecombobox/casedropdowncontrol\";\r\nimport { DashboardViewTypesValues, DashboardViewTypesValuesForMSSeller } from \"../../services/StaticData\";\r\nimport { Breadcrumbs } from \"../../components/shared/breadcrumb/breadcrumb\";\r\nimport { DashboardHeaderStyle, pageTitleStyles, separatorStyles, _Styles } from \"../../content/styles/Page.styles\";\r\n\r\nimport { getUserMainRole } from \"../../components/shared/common/util\";\r\nimport { Separator } from \"@fluentui/react/lib/Separator\";\r\nimport Row from \"react-bootstrap/esm/Row\";\r\nimport { UserRole } from \"../../models/UserRole\";\r\nimport { ApplicationConstants } from \"../../models/ApplicationConstants\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nconst items: IBreadcrumbItem[] = [\r\n {\r\n text: 'Home', key: 'home'\r\n },\r\n {\r\n text: 'Dashboard', key: 'dashboard'\r\n },\r\n]\r\n\r\nexport const CaseManagement: FC = () => {\r\n const [breadcrumbItems, setBreadcrumbItems] = useState<any>(items);\r\n const [userMainRole] = useState<string>(getUserMainRole());\r\n const [selectedKey, setSelectedKey] = useState<number>();\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n const item: IDropdownOption<any> = {\r\n key: \"\",\r\n text: \"\"\r\n }\r\n\r\n if(window.location.href.endsWith(ApplicationConstants.OTLERoute)) {\r\n item.title = ApplicationConstants.OTLERoute;\r\n item.text = ApplicationConstants.OTLECases;\r\n setSelectedKey(6);\r\n } else if (userMainRole !== UserRole.MSSeller && window.location.href.endsWith(ApplicationConstants.SpecialPricingRoute)) {\r\n item.title = ApplicationConstants.SpecialPricingRoute\r\n item.text = `${ApplicationConstants.SpecialPricing} ${ApplicationConstants.Cases}`\r\n setSelectedKey(2);\r\n } else if (userMainRole !== UserRole.MSSeller && window.location.href.endsWith(ApplicationConstants.DealRegistrationRoute)) {\r\n item.title = ApplicationConstants.DealRegistrationRoute;\r\n item.text = `${ApplicationConstants.DealRegistration} ${ApplicationConstants.Cases}`\r\n setSelectedKey(3);\r\n } else if (window.location.href.endsWith(ApplicationConstants.CPStrategicRoute)) {\r\n item.title = ApplicationConstants.CPStrategicRoute\r\n setSelectedKey(4);\r\n item.text = ApplicationConstants.CPStrategicCases;\r\n } else if (userMainRole !== UserRole.MSSeller && window.location.href.endsWith(ApplicationConstants.SPLocalEmpowerment)) {\r\n item.title = ApplicationConstants.SPLocalEmpowerment\r\n setSelectedKey(5);\r\n item.text = ApplicationConstants.SPLocalEmpowermentCases;\r\n } else {\r\n item.title = ApplicationConstants.AllCasesRoute\r\n setSelectedKey(1);\r\n item.text = ApplicationConstants.AllCases\r\n }\r\n onChangeHandler(undefined, item);\r\n }, [])\r\n\r\n function onChangeHandler(event?: FormEvent<HTMLDivElement>, item?: IDropdownOption<any>) {\r\n const route = item?.title!\r\n history.push(route)\r\n setBreadcrumbItems([...items, { text: item?.text, key: item?.title }]);\r\n };\r\n\r\n return (\r\n <Fragment>\r\n <div className=\"headerStyle\">\r\n <Row>\r\n <Breadcrumbs items={breadcrumbItems} />\r\n </Row>\r\n <Separator styles={separatorStyles} />\r\n <Row>\r\n <div className=\"d-flex align-items-center justify-content-between\">\r\n <div className=\"d-flex\">\r\n <h1 className=\"header\" style={DashboardHeaderStyle}>Dashboard</h1> <span style={pageTitleStyles}> | </span> {selectedKey && <CaseDropdown options={userMainRole === UserRole.MSSeller ? DashboardViewTypesValuesForMSSeller : DashboardViewTypesValues} onChange={onChangeHandler} disabled={false} defaultSelectedKey={selectedKey} />}\r\n </div>\r\n </div>\r\n </Row>\r\n <div style={pageTitleStyles.dashboardTitle}></div>\r\n </div>\r\n </Fragment>\r\n );\r\n};\r\n","import { useEffect, useState } from \"react\";\r\nimport { getUserRole, getRuleValidationMessage, getEntityDataFromSession } from \"../../components/shared/common/util\";\r\nimport { HelpAndSupportStyles } from \"../../content/styles/Page.styles\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from '../../models/SessionStorageConsts';\r\nimport { useToSetSupportPageTitle as mdppAccessibilitySetSupportPageTitle } from \"../../hooks/accessiblity-hooks\";\r\n\r\nexport const HelpAndSupport: React.FunctionComponent = () => {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [isPartner, setIsPartner] = useState(false);\r\n const toolSupportEmail = process.env.REACT_APP_TOOL_SUPPORT_EMAIL || \"\";\r\n const dealRegSupportEmail = process.env.REACT_APP_DEALREG_SUPPORT_EMAIL || \"\";\r\n const specialPricingNorthAmericaSupportEmail = process.env.REACT_APP_SP_NORTH_AMERICA_SUPPORT_EMAIL || \"\";\r\n const specialPricingEUMiddleEastAfricaSupportEmail = process.env.REACT_APP_SP_EUROPE_MIDDLE_EAST_AFRICA_SUPPORT_EMAIL || \"\";\r\n const specialPricingAsiaSupportEmail = process.env.REACT_APP_SP_ASIA_SUPPORT_EMAIL || \"\";\r\n const cPSSupportEmail = process.env.REACT_APP_CPS_SUPPORT_EMAIL || \"\";\r\n const supportMailTo = `mailto:${toolSupportEmail}`;\r\n\r\n mdppAccessibilitySetSupportPageTitle();\r\n\r\n //const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n useEffect(() => {\r\n var userRole = getUserRole();\r\n //logged in user should have any one of the role\r\n var partnerRoles = [\"ADR\", \"ADD\", \"DMP\", \"MST\"]\r\n partnerRoles.forEach((role) => {\r\n if (userRole.indexOf(role) !== -1) {\r\n setIsPartner(true);\r\n return;\r\n }\r\n })\r\n }, [])\r\n\r\n if (isPartner) {\r\n return (\r\n <div style={HelpAndSupportStyles.paddingStyle}>\r\n <div style={HelpAndSupportStyles.HelpAndSupportHeaderStyles}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MDPPHelpAndSupport\", UIControlsText.MDPPHelpAndSupport)}\r\n </div>\r\n <div style={HelpAndSupportStyles.contentStyle} >\r\n {\r\n <div style={HelpAndSupportStyles.contentStyle}>\r\n <div style={HelpAndSupportStyles.contentStyleBottomLine}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"HelpAndSupportResourceGuidance\", UIControlsText.HelpAndSupportResourceGuidance)}\r\n </div>\r\n <b>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CaseSpecificContacts\", UIControlsText.CaseSpecificContacts)}</b>\r\n <div style={HelpAndSupportStyles.contentStyleBottomLineBlueText}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"DealRegistrationText\", UIControlsText.DealRegistrationText) + \":\"} <a href={supportMailTo}>{dealRegSupportEmail} </a>\r\n </div>\r\n <div style={HelpAndSupportStyles.contentStyleBlueText}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"SpecialPricingText\", UIControlsText.SpecialPricingText)}<div style={{ color: \"black\" }}>: {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"ContactByRegion\", UIControlsText.ContactByRegion)}</div>\r\n </div>\r\n <ul>\r\n <li>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"SpecialPricingContactNorthAmerica\", UIControlsText.SpecialPricingContactNorthAmerica) + \":\"} <a href={supportMailTo}>{specialPricingNorthAmericaSupportEmail} </a>\r\n </li>\r\n <li>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"SpecialPricingContactEUMiddleEastAfrica\", UIControlsText.SpecialPricingContactEUMiddleEastAfrica) + \":\"} <a href={supportMailTo}>{specialPricingEUMiddleEastAfricaSupportEmail} </a>\r\n </li>\r\n <li>\r\n <div style={HelpAndSupportStyles.contentStyleBottomLine}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"SpecialPricingContactAsia\", UIControlsText.SpecialPricingContactAsia) + \":\"} <a href={supportMailTo}>{specialPricingAsiaSupportEmail} </a>\r\n </div>\r\n </li>\r\n </ul>\r\n <div style={HelpAndSupportStyles.contentStyleBlueText}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CustomPricingStrategic\", UIControlsText.CustomPricingStrategic) + \":\"}\r\n </div>\r\n <ul>\r\n <li>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CPContactGuidance\", UIControlsText.CPContactGuidance)}\r\n </li>\r\n <li>\r\n <div style={HelpAndSupportStyles.contentStyleBottomLine}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CPContact\", UIControlsText.CPContact)} <a href={supportMailTo}>{cPSSupportEmail} </a>\r\n </div>\r\n </li>\r\n </ul>\r\n <div style={HelpAndSupportStyles.contentStyleBlueText}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"OTLE\", UIControlsText.OTLE) + \":\"}\r\n </div>\r\n <ul>\r\n <li>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"OTLEContactGuidance\", UIControlsText.OTLEContactGuidance)}\r\n </li>\r\n\r\n </ul>\r\n <b>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"ClaimsSupportGuidance\", UIControlsText.ClaimsSupportGuidance)}\r\n </b>\r\n <div style={HelpAndSupportStyles.contentStyleBottomLineBlueText}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"ClaimsContact\", UIControlsText.ClaimsContact)} <a href={supportMailTo}>{toolSupportEmail} </a>\r\n </div>\r\n\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n )\r\n }\r\n else\r\n return (\r\n <div style={HelpAndSupportStyles.paddingStyle}>\r\n <h5>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"HelpAndSupport\", UIControlsText.HelpAndSupport)}</h5>\r\n <ul style={HelpAndSupportStyles.contentStyle} >\r\n {\r\n <li>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ToolSupportContent\", UIControlsText.ToolSupportContent)} <a href={supportMailTo}>{toolSupportEmail}</a>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n )\r\n}","import React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { FormRenderingService, IComponent } from './DynamicFormRendering';\r\n\r\n/**\r\n * GenericFormComponent.\r\n * @function component\r\n */\r\nconst GenericForm: React.FunctionComponent<FormProps> = ({ onSubmit, validate, errors, formJsonTemplate, baseState }: FormProps) => {\r\n // Read the formState before render to subscribe the form state through the Proxy \r\n const { register, handleSubmit } = useForm({});\r\n /**\r\n * Method to handle submit\r\n * @method\r\n */\r\n const onSubmitForm = (formData: any) => {\r\n console.log(JSON.stringify(formData));\r\n };\r\n\r\n /**\r\n * Method to handle rendering of content for tabs\r\n * @method\r\n */\r\n const renderTabs = () => {\r\n return (\r\n <div key='pivot'>\r\n {renderFieldsInTabs(formJsonTemplate)}\r\n </div>\r\n );\r\n }\r\n\r\n /**\r\n * Method to handle rendering of all field level components inside the tab\r\n * @method\r\n * @param {IComponent} data template for the form \r\n */\r\n const renderFieldsInTabs = (data: IComponent) => {\r\n const container = data?.data as any;\r\n return container.components.map((eachItem: IComponent) => {\r\n return (\r\n <div key={eachItem.data.id} className={eachItem.className}>\r\n {FormRenderingService(eachItem, register, baseState)}\r\n </div>\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * go to dashboard on click of back event handler.\r\n * @method\r\n */\r\n const BacktoDashboard = (): void => {\r\n window.location.href ='/dashboard'\r\n }\r\n\r\n return (\r\n <form onSubmit={handleSubmit(onSubmitForm)}>\r\n <div>{renderTabs()}</div>\r\n </form>\r\n );\r\n}\r\nexport interface FormProps {\r\n onSubmit?: any,\r\n errors: any,\r\n validate?: any,\r\n formJsonTemplate: IComponent,\r\n baseState: any\r\n}\r\n\r\nexport default GenericForm;","import { UIControlsText } from \"../../../content/UIControlsText\";\r\nimport { ILegalEntity } from \"../../../models/ILegalEntity\";\r\nimport { UIControlType } from \"../../../models/UIControlType\";\r\nimport { stackItemCustomerStyles } from \"./PricingProgramFormUtils\";\r\nimport { PageStyles } from \"../common/content/Page.Styles\";\r\nimport { useCommonPPContext } from \"../common/context/common-pp-context\";\r\nimport { smallAlignmentTokens } from \"./PricingProgramFormUtils\";\r\nimport { getEntityDataFromSession, getRuleValidationMessage } from '../../../components/shared/common/util';\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from \"../../../models/SessionStorageConsts\";\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nexport function GetCustomerViewJson(customerDetail?: ILegalEntity): any {\r\n const { commonPPContextState, commonPPContextDispatch } = useCommonPPContext();\r\n \r\n //validate customer type and visible fields accordingly\r\n const isManagedCustomer = (isManagedCustomerField: boolean): boolean => {\r\n var isManaged = customerDetail?.isManaged;\r\n return isManagedCustomerField === isManaged\r\n }\r\n //validate customer type and visible fields accordingly\r\n const isCustomerExists = (): boolean => {\r\n var isExists = true \r\n if(!customerDetail?.country)\r\n {\r\n isExists = false;\r\n }\r\n return isExists;\r\n }\r\n \r\n const CustomerDetailsJson = [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForCustDetails\",\r\n 'data-nextgen-parent-group': 'View - Customer Details',\r\n 'data-nextgen-parentid': 'View - Customer Details',\r\n wrap: true,\r\n horizontal: true,\r\n verticalAlign:\"start\",\r\n visible: isCustomerExists(),\r\n disableShrink:true,\r\n tokens: smallAlignmentTokens,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomercountry',\r\n visible: isCustomerExists(),\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardCustomer\", \r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDetails\", UIControlsText.CustomerDetails),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDetailsIcon\", UIControlsText.CustomerDetailsIcon),\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForAllCustomerStackItems\",\r\n horizontal: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n styles: stackItemCustomerStyles,\r\n align: \"start\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerCountryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerCountry\", UIControlsText.CustomerCountry),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerCountry\", UIControlsText.CustomerCountry), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.country,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerName',\r\n visible: isManagedCustomer(true),\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerNameValueField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameText\", UIControlsText.CustomerNameText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameText\", UIControlsText.CustomerNameText), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.legalEntityName,\r\n styles: PageStyles.textFieldStylesOneColumn\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerDomain',\r\n visible: isManagedCustomer(true),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerDomainTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText), \r\n contolType: UIControlType.LabelValueView,\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n value: customerDetail?.dealCustomerDomain,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerIndustry',\r\n visible: isManagedCustomer(false),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerIndustryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Industry\", UIControlsText.Industry),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Industry\", UIControlsText.Industry), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.industry,\r\n styles: PageStyles.textFieldStylesOneColumn\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerName',\r\n visible: isManagedCustomer(false),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerIndustryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameEnglish\", UIControlsText.CustomerNameEnglish),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameEnglish\", UIControlsText.CustomerNameEnglish), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.legalEntityName,\r\n styles: PageStyles.textFieldStylesOneColumn\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerName',\r\n visible: isManagedCustomer(false),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerIndustryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameLocalLanguage\", UIControlsText.CustomerNameLocalLanguage),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerNameLocalLanguage\", UIControlsText.CustomerNameLocalLanguage), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.organizationNameInLocalLanguage,\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerAddress',\r\n visible: isManagedCustomer(false),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerIndustryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressFacetText\", UIControlsText.AddressFacetText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressFacetText\", UIControlsText.AddressFacetText), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.address,\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerVertical',\r\n visible: isManagedCustomer(false),\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerVerticalTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Vertical\", UIControlsText.Vertical),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Vertical\", UIControlsText.Vertical), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.vertical,\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerVertical',\r\n visible: isManagedCustomer(false),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerVerticalCategoryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"VerticalCategory\", UIControlsText.VerticalCategory),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"VerticalCategory\", UIControlsText.VerticalCategory), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.verticalCategory,\r\n styles: PageStyles.textFieldStylesOneColumn\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerWebPageURL',\r\n visible: isManagedCustomer(false),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerWebpageTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"WebPageUrl\", UIControlsText.WebPageUrl),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"WebPageUrl\", UIControlsText.WebPageUrl), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.webPageURL,\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'EndCustomerEmailDomain',\r\n visible: isManagedCustomer(false),\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerEmailDomainTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailDomain\", UIControlsText.EmailDomain),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailDomain\", UIControlsText.EmailDomain), \r\n contolType: UIControlType.LabelValueView,\r\n value: customerDetail?.emailDomain,\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n\r\n \r\n return CustomerDetailsJson;\r\n}\r\n","import { _Styles } from '../../../../content/styles/Page.styles';\r\nimport { useCommonPPContext } from '../../common/context/common-pp-context';\r\nimport { useEffect, useState } from 'react';\r\nimport { ILegalEntity } from '../../../../models/ILegalEntity';\r\nimport { GetCustomerViewJson } from '../customerDetail';\r\n\r\nexport function CustomerDetails() {\r\n const { commonPPContextState } = useCommonPPContext();\r\n const [customerDetail, SetCustomerDetail] = useState<ILegalEntity>();\r\n let dealCustomer: ILegalEntity = {} as ILegalEntity;\r\n\r\n useEffect(() => {\r\n // to read customer information from context\r\n if (commonPPContextState.opportunityDeals[0].dealCustomers && commonPPContextState.opportunityDeals[0].dealCustomers.length > 0) {\r\n dealCustomer = commonPPContextState.opportunityDeals[0].dealCustomers[0];\r\n }\r\n\r\n if (dealCustomer) {\r\n SetCustomerDetail(dealCustomer);\r\n }\r\n }, [commonPPContextState.opportunityDeals[0].dealCustomers])\r\n\r\n const CustomerDetailsJson = GetCustomerViewJson(customerDetail);\r\n\r\n return CustomerDetailsJson;\r\n}","import { itemAlignmentsStackTokens, stackItemCustomerStyles, stackItemStyles } from '../PricingProgramFormUtils';\r\nimport { _Styles } from '../../../../content/styles/Page.styles';\r\nimport { useCommonPPContext } from '../../common/context/common-pp-context';\r\nimport { useEffect, useState } from 'react';\r\nimport { IGridProps } from \"../../../../components/shared/grid/IGridProps\";\r\nimport { getEntityDataFromSession, getURLParamValue, readGridConfig, getRuleValidationMessage } from '../../../../components/shared/common/util';\r\nimport { GridType } from '../../../../models/GridType';\r\nimport { DealType } from '../../../../models/DealType';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { UIControlsText } from '../../../../content/UIControlsText';\r\nimport { IProductType } from '../../../../models/IProductType';\r\nimport { IProductFamily } from '../../../../models/IProductFamily';\r\nimport { ApplicationConstants } from '../../../../models/ApplicationConstants';\r\nimport { IDealType } from '../../../../models/IDealType';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { ProductStructure } from '../../../../models/ProductStructure';\r\nimport { OpportunityDealStatusCodes } from '../../../../models/OpportunityDealStatusCodes';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\n\r\nexport function ProductDetails(productTypes: IProductType[]) {\r\n const { commonPPContextState } = useCommonPPContext();\r\n const [DRproductGridConfig, setDRproductGridConfig] = useState<IGridProps>(readGridConfig(GridType.DRProducts));\r\n const [SPproductGridConfig, setSPproductGridConfig] = useState<IGridProps>(readGridConfig(GridType.SPProducts));\r\n const [productGroup, setProductGroup] = useState<string>(\"\");\r\n const [dealType, setDealType] = useState<string>(\"\");\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n useEffect(() => {\r\n // to read product information from context\r\n const oppDealNumber = commonPPContextState.selectedOptyDealCaseNumber;\r\n if (oppDealNumber && oppDealNumber.length > 0) {\r\n var oppDeal = commonPPContextState.opportunityDeals.filter(d => d.name === oppDealNumber)[0];\r\n if (oppDeal) {\r\n const dealTypes = getEntityDataFromSession<IDealType>(SessionStorageConsts.dealTypes);\r\n const dealTypeName = dealTypes.find(t => t.id === oppDeal.dealType?.id)?.name;\r\n var products = oppDeal.products;\r\n setDealType(dealTypeName || \"\");\r\n \r\n if (dealTypeName?.toLowerCase() === DealType.DealRegistration.toLowerCase() && products) {\r\n var buProducts = products.filter(p => p.productStructure !== ProductStructure.BusinessUnit);\r\n let groupedbyBU = [\r\n ...new Map(\r\n buProducts?.map((item: IProductFamily) => [item.businessUnitName, item])\r\n ).values(),\r\n ];\r\n let Config = { ...DRproductGridConfig };\r\n Config.kendoGridProps.data = groupedbyBU\r\n setDRproductGridConfig({ ...Config });\r\n }\r\n else if (dealTypeName?.toLowerCase() === DealType.SpecialPricing.toLowerCase()) {\r\n let groupedbyPFAM = [\r\n ...new Map(\r\n products?.map((item: IProductFamily) => [item.productFamilyCode, item])\r\n ).values(),\r\n ];\r\n let Config = { ...SPproductGridConfig };\r\n var data = dealTypeName === DealType.SpecialPricing ? groupedbyPFAM.filter(d => d.productStructure === ProductStructure.ProductFamily) : groupedbyPFAM.filter(d => d.productStructure !== ProductStructure.BusinessUnit);\r\n if (oppDeal.statusCode === OpportunityDealStatusCodes.Draft) {\r\n data = groupedbyPFAM;\r\n }\r\n Config.kendoGridProps.data = data;\r\n setSPproductGridConfig({ ...Config });\r\n }\r\n\r\n if (commonPPContextState.productGroup) {\r\n var productType = productTypes.filter(p => p.productId === commonPPContextState.productGroup)[0].productName\r\n if (productType) {\r\n setProductGroup(productType)\r\n }\r\n }\r\n }\r\n }\r\n }, [commonPPContextState.opportunityDeals[0].products, commonPPContextState.selectedOptyDealCaseNumber])\r\n\r\n const ProductDetailsJson = [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForProductDetails\", \r\n baseState: commonPPContextState,\r\n name: 'Product Details',\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductVariantIConName\", UIControlsText.ProductVariantIConName),\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForProductsTable\",\r\n 'data-nextgen-parent-group': \"View - Product Details\",\r\n 'data-nextgen-parentid': \"View - Product Details\",\r\n wrap: true,\r\n vertical: true,\r\n verticalAlign: \"start\", \r\n tokens: itemAlignmentsStackTokens,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'productgroupdetails',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'Col',\r\n visible: true,\r\n data: {\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n contolType: UIControlType.Label,\r\n id: \"CustomerCountryTextField\",\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductGroup\", UIControlsText.ProductGroup),\r\n value: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductGroup\", UIControlsText.ProductGroup).concat(\" \").concat(productGroup),\r\n className: 'productgroupStyle'\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'ProductDetails',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'Col',\r\n visible: dealType.toLowerCase() === DealType.DealRegistration.toLowerCase(),\r\n data: {\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"NextGenKendoGrid\",\r\n data: {\r\n ...{\r\n kendoGridProps: { ...DRproductGridConfig.kendoGridProps }\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Col',\r\n visible: dealType.toLowerCase() === DealType.SpecialPricing.toLowerCase(),\r\n data: {\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"NextGenKendoGrid\",\r\n data: {\r\n ...{\r\n kendoGridProps: { ...SPproductGridConfig.kendoGridProps }\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n\r\n return ProductDetailsJson;\r\n}","import { smallAlignmentTokens, stackItemCustomerStyles } from '../PricingProgramFormUtils';\r\nimport { UIControlsText, UIConfigIdentifierConstants } from '../../../../content/UIControlsText';\r\nimport { PageStyles } from '../../common/content/Page.Styles';\r\nimport { getsavedContext, getEntityDataFromSession, getRuleValidationMessage, isNullOrEmpty, getUserDetails, isRequestorViewing } from '../../../../components/shared/common/util';\r\nimport { useCommonPPContext } from '../../common/context/common-pp-context';\r\nimport { AttachmentDisplayMode } from '../../../../models/AttachmentDisplayMode';\r\nimport Moment from 'moment';\r\nimport { IDealInfoProps } from '../props/IDealInfoProps';\r\nimport { JavaScriptExtensions } from '../../../../infrastructure/JavaScriptExtensions';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { RfpType } from '../../../../models/RfpType';\r\nimport { textFieldStylesTwoColumn } from '../../../../content/styles/Page.styles';\r\nimport { IVertical } from '../../../../models/IVertical';\r\nimport { DealType } from '../../../../models/DealType';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\n\r\nexport function DealDetails(props: IDealInfoProps) {\r\n const { commonPPContextState } = useCommonPPContext();\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const isRfpRfqPublicTender: boolean = commonPPContextState?.opportunityRfp === RfpType.Yes;\r\n const selectedOptyDeal = commonPPContextState.opportunityDeals && commonPPContextState.opportunityDeals.find(t => t.name === commonPPContextState?.selectedOptyDealCaseNumber);\r\n const customerData = selectedOptyDeal && selectedOptyDeal?.dealCustomers && selectedOptyDeal?.dealCustomers[0];\r\n let loggedInuser = getUserDetails();\r\n const getCountryName = (): string | undefined => {\r\n const country = selectedOptyDeal && selectedOptyDeal?.dealAddress && selectedOptyDeal?.dealAddress?.country;\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(country)) {\r\n return props?.countries?.find(t => t.countryId === country)?.countryName;\r\n }\r\n\r\n return '';\r\n }\r\n const checkRequestorViewing = () => {\r\n return isRequestorViewing(commonPPContextState.submitterDetails?.email);\r\n }\r\n const DealDetailsJSON = [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackTileForDeal\",\r\n 'data-nextgen-parent-group': \"View - Deal Details\",\r\n 'data-nextgen-parentid': \"View - Deal Details\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForDeal\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText),\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackTileItemForDeal\",\r\n horizontal: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackDealsNameRowId,\r\n styles: stackItemCustomerStyles,\r\n align: \"start\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealNameTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealDetailsText),\r\n contolType: UIControlType.LabelValueView,\r\n value: selectedOptyDeal && selectedOptyDeal?.dealName,\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"dealVerticalDropdown\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText),\r\n contolType: UIControlType.LabelValueView,\r\n value: (props.verticals && props.verticals?.map((item: IVertical) => ((item?.id === (commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealVertical)) ? item.name : '') as string)),\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackContainerForDealOverview\",\r\n vertical: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackItemDealOverviewId,\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: UIConfigIdentifierConstants.DealOverviewTextFieldId,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n contolType: UIControlType.LabelValueView,\r\n value: selectedOptyDeal && selectedOptyDeal?.dealOverview,\r\n styles: PageStyles.multiLineTextWidth,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackForCaseDecision',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForStartDate',\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CaseStartDateTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInfoCaseStartDateText\", UIControlsText.DealInfoCaseStartDateText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInfoCaseStartDateText\", UIControlsText.DealInfoCaseStartDateText),\r\n contolType: UIControlType.LabelValueView,\r\n value: selectedOptyDeal && selectedOptyDeal?.caseStartDate && Moment(selectedOptyDeal?.caseStartDate).format('MM/DD/YYYY'),\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForCaseDealEndDate',\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CaseEndDateTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInfoEndDateText\", UIControlsText.DealInfoEndDateText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInfoEndDateText\", UIControlsText.DealInfoEndDateText),\r\n contolType: UIControlType.LabelValueView,\r\n value: selectedOptyDeal && selectedOptyDeal?.expirationDate && Moment(selectedOptyDeal?.expirationDate).format('MM/DD/YYYY'),\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackItemForDomain\",\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CustomerDomainTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText),\r\n contolType: UIControlType.LabelValueView,\r\n value: selectedOptyDeal && selectedOptyDeal?.dealCustomers && selectedOptyDeal?.dealCustomers[0]?.dealCustomerDomain,\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n //Device Ship to Address Stack Tile\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackTileForAddress\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForAddress\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToAddressCardText\", UIControlsText.DeviceShipToAddressCardText),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressIcon\", UIControlsText.AddressIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackDeviceShipToAddressRowId,\r\n horizontal: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForShipAddress',\r\n styles: stackItemCustomerStyles,\r\n align: \"start\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DeviceShipToAddressTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToAddressText\", UIControlsText.DeviceShipToAddressText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToAddressText\", UIControlsText.DeviceShipToAddressText),\r\n contolType: UIControlType.LabelValueView,\r\n value: selectedOptyDeal && selectedOptyDeal?.dealAddress && selectedOptyDeal?.dealAddress?.address1,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForCountry',\r\n styles: stackItemCustomerStyles,\r\n align: \"end\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CountryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Country\", UIControlsText.Country),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Country\", UIControlsText.Country),\r\n contolType: UIControlType.LabelValueView,\r\n value: getCountryName(),\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackForFirstRowAddress',\r\n horizontal: true,\r\n //disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForCity',\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CityTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n contolType: UIControlType.LabelValueView,\r\n value: selectedOptyDeal && selectedOptyDeal?.dealAddress && selectedOptyDeal?.dealAddress?.city,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForStateProvince',\r\n styles: stackItemCustomerStyles,\r\n align: \"end\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"StateProvinceTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToStateProvinceText\", UIControlsText.DeviceShipToStateProvinceText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToStateProvinceText\", UIControlsText.DeviceShipToStateProvinceText),\r\n contolType: UIControlType.LabelValueView,\r\n value: selectedOptyDeal && selectedOptyDeal?.dealAddress && selectedOptyDeal?.dealAddress?.stateOrProvince,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForSecondRowAddress\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"PostalCodeTextField\",\r\n\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToPostalCodeText\", UIControlsText.DeviceShipToPostalCodeText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToPostalCodeText\", UIControlsText.DeviceShipToPostalCodeText),\r\n\r\n contolType: UIControlType.LabelValueView,\r\n value: selectedOptyDeal && selectedOptyDeal?.dealAddress && selectedOptyDeal?.dealAddress?.postalCode,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackItemForCommittedDealVolTile\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForCommittedDealVolume\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CommittedDealVolumeText\", UIControlsText.CommittedDealVolumeText),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CommittedDealVolumeIcon\", UIControlsText.CommittedDealVolumeIcon),\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemCommittedDealVolume',\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"CommittedDealVolume\",\r\n data: {\r\n opportunityDeals: commonPPContextState?.opportunityDeals,\r\n pageMode: commonPPContextState?.pageMode,\r\n dealTypes: props.dealTypes,\r\n selectedOptyDealCaseNumber: commonPPContextState?.selectedOptyDealCaseNumber,\r\n partnerDetails: commonPPContextState?.partnerDetails,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackTileItemForCase\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForCase\",\r\n baseState: commonPPContextState,\r\n name: \"Case Details\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseDetailsIcon\", UIControlsText.CaseDetailsIcon),\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackItemEmailCCNotificationRecipientsId,\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: checkRequestorViewing(),\r\n data: {\r\n id: \"EmailCCNotificationRecipient\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n contolType: UIControlType.LabelValueView,\r\n value: commonPPContextState?.opportunityChannelContacts && commonPPContextState?.opportunityChannelContacts.find(t => t.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText))?.channelContactEmails,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackForCaseDecisionRowId,\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CaseDecisionTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseDecisionJustification\", UIControlsText.CaseDecisionJustification),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseDecisionJustification\", UIControlsText.CaseDecisionJustification),\r\n contolType: UIControlType.LabelValueView,\r\n styles: textFieldStylesTwoColumn,\r\n value: selectedOptyDeal && selectedOptyDeal?.closureDecisionComments\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackItemTileForRFPRFQTender\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n visible: selectedOptyDeal?.dealType?.name === DealType.DealRegistration,\r\n data: {\r\n id: \"StackTileForPreSales\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"CustomTileCardComponentForPreSales\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PreSalesActivitiesText\", UIControlsText.PreSalesActivitiesText),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PreSalesIcon\", UIControlsText.PreSalesIcon),\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"ContainerForPreSales\",\r\n vertical: true,\r\n tokens: smallAlignmentTokens,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackItemPreSalesActivitiesId,\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"dealPreSalesActivities\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PreSalesActivitiesText\", UIControlsText.PreSalesActivitiesText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PreSalesActivitiesText\", UIControlsText.PreSalesActivitiesText),\r\n styles: PageStyles.textFieldPanelWidth,\r\n contolType: UIControlType.LabelValueView,\r\n value: selectedOptyDeal && selectedOptyDeal?.preSalesActivity,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackTileForRfQ\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForRFP\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderText\", UIControlsText.RfpRfqPublicTenderText),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PublicTenderPolicyIcon\", UIControlsText.PublicTenderPolicyIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'DealsRFPRFQTab',\r\n wrap: true,\r\n horizontal: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: UIConfigIdentifierConstants.RfpRfqPublicTenderId,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderText\", UIControlsText.RfpRfqPublicTenderText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderText\", UIControlsText.RfpRfqPublicTenderText),\r\n contolType: UIControlType.LabelValueView,\r\n value: commonPPContextState.opportunityRfp === RfpType.Yes ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText)\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackItemPublicTenderJustificationId,\r\n styles: stackItemCustomerStyles,\r\n visible: isRfpRfqPublicTender,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"RfpRfqPublicTenderJustificationText\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderJustificationText\", UIControlsText.RfpRfqPublicTenderJustificationText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderJustificationText\", UIControlsText.RfpRfqPublicTenderJustificationText),\r\n contolType: UIControlType.LabelValueView,\r\n value: commonPPContextState?.rfpJustification,\r\n styles: PageStyles.textFieldPanelWidth,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: (commonPPContextState?.attachments?.filter(x => x?.source === UIControlsText.DealDetailsText) || [])?.length > 0,\r\n data: {\r\n id: 'StackItemPublicTenderAttachements',\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"Attachment\",\r\n data: {\r\n id: \"RfpRfqPublicTenderAttachement\",\r\n attachmentList: commonPPContextState?.attachments?.filter(x => x?.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText)) || [],\r\n labelText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachments\", UIControlsText.Attachments),\r\n source: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText),\r\n //guidanceText: GuidanceText.DealInfoPublicTenderAttachments,\r\n opportunityDealStatusCode: commonPPContextState.opportunityDeals[0]?.statusCode,\r\n pageMode: commonPPContextState.pageMode,\r\n attachmentDisplayMode: AttachmentDisplayMode.Grid,\r\n allowedFileExtensions: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AllowedFileExtensionsForDRAndSP\", UIControlsText.AllowedFileExtensionsForDRAndSP),\r\n savedAttachments: getsavedContext()?.attachments\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n\r\n ]\r\n },\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackItemTileForAdditionalInformation\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n visible: true,\r\n data: {\r\n id: \"StackTileForAdditionalInformation\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForAdditionalInformation\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsIcon\", UIControlsText.DealDetailsIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'AdditionalInformationTab',\r\n wrap: true,\r\n horizontal: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: UIConfigIdentifierConstants.AdditionalInformation,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation),\r\n contolType: UIControlType.LabelValueView,\r\n value: selectedOptyDeal && selectedOptyDeal.additionalComments,\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n },\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ];\r\n\r\n return DealDetailsJSON;\r\n}","\r\nimport { _Styles } from '../../../../content/styles/Page.styles';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { PanelBarExpandMode } from '@progress/kendo-react-layout';\r\nimport { useEffect, useState } from 'react';\r\nimport { IGridProps } from \"../../../../components/shared/grid/IGridProps\";\r\nimport { getEntityDataFromSession, getLoggedinUserRoleDetails, readGridConfig, getRuleValidationMessage } from '../../../../components/shared/common/util';\r\nimport { GridType } from '../../../../models/GridType';\r\nimport { useCommonPPContext } from '../../common/context/common-pp-context';\r\nimport { IProductFamily } from '../../../../models/IProductFamily';\r\nimport { IOpportunityDealProductSku } from '../../../../models/IOpportunityDealProductSku';\r\nimport { nextGenService } from '../../../../services/NextGenService';\r\nimport { PageMode } from '../../../../models/PageMode';\r\nimport { IUserRoleDetail } from '../../../../models/IUserRoleDetail';\r\nimport { DealType } from '../../../../models/DealType';\r\nimport { IDealType } from '../../../../models/IDealType';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { GetCompactProductData, GetExpandedProductData } from '../../../../components/shared/productDatabyProductview';\r\nimport { OpportunityDealStatusCodes } from '../../../../models/OpportunityDealStatusCodes';\r\nimport { ProductStructure } from '../../../../models/ProductStructure';\r\nimport { UIControlsText } from '../../../../content/UIControlsText';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\n\r\nexport function PricingDiscount() {\r\n const { commonPPContextState } = useCommonPPContext();\r\n const [expandMode] = useState<PanelBarExpandMode>(\"single\");\r\n const [BUproductGridConfig, setBUproductGridConfig] = useState<IGridProps>(readGridConfig(GridType.BUView));\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n const [pfamCompactConfig, setPfamCompactConfig] = useState<IGridProps>(readGridConfig(GridType.DRSPCompactView));\r\n const [pfamExpandConfig, setPfamExpandConfig] = useState<IGridProps>(readGridConfig(GridType.DRSPExpandView));\r\n const [dealType, setdealType] = useState<string>(\"\");\r\n const [expandGridVisible, setExpandGridVisible] = useState<boolean>(false);\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n //to show BU view in pricing and discount page\r\n const BUViewGridData = (productData: IProductFamily[], caseNumber: string, dealName: string, customerName: string, customerCountry: string, dealStatusCode: number, dealTypeName?: string) => {\r\n var FinalData: IOpportunityDealProductSku[] = [];\r\n if (productData && productData.length > 0) {\r\n var buProducts = productData.filter(p => p.productStructure !== ProductStructure.BusinessUnit);\r\n let groupedbyBU = [\r\n ...new Map(\r\n buProducts?.map((item: IProductFamily) => [item.businessUnitName, item])\r\n ).values(),\r\n ];\r\n if (groupedbyBU) {\r\n FinalData = groupedbyBU.map((item: any) => {\r\n return {\r\n decisionTypeName: item.decisionTypeName,\r\n businessUnitName: item.businessUnitName,\r\n productStructure: item.productStructure\r\n } as IOpportunityDealProductSku\r\n })\r\n }\r\n let Config = { ...BUproductGridConfig };\r\n Config.kendoGridProps.data = FinalData;\r\n Config.kendoGridProps.dealName = dealName;\r\n Config.kendoGridProps.dealType = dealTypeName;\r\n Config.kendoGridProps.caseNumber = caseNumber;\r\n Config.kendoGridProps.customerName = customerName;\r\n Config.kendoGridProps.customerCountry = customerCountry;\r\n if (Config.kendoGridProps.actionTypes) {\r\n Config.kendoGridProps.actionTypes.showDownloadExcelGridAction = true;\r\n }\r\n setBUproductGridConfig({ ...Config });\r\n }\r\n }\r\n\r\n /// to get compact view product data for SP and/or DR\r\n const compactGridData = (productData: IOpportunityDealProductSku[], oppDealNumber: string, dealtypeName: string, statusCode: number, caseNumber: string, dealName: string, customerName: string, customerCountry: string, dealStatusCode: number) => {\r\n var selectedData: IOpportunityDealProductSku[] = [];\r\n if (productData.length !== 0) {\r\n selectedData = GetCompactProductData(productData, pfamCompactConfig, dealtypeName, dealStatusCode);\r\n }\r\n else {\r\n var products = commonPPContextState.opportunityDeals.filter(d => d.name === oppDealNumber)[0].products;\r\n if (products) {\r\n selectedData = products.map((item: any) => {\r\n return {\r\n decisionType: item.decisionTypeName,\r\n productFamily: item.name,\r\n businessUnitName: item.businessUnitName,\r\n productStructure: item.productStructure\r\n } as IOpportunityDealProductSku\r\n });\r\n \r\n if (statusCode !== OpportunityDealStatusCodes.Draft) {\r\n selectedData = dealtypeName === DealType.SpecialPricing ? selectedData.filter(d => d.productStructure === ProductStructure.ProductFamily) : selectedData.filter(d => d.productStructure !== ProductStructure.BusinessUnit);\r\n }\r\n }\r\n }\r\n\r\n let compactGridConfig = { ...pfamCompactConfig };\r\n if (compactGridConfig.kendoGridProps.actionTypes) {\r\n compactGridConfig.kendoGridProps.actionTypes.showDownloadExcelGridAction = true;\r\n }\r\n compactGridConfig.kendoGridProps.resizable = true;\r\n compactGridConfig.kendoGridProps.data = selectedData;\r\n compactGridConfig.kendoGridProps.dealName = dealName;\r\n compactGridConfig.kendoGridProps.dealType = dealtypeName;\r\n compactGridConfig.kendoGridProps.caseNumber = caseNumber;\r\n compactGridConfig.kendoGridProps.customerName = customerName;\r\n compactGridConfig.kendoGridProps.customerCountry = customerCountry;\r\n compactGridConfig.kendoGridProps.totalRecords = selectedData.length;\r\n\r\n setPfamCompactConfig({ ...compactGridConfig });\r\n }\r\n\r\n /// to get expanded view product data for SP and/or DR\r\n const expandGridData = (productData: IOpportunityDealProductSku[], caseNumber: string, dealName: string, customerName: string, customerCountry: string, dealTypeName?: string) => {\r\n var selectedData: IOpportunityDealProductSku[] = [];\r\n if (productData.length !== 0) {\r\n pfamExpandConfig.kendoGridProps.dealType = dealTypeName;\r\n selectedData = GetExpandedProductData(productData, pfamExpandConfig);\r\n\r\n let expandGridConfig = { ...pfamExpandConfig };\r\n if (expandGridConfig.kendoGridProps.actionTypes) {\r\n expandGridConfig.kendoGridProps.actionTypes.showDownloadExcelGridAction = true;\r\n }\r\n var FinalData = selectedData.filter(d => d.businessUnitName != \"\");\r\n expandGridConfig.kendoGridProps.data = FinalData;\r\n expandGridConfig.kendoGridProps.dealName = dealName;\r\n expandGridConfig.kendoGridProps.dealType = dealTypeName;\r\n expandGridConfig.kendoGridProps.caseNumber = caseNumber;\r\n expandGridConfig.kendoGridProps.customerName = customerName;\r\n expandGridConfig.kendoGridProps.customerCountry = customerCountry;\r\n expandGridConfig.kendoGridProps.resizable = true;\r\n expandGridConfig.kendoGridProps.totalRecords = FinalData.length;\r\n setPfamExpandConfig({ ...expandGridConfig });\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n const oppDealNumber = commonPPContextState.selectedOptyDealCaseNumber;\r\n if (oppDealNumber && oppDealNumber.length > 0) {\r\n var oppDeal = commonPPContextState.opportunityDeals.filter(d => d.name === oppDealNumber)[0];\r\n if (oppDeal) {\r\n var caseNumber = commonPPContextState.name || \"\";\r\n var dealName = oppDeal.dealName || \"\";\r\n var customerName = \"\"\r\n var customerCountry = \"\"\r\n if (oppDeal.dealCustomers && oppDeal.dealCustomers?.length > 0) {\r\n customerName = oppDeal.dealCustomers[0].legalEntityName;\r\n customerCountry = oppDeal.dealCustomers[0].country;\r\n }\r\n const dealTypes = getEntityDataFromSession<IDealType>(SessionStorageConsts.dealTypes);\r\n const dealTypeName = dealTypes.find(t => t.id === oppDeal.dealType?.id)?.name;\r\n setdealType(dealTypeName || \"\");\r\n BUViewGridData(oppDeal.products || [], caseNumber, dealName, customerName, customerCountry, oppDeal.statusCode || 0, dealTypeName);\r\n if (dealTypeName?.toLowerCase() === DealType.DealRegistration.toLowerCase() || dealTypeName?.toLowerCase() === DealType.SpecialPricing.toLowerCase()) {\r\n const fetchProductsSKUAndPriceListData = async () => {\r\n if (oppDeal.id) {\r\n let response = await nextGenService.getOpportunityDealDiscountPeriodAndSkuMSRP(oppDeal.id, userRoleDetails, PageMode.View, oppDeal.dealType?.name || \"\")\r\n expandGridData(response.data, caseNumber , dealName, customerName, customerCountry, dealTypeName);\r\n compactGridData(response.data, oppDealNumber, dealTypeName, oppDeal.statusCode || 0, caseNumber, dealName, customerName, customerCountry, oppDeal.statusCode || 0);\r\n var caseStatus = (oppDeal.statusCode === OpportunityDealStatusCodes.Approved || oppDeal.statusCode === OpportunityDealStatusCodes.DealPricingApprovedPendingChannelStatus);\r\n setExpandGridVisible(caseStatus);\r\n }\r\n }\r\n try {\r\n fetchProductsSKUAndPriceListData()\r\n } catch {\r\n }\r\n }\r\n }\r\n }\r\n }, [commonPPContextState.opportunityDeals[0].products, commonPPContextState.selectedOptyDealCaseNumber])\r\n\r\n const ProductDiscountJson = [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForPricingDetails\", \r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PricingAndDiscountsText\", UIControlsText.PricingAndDiscountsText),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PricingAndDiscountsIcon\", UIControlsText.PricingAndDiscountsIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'PricingDiscountsdetails',\r\n 'data-nextgen-parent-group': \"View - Pricing and Discounts\",\r\n 'data-nextgen-parentid': \"View - Pricing and Discounts\",\r\n wrap: true,\r\n horizontal: true,\r\n components: [\r\n {\r\n type: 'Col',\r\n visible: true,\r\n data: {\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n contolType: UIControlType.PanelBarItemWithGrid,\r\n expandMode: expandMode,\r\n items: [{\r\n title: \"Business Unit View\",\r\n gridcongfig: BUproductGridConfig,\r\n expanded: dealType === DealType.DealRegistration,\r\n visible: dealType === DealType.DealRegistration\r\n }, {\r\n title: \"Compact View\",\r\n gridcongfig: pfamCompactConfig,\r\n expanded: dealType !== DealType.DealRegistration,\r\n visible: true\r\n }, {\r\n title: \"Expanded View\",\r\n gridcongfig: pfamExpandConfig,\r\n expanded: false,\r\n visible: expandGridVisible\r\n }]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n \r\n ]\r\n\r\n return ProductDiscountJson;\r\n}","import { useEffect, useState } from 'react';\r\nimport { UIControlsText, UIConfigIdentifierConstants } from '../../../../content/UIControlsText';\r\nimport { PageStyles, DealDetailsStyles, OpportunityDetailsStyles } from '../../common/content/Page.Styles';\r\nimport { useCommonPPContext } from '../../common/context/common-pp-context';\r\nimport { DistributorGridColumnConfig, PrimaryResellerGridColumnConfig, FinalTierResellerGridColumnConfig, PrimaryResellerGridItemsType, DistributorGridItemsType, IColumnConfig, AdditionalResellerViewGridColumnConfig } from '../../../shared/ComponentTypes/DetailListEditableGridTypes';\r\nimport { ChoiceGroupStyles, DefaultPageStyles, PaperStyle, _Styles } from '../../../../content/styles/Page.styles';\r\nimport { getDistinctUserRole, getLoggedinUserRoleDetails, getRequestorsChannelFunctionalities, getEntityDataFromSession, getRuleValidationMessage } from '../../../../components/shared/common/util';\r\nimport { stackItemStyles, itemAlignmentsStackTokens10, itemAlignmentsStackTokens, initialChannelDisplayOnEdit } from '../PricingProgramFormUtils';\r\nimport { PartnerTypeLabel } from '../../../../models/PartnerTypeLabel';\r\nimport { ChannelSubType } from '../../../../models/ChannelSubType';\r\nimport _ from 'lodash';\r\nimport { PartnerType } from '../../../../models/PartnerType';\r\nimport { IInitialFinalTierResellerValue } from '../../../../models/IInitialFinalTierResellerValue';\r\nimport { IInitialAdditionalResellerValue } from '../../../../models/IInitialAdditionalResellerValue';\r\nimport { ActionButton } from '@fluentui/react';\r\nimport { ChoiceGroup, IColumn } from 'office-ui-fabric-react';\r\nimport { CssClassConstants } from '../../../../content/CssClassConstants';\r\nimport { IChannelFunctionalityDisplayState } from '../../../shared/ComponentTypes/IChannelFunctionalityDisplayState';\r\nimport { JavaScriptExtensions } from '../../../../infrastructure/JavaScriptExtensions';\r\nimport { UserSubRole } from '../../../../models/UserSubRole';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { PageMode } from '../../../../models/PageMode';\r\nimport InnerHTMLContainer from '../../../shared/ComponentTypes/InnerHTMLContainer';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\n\r\nexport function Channel() {\r\n const { commonPPContextState } = useCommonPPContext();\r\n const opportunityAccounts = commonPPContextState && commonPPContextState?.opportunityAccounts;\r\n const msStoreAccount = opportunityAccounts?.filter(t => t.partnerType === PartnerType.MsStore && t.channelSubType != ChannelSubType.Requester)?.[0];\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const opportunityChannelContacts = commonPPContextState?.opportunityChannelContacts?.filter(t => t.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText));\r\n const [primaryResellerGridItems, setPrimaryResellerGridItems] = useState<PrimaryResellerGridItemsType[]>([]);\r\n const [additionalResellerGridItems, setAdditionalResellerGridItems] = useState<IInitialAdditionalResellerValue[]>([]);\r\n const [finalTierResellerGridItems, setFinalTierResellerGridItems] = useState<IInitialFinalTierResellerValue[]>([]);\r\n const [distributorListGridItems, setDistributorGridItemsState] = useState<any[]>([]);\r\n //Show the content appropriate to the Channel Requestor Role and other combinations\r\n const [showChannelContentBasedOnRoleType, setShowChannelContentBasedOnRoleType] = useState<IChannelFunctionalityDisplayState>();\r\n const loggedInUserRole = getDistinctUserRole(getLoggedinUserRoleDetails());\r\n\r\n useEffect(() => {\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(commonPPContextState?.partnerDetails?.countryName) ||\r\n !JavaScriptExtensions.isEmptyOrNullOrUndefined(commonPPContextState?.partnerDetails?.userRole)) {\r\n let channelFunctionalityDisplayState: IChannelFunctionalityDisplayState = getRequestorsChannelFunctionalities(commonPPContextState.partnerDetails?.userRole || \"\", commonPPContextState?.partnerDetails?.countryName || \"\");\r\n initialChannelDisplayOnEdit(commonPPContextState, channelFunctionalityDisplayState);\r\n setShowChannelContentBasedOnRoleType(channelFunctionalityDisplayState);\r\n }\r\n }, [commonPPContextState.partnerDetails?.userRole, commonPPContextState?.partnerDetails?.countryName])\r\n\r\n const getPrimaryResellerGridItems = () => {\r\n return opportunityAccounts?.filter(reseller => reseller.partnerType === PartnerType.ADR || reseller.partnerType === PartnerType.DMP)\r\n .map((optyAcc) => {\r\n const contact = commonPPContextState.opportunityChannelContacts?.find((c) => c.opportunityAccountId === optyAcc.id);\r\n return {\r\n id: optyAcc.id,\r\n resellerCountry: optyAcc.accounts && optyAcc.accounts[0]?.countryName,\r\n resellerType: optyAcc.partnerType ? PartnerTypeLabel.get(optyAcc.partnerType) : \"\",\r\n resellerNames: optyAcc.accounts && optyAcc.accounts[0]?.companyName,\r\n resellerEmailContacts: optyAcc?.channelSubType === ChannelSubType.Requester ? optyAcc.contactEmail : contact?.channelContactEmails,\r\n deleteAction: optyAcc.id\r\n } as PrimaryResellerGridItemsType\r\n });\r\n }\r\n\r\n const getFinalResellerGridItems = () => {\r\n return opportunityAccounts?.filter(reseller => reseller.partnerType === PartnerType.FinalTierReseller)\r\n .map((optyAcc, idx) => {\r\n return {\r\n id: optyAcc.id,\r\n ftrNo: idx + 1,\r\n resellerName: optyAcc.opportunityAccountName,\r\n contactName: optyAcc.accountCompanyName,\r\n contactEmail: optyAcc?.contactEmail,\r\n address: optyAcc.address,\r\n city: optyAcc.city,\r\n stateProvince: optyAcc.stateProvince,\r\n zipPostalCode: optyAcc.zipPostalCode,\r\n } as IInitialFinalTierResellerValue\r\n });\r\n }\r\n\r\n const getAdditionalResellerGridItems = () => {\r\n return opportunityAccounts?.filter(reseller => reseller.partnerType === PartnerType.AdditionalTierReseller)\r\n .map((optyAcc, idx) => {\r\n return {\r\n id: optyAcc.id,\r\n arNo: idx + 1,\r\n resellerName: optyAcc.opportunityAccountName,\r\n contactName: optyAcc.accountCompanyName,\r\n contactEmail: optyAcc?.contactEmail,\r\n address: optyAcc.address,\r\n city: optyAcc.city,\r\n stateProvince: optyAcc.stateProvince,\r\n zipPostalCode: optyAcc.zipPostalCode,\r\n attachments: commonPPContextState.attachments && commonPPContextState.attachments.filter(t => t?.relatedEntityId === optyAcc.id),\r\n attachmentName: commonPPContextState.attachments?.filter(a => a?.relatedEntityId === optyAcc.id)?.map(x => x?.name).join(', '),\r\n } as IInitialAdditionalResellerValue\r\n });\r\n }\r\n\r\n const getDistributorGridItems = () => {\r\n return opportunityAccounts?.filter(optyAccount => optyAccount.partnerType === PartnerType.ADD)\r\n .map((optyAcc) => {\r\n const contact = commonPPContextState.opportunityChannelContacts?.find((c) => c.opportunityAccountId === optyAcc.id);\r\n const distiAccounts = optyAcc?.accounts && optyAcc?.accounts[0];\r\n return {\r\n id: optyAcc.id,\r\n distributorCountry: distiAccounts?.countryName,\r\n distributorOwner: optyAcc?.channelSubType === ChannelSubType.CoOwner ? true : false,\r\n distributorNames: distiAccounts?.companyName,\r\n distributorEmailContacts: optyAcc?.channelSubType === ChannelSubType.Requester ? optyAcc.contactEmail : contact?.channelContactEmails\r\n } as DistributorGridItemsType\r\n });\r\n }\r\n\r\n\r\n\r\n // Attach Primary Reseller grid callbacks\r\n const attachFinalAdditionalResellerGridCallbacks = (columnConfig: IColumnConfig[]): IColumnConfig[] => {\r\n columnConfig.filter((item) => item.key == 'editAction').map((item) => item.hidden = true);\r\n columnConfig.filter((item) => item.key == 'deleteAction').map((item) => item.onRender = (item?: any, index?: number, column?: IColumn) => onRenderDelete(item, index, column));\r\n return columnConfig;\r\n };\r\n\r\n\r\n // Overridden OnRender event for Email textbox with validations\r\n function onRenderDistributorOwner(item?: any, index?: number, column?: IColumn): JSX.Element {\r\n return (\r\n <ChoiceGroup defaultSelectedKey={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText)}\r\n options={[{ key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText), text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) }, { key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText), text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText) }]}\r\n styles={OpportunityDetailsStyles.HorizontalChoiceGroup}\r\n required={true}\r\n disabled={true}\r\n selectedKey={item.distributorOwner === false ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText)}\r\n />\r\n );\r\n };\r\n\r\n //Render Method for showing view of choice group control\r\n function onRenderViewDistributorOwner(item?: any, index?: number, column?: IColumn): JSX.Element {\r\n return (\r\n <InnerHTMLContainer contolType={UIControlType.Label} value={item.distributorOwner === false ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText)} />\r\n );\r\n }\r\n\r\n // Overridden OnRender event for Distributor Delete button\r\n function onRenderDelete(item?: any, index?: number, column?: IColumn): JSX.Element {\r\n return <ActionButton\r\n id='distributorDeleteButton'\r\n iconProps={{\r\n iconName: CssClassConstants.DeleteIconName, ariaLabel: CssClassConstants.DeleteIconName,\r\n styles: DefaultPageStyles.grayColor\r\n }}\r\n disabled={true}\r\n >\r\n </ActionButton>\r\n }\r\n\r\n // Attach Primary Reseller grid callbacks\r\n const attachPrimaryResellerCallbacks = (columnConfig: IColumnConfig[]): IColumnConfig[] => {\r\n columnConfig.filter((item) => item.key === 'deleteAction').map((item) => item.onRender = onRenderDelete);\r\n if (commonPPContextState.pageMode === PageMode.View) {\r\n columnConfig.forEach((item, index) => {\r\n if (item.key === 'deleteAction') {\r\n columnConfig.splice(index, 1);\r\n }\r\n });\r\n }\r\n return columnConfig;\r\n };\r\n\r\n // Attach Distributor grid callbacks\r\n const attachDistributorCallbacks = (columnConfig: IColumnConfig[]): IColumnConfig[] => {\r\n columnConfig.filter((item) => item.key === 'distributorOwner').map((item) => item.onRender = (commonPPContextState.pageMode == PageMode.View ? onRenderViewDistributorOwner : onRenderDistributorOwner));\r\n columnConfig.filter((item) => item.key === 'deleteAction').map((item) => item.onRender = onRenderDelete);\r\n if (commonPPContextState.pageMode === PageMode.View) {\r\n columnConfig.forEach((item, index) => {\r\n if (item.key === 'deleteAction') {\r\n columnConfig.splice(index, 1);\r\n }\r\n });\r\n }\r\n return columnConfig;\r\n };\r\n\r\n useEffect(() => {\r\n setPrimaryResellerGridItems(getPrimaryResellerGridItems() || []);\r\n setFinalTierResellerGridItems(getFinalResellerGridItems() || []);\r\n setAdditionalResellerGridItems(getAdditionalResellerGridItems() || []);\r\n setDistributorGridItemsState(getDistributorGridItems() || []);\r\n }, [opportunityAccounts])\r\n /**\r\n * Content for the Channel tab with JSON format\r\n * @json\r\n */\r\n const ChannelJson = [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForMSStore\", \r\n visible: showChannelContentBasedOnRoleType?.MSStore,\r\n baseState: commonPPContextState,\r\n name: \"MSStore Details\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreIcon\", UIControlsText.MSStoreIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: UIConfigIdentifierConstants.ChannelContainerForMSStoreId,\r\n visible: showChannelContentBasedOnRoleType?.MSStore,\r\n verticalAlign: \"start\",\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n tokens: itemAlignmentsStackTokens,\r\n 'data-nextgen-parent-group': \"View - MS Store Details\",\r\n 'data-nextgen-parentid': \"View - MS Store Details\",\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'MSStoreChannelSection',\r\n horizontal: true,\r\n tokens: itemAlignmentsStackTokens,\r\n disableShrink: true,\r\n visible: showChannelContentBasedOnRoleType?.MSStore,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemMSStoreChannel',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"MSStoreChannel\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreChannel\", UIControlsText.MSStoreChannel),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreChannel\", UIControlsText.MSStoreChannel),\r\n contolType: UIControlType.LabelValueView,\r\n //value: msStoreAccount?.channelSubType,\r\n value: msStoreAccount?.channelSubType === ChannelSubType.DSS ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DSSText\", UIControlsText.DSSText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DigitalStore\", UIControlsText.DigitalStore),\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'MSStoreAddressSection',\r\n horizontal: true,\r\n disableshrink: true,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemMSStoreAddress',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"MSStoreAddressTextField\",\r\n label: msStoreAccount?.channelSubType == ChannelSubType.DSS ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Hub\", UIControlsText.Hub) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DigitalStoreName\", UIControlsText.DigitalStoreName),\r\n ariaLabel: msStoreAccount?.channelSubType == ChannelSubType.DSS ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Hub\", UIControlsText.Hub) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DigitalStoreName\", UIControlsText.DigitalStoreName),\r\n contolType: UIControlType.LabelValueView,\r\n value: msStoreAccount?.address,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemMSStoreCity',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"MSStoreCityTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n contolType: UIControlType.LabelValueView,\r\n value: msStoreAccount?.city,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemMSStoreState',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"MSStoreStateTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"StateProvinceText\", UIControlsText.StateProvinceText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"StateProvinceText\", UIControlsText.StateProvinceText),\r\n contolType: UIControlType.LabelValueView,\r\n value: msStoreAccount?.stateProvince\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'MSStoreContact',\r\n horizontal: true,\r\n disableshrink: true,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemMSStoreSellerName',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"MSStoreSellerNameTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreSellerName\", UIControlsText.MSStoreSellerName),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreSellerName\", UIControlsText.MSStoreSellerName),\r\n contolType: UIControlType.LabelValueView,\r\n value: msStoreAccount?.accountCompanyName\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemMSStoreSellerEmail',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"MSStoreSellerEmailTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreSellerEmail\", UIControlsText.MSStoreSellerEmail),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreSellerEmail\", UIControlsText.MSStoreSellerEmail),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n contolType: UIControlType.LabelValueView,\r\n value: opportunityChannelContacts?.find(c => c.opportunityAccountId === msStoreAccount?.id)?.channelContactEmails,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForReseller\", \r\n visible: !(showChannelContentBasedOnRoleType?.MSStore) && (showChannelContentBasedOnRoleType?.FinalTierAndDistributors || showChannelContentBasedOnRoleType?.AdditionalAndDistributors || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers || showChannelContentBasedOnRoleType?.PrimaryAndFinalTierResellers || showChannelContentBasedOnRoleType?.PrimaryResellersOnly || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers),\r\n baseState: commonPPContextState,\r\n name: \"Reseller Details\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellersIcon\", UIControlsText.ResellersIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackReseller',\r\n 'data-nextgen-parent-group': \"View - Reseller Details\",\r\n 'data-nextgen-parentid': \"View - Reseller Details\",\r\n visible: showChannelContentBasedOnRoleType?.FinalTierAndDistributors || showChannelContentBasedOnRoleType?.AdditionalAndDistributors || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers || showChannelContentBasedOnRoleType?.PrimaryAndFinalTierResellers || showChannelContentBasedOnRoleType?.PrimaryResellersOnly || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers,\r\n styles: stackItemStyles,\r\n components: [\r\n //Reseller Grid\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemForAddChannelRoleBasedContentForReseller',\r\n visible: showChannelContentBasedOnRoleType?.FinalTierAndDistributors || showChannelContentBasedOnRoleType?.AdditionalAndDistributors || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers || showChannelContentBasedOnRoleType?.PrimaryAndFinalTierResellers || showChannelContentBasedOnRoleType?.PrimaryResellersOnly || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers,\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: UIConfigIdentifierConstants.PrimaryResellerContainerId,\r\n visible: showChannelContentBasedOnRoleType?.PrimaryAndFinalTierResellers || showChannelContentBasedOnRoleType?.PrimaryResellersOnly || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers,\r\n components: [\r\n {\r\n type: \"DetailListEditableGrid\",\r\n data: {\r\n id: \"DetailsListGridForPrimaryReseller\",\r\n key: \"DetailsListGridForPrimaryReseller\",\r\n items: getPrimaryResellerGridItems(),\r\n columns: attachPrimaryResellerCallbacks(PrimaryResellerGridColumnConfig),\r\n enableDefaultEditMode: false,\r\n height: \"110px\",\r\n styles: PageStyles.textFieldPanelWidth,\r\n visible: primaryResellerGridItems?.length !== 0,\r\n width: \"100%\"\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"AdditionalResellersContainer\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalResellersInformation\", UIControlsText.AdditionalResellersInformation),\r\n visible: showChannelContentBasedOnRoleType?.AdditionalAndDistributors || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: UIConfigIdentifierConstants.AdditionalResellersChoiceGroupId,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalResellersInformation\", UIControlsText.AdditionalResellerChoiceQuestion),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalResellersInformation\", UIControlsText.AdditionalResellerChoiceQuestion),\r\n contolType: UIControlType.LabelValueView,\r\n value: additionalResellerGridItems?.length > 0 ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText),\r\n styles: PageStyles.textFieldPanelWidth,\r\n }\r\n },\r\n {\r\n type: \"DetailListEditableGrid\",\r\n data: {\r\n id: \"DetailsListCustomColumnsForAdditionalReseller\",\r\n items: additionalResellerGridItems,\r\n columns: attachFinalAdditionalResellerGridCallbacks(AdditionalResellerViewGridColumnConfig),\r\n position: 'relative',\r\n visible: additionalResellerGridItems?.length !== 0,\r\n height: (85 + (40 * additionalResellerGridItems?.length)) + \"px\",\r\n styles: PageStyles.textFieldPanelWidth,\r\n width: \"100%\"\r\n //Disabled enabled based on above choice\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"FinalTierResellerContainer\",\r\n horizontal: true,\r\n disableshrink: true,\r\n visible: showChannelContentBasedOnRoleType?.FinalTierAndDistributors || showChannelContentBasedOnRoleType?.PrimaryAndFinalTierResellers,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: UIConfigIdentifierConstants.FinalTierResellersChoiceGroupId,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"FinalTierResellerQuestion\", UIControlsText.FinalTierResellerQuestion),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"FinalTierResellerQuestion\", UIControlsText.FinalTierResellerQuestion),\r\n contolType: UIControlType.LabelValueView,\r\n value: finalTierResellerGridItems?.length > 0 ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText),\r\n styles: PageStyles.textFieldPanelWidth,\r\n }\r\n },\r\n {\r\n type: \"CustomViewModeComponent\",\r\n data: {\r\n id: \"LabelFinalTierResellerInformation\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"FinalTierResellerInformation\", UIControlsText.FinalTierResellerInformation),\r\n styles: PageStyles.textFieldStylesTwoColumn,\r\n visible: finalTierResellerGridItems?.length !== 0,\r\n }\r\n },\r\n {\r\n type: \"DetailListEditableGrid\",\r\n data: {\r\n id: \"DetailsListCustomColumnsForFinalTierReseller\",\r\n items: finalTierResellerGridItems,\r\n columns: FinalTierResellerGridColumnConfig,\r\n visible: finalTierResellerGridItems?.length !== 0,\r\n height: (85 + (30 * finalTierResellerGridItems?.length)) + \"px\",\r\n styles: PageStyles.textFieldPanelWidth,\r\n width: \"100%\",\r\n //Disabled enabled based on above choice\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForDistributor\", \r\n visible: showChannelContentBasedOnRoleType?.MultipleDistributorsOnly,\r\n baseState: commonPPContextState,\r\n name: \"Distributor Details\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.UserEvent, \"DistributorIcon\", UIControlsText.DistributorIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'ChannelStackForDisti',\r\n 'data-nextgen-parent-group': \"View - Distributor Details\",\r\n 'data-nextgen-parentid': \"View - Distributor Details\",\r\n horizontal: true,\r\n components: [\r\n //Distributor Grid\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForAddChannelRoleBasedContentForDistributor',\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"DetailListEditableGrid\",\r\n data: {\r\n id: \"DetailsListCustomColumnsForDistributor\",\r\n key: \"DetailsListCustomColumnsForDistributor\",\r\n items: distributorListGridItems,\r\n columns: attachDistributorCallbacks(DistributorGridColumnConfig),\r\n gridConfigOptions: { enableCellEdit: false },\r\n styles: PageStyles.textFieldPanelWidth,\r\n visible: distributorListGridItems?.length > 0,\r\n height: (90 + (30 * distributorListGridItems?.length)) + \"px\",\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ];\r\n\r\n return ChannelJson;\r\n}","import { IComponent } from '../../../shared/Components/DynamicFormRendering';\r\nimport { CustomerDetails } from './CustomerDetails';\r\nimport { useCommonPPContext } from '../../common/context/common-pp-context';\r\nimport { ProductDetails } from './ProductDetails'\r\nimport { useEffect, useState } from 'react';\r\nimport { _Styles } from '../../../../content/styles/Page.styles';\r\nimport { getFieldConfig, getStatusNameByCode, getRuleValidationMessage, getEntityDataFromSession, isRequestorViewing } from '../../../../components/shared/common/util';\r\nimport { FieldMapMode } from '../../../../models/FieldMapMode';\r\nimport { UIControlsText } from '../../../../content/UIControlsText';\r\nimport { DealDetails } from './DealDetails';\r\nimport { IPricingProgramProps } from '../props/IPricingProgramProps';\r\nimport { PageStyles } from '../../common/content/Page.Styles';\r\nimport { PricingDiscount } from './PricingDiscount';\r\nimport { backToDashboard } from '../../../../components/shared/common/util';\r\nimport { PartnerTypeLabel, PartnerTypeName } from '../../../../models/PartnerTypeLabel';\r\nimport { ChannelSubType } from '../../../../models/ChannelSubType';\r\nimport { IPivotTab } from '../../../../models/IPivotTab';\r\nimport { CaseActionTypes } from '../../common/reducer/CaseActionTypes';\r\nimport { IActionMenuProps } from '../../../../components/shared/action-menu/IActionMenuProps';\r\nimport { enableActionMenu } from '../../../../components/shared/action-menu/actionMenuUtil';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { Channel } from './Channel';\r\nimport { getSelectedDealDetails, setPartnerDetails, showActionMenuHelper } from '../PricingProgramFormUtils';\r\nimport { OpportunityDealStatusCodes } from '../../../../models/OpportunityDealStatusCodes';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { PartnerType } from \"../../../../models/PartnerType\";\r\nimport { DealType } from \"../../../../models/DealType\";\r\n\r\n\r\nexport function ViewForm(props: IPricingProgramProps) {\r\n const { commonPPContextState, commonPPContextDispatch } = useCommonPPContext();\r\n const [dealNameAction, setdealNameAction] = useState<string>(\"\");\r\n const [caseStatus, setcaseStatus] = useState<string>(\"\");\r\n const [MPNOrgID, setMPNOrgID] = useState<string>(\"\");\r\n const [MPNLocationID, setMPNLocationID] = useState<string>(\"\");\r\n const [country, setCountry] = useState<string>(\"\");\r\n const [partnerRole, setPartnerRole] = useState<string>(\"\");\r\n const [showPartnerDetail, setShowPartnerDetail] = useState(false);\r\n const [isPartnerDetailHidden, setisPartnerDetailHidden] = useState(false);\r\n const [loadingData, setLoadingData] = useState(true);\r\n const [actionMenuConfig, setActionMenuConfig] = useState<IActionMenuProps>();\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const tabNames: string[] = [\r\n getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerText\", UIControlsText.CustomerText),\r\n getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInformationText\", UIControlsText.DealInformationText),\r\n getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText),\r\n getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductsText\", UIControlsText.ProductsText),\r\n ]\r\n const [isRequestor, setIsRequestor] = useState<boolean>(true);\r\n useEffect(() => {\r\n const oppDealNumber = commonPPContextState.selectedOptyDealCaseNumber;\r\n if (commonPPContextState.opportunityDeals.filter(t => t.name === oppDealNumber\r\n && (t.statusCode === OpportunityDealStatusCodes.Approved || t.statusCode === OpportunityDealStatusCodes.Expired))?.length > 0) {\r\n if (tabNames.filter(t => t === UIControlsText.PricingAndDiscountsText)?.length === 0) {\r\n tabNames.push(UIControlsText.PricingAndDiscountsText);\r\n }\r\n }\r\n\r\n let pivotTabs: IPivotTab[] = [];\r\n tabNames.forEach(t => pivotTabs.push({ tabName: t, errors: new Map<string, string>() }))\r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabs });\r\n if (commonPPContextState.name && oppDealNumber && oppDealNumber.length > 0) {\r\n var oppDeal = commonPPContextState.opportunityDeals.filter(d => d.name === oppDealNumber)[0];\r\n\r\n if (oppDeal) {\r\n var requester = commonPPContextState.opportunityAccounts?.filter(acc => acc.channelSubType === ChannelSubType.Requester)[0];\r\n const oppDealdetails = showActionMenuHelper(commonPPContextState, oppDeal, requester);\r\n const actionMenuConfig = enableActionMenu(oppDealdetails);\r\n actionMenuConfig.showCPStrategicLetters = false // hiding manufacturers confirmation letter action when viewing DR/SP case\r\n var dealType = oppDealdetails.dealType.name?oppDealdetails.dealType.name.toLowerCase():\"\";\r\n if (dealType === DealType.DealRegistration.toLowerCase() || dealType === DealType.SpecialPricing.toLowerCase())\r\n {\r\n let selectedDealValue = getSelectedDealDetails(oppDealdetails, oppDeal);\r\n if(selectedDealValue)\r\n { \r\n selectedDealValue.customerName = oppDeal.dealCustomers && oppDeal.dealCustomers[0]?oppDeal.dealCustomers[0].legalEntityName:\"\";\r\n let resellerAccount = oppDealdetails.opportunityAccounts?.filter(pt=>pt.partnerType == PartnerType.DMP || pt.partnerType == PartnerType.ADR);\r\n selectedDealValue.resellerName = resellerAccount && resellerAccount[0]?resellerAccount[0].accountCompanyName:\"\";\r\n }\r\n }\r\n setActionMenuConfig({ actionConfig: actionMenuConfig, selectedData: getSelectedDealDetails(oppDealdetails, oppDeal) });\r\n\r\n // to read case name with action from context and show in ui\r\n var dealNameAndAction = commonPPContextState.name ? commonPPContextState.name + \" | \" + getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ViewCaseText\", UIControlsText.ViewCaseText) + \" | \" + oppDeal.dealType?.name : \"\";\r\n setdealNameAction(dealNameAndAction);\r\n\r\n //to read case status from context\r\n var caseStatus = \"Case Status - \" + getStatusNameByCode(oppDeal.statusCode);\r\n setcaseStatus(caseStatus);\r\n\r\n let partnerdetails = setPartnerDetails(commonPPContextState, props.productTypes, props.countries);\r\n if (requester && requester.accounts) {\r\n setMPNOrgID(requester.accounts[0].organizationId || \"\");\r\n var MPNLocAndCountry = (requester.accounts[0].locationId || \"\").concat(\" / \").concat(requester.accounts[0].countryName || \"\")\r\n setMPNLocationID(MPNLocAndCountry);\r\n setCountry(requester.accounts[0].countryName || \"\");\r\n var RoleName = PartnerTypeName.get(requester?.partnerType || 0) || \"\";\r\n var RoleValue = PartnerTypeLabel.get(requester?.partnerType || 0) || \"\";\r\n setPartnerRole(RoleName.concat(\" (\", RoleValue, \")\"));\r\n }\r\n\r\n setIsRequestor(isRequestorViewing(commonPPContextState.submitterDetails?.email));\r\n commonPPContextDispatch({ type: CaseActionTypes.partnerDetailsChanged, partnerDetails: partnerdetails })\r\n setShowPartnerDetail(true)\r\n setLoadingData(false)\r\n\r\n //to show partner details only for Partners\r\n var ispartnerHidden = getFieldConfig(\"commonPP\", commonPPContextState.pageMode || \"\", oppDeal.statusCode || 0, oppDeal.dealType || {}, getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerInformation\", UIControlsText.PartnerInformation), FieldMapMode.Hidden) || false;\r\n\r\n setisPartnerDetailHidden(ispartnerHidden);\r\n }\r\n }\r\n\r\n }, [commonPPContextState.name, commonPPContextState.selectedOptyDealCaseNumber])\r\n\r\n const viewFormJson: IComponent = {\r\n type: 'FormGroup',\r\n data: {\r\n id: 'RootContainer',\r\n 'data-nextgen-parent-group':\"View Form Tabs\",\r\n 'data-nextgen-parentid':\"View Form Tabs\",\r\n components: [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"action-menu-details\",\r\n components: [{\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"partnerDetailsTooltip\",\r\n contolType: UIControlType.ActionMenu,\r\n actionMenuConfig\r\n }\r\n }]\r\n }\r\n },\r\n {\r\n type: 'Spinner',\r\n visible: loadingData,\r\n data: {\r\n id: 'SpinnerCaseDetailsSection'\r\n }\r\n },\r\n {\r\n type: 'CaseDetails',\r\n visible: showPartnerDetail,\r\n data: {\r\n id: 'CaseDetailsSection',\r\n caseName: dealNameAction,\r\n caseStatus: caseStatus,\r\n orgID: MPNOrgID,\r\n locationID: MPNLocationID,\r\n productGroup: commonPPContextState?.partnerDetails?.productGroupName,\r\n partnerRole: partnerRole,\r\n isPartner: isPartnerDetailHidden,\r\n isRequestor: isRequestor,\r\n country: country,\r\n labelText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerDetailsForCaseText\", UIControlsText.PartnerDetailsForCaseText)\r\n }\r\n },\r\n {\r\n type: \"PivotContainer\",\r\n visible: showPartnerDetail,\r\n data: {\r\n id: 'RootPivotContainerForAllTabs',\r\n baseState: props.pageContext,\r\n tabNames: commonPPContextState.pivotTabs,\r\n items: [\r\n CustomerDetails(),\r\n DealDetails({ verticals: props.verticals, dealTypes: props.dealTypes, countries: props.countries }),\r\n Channel(),\r\n ProductDetails(props.productTypes),\r\n PricingDiscount()\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackBackButton',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackItemViewBackButton\",\r\n components: [\r\n {\r\n type: 'PrimaryButton',\r\n data: {\r\n id: 'BackButton',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BackButtonText\", UIControlsText.BackButtonText),\r\n styles: PageStyles.commandButtonPadding,\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BackButtonText\", UIControlsText.BackButtonText),\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BackButtonText\", UIControlsText.BackButtonText),\r\n onClick: backToDashboard\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'footerPadding',\r\n components: [\r\n ]\r\n },\r\n },\r\n ]\r\n }\r\n }\r\n return viewFormJson;\r\n}","import { IRenderFunction, ITextFieldProps, Stack, StackItem } from \"@fluentui/react\";\r\nimport Tooltip from \"../../../components/shared/tooltip\";\r\nimport { DefaultPageStyles } from \"../../../content/styles/Page.styles\";\r\n\r\n/**\r\n * For textbox rendering the lable with tooltip.\r\n * @guidanceText {string}\r\n */\r\nconst DefaultLabelRendererText = (guidanceText?: string) => (\r\n props: ITextFieldProps,\r\n defaultRender: IRenderFunction<ITextFieldProps>): JSX.Element => {\r\n\r\n return (\r\n <>\r\n <Stack horizontal verticalAlign=\"center\" >\r\n <StackItem style={props?.required === true ? {} : DefaultPageStyles.paddingRight10}>\r\n <span>{defaultRender(props)}</span>\r\n </StackItem>\r\n <StackItem>\r\n <Tooltip {...{ guidanceText: guidanceText, id: props.id }}></Tooltip>\r\n </StackItem>\r\n\r\n </Stack>\r\n </>\r\n );\r\n};\r\n\r\nexport default DefaultLabelRendererText;","import { isCaseContainsDealType, isMultiDeal, stackItemCustomerStyles, stackItemStyles } from '../PricingProgramFormUtils';\r\nimport { UIControlsText, UIConfigIdentifierConstants } from '../../../../content/UIControlsText';\r\nimport { PageStyles, DealDetailsStyles } from '../../common/content/Page.Styles';\r\nimport { IChoiceGroupOption, IDropdownOption, MessageBarType } from '@fluentui/react';\r\nimport DefaultLabelRendererText from '../../../shared/ComponentTypes/DefaultLabelRendererText';\r\nimport { getsavedContext, isValidEmailWithSeperator, isLoggedInUserHasSubRole, isValidPostalCode, isValidInterger, getFieldConfigByState, getEntityDataFromSession, getRuleValidationMessage, isRequestorViewing } from '../../../../components/shared/common/util';\r\nimport { GuidanceText } from '../../../../models/GuidanceText';\r\nimport { useCommonPPContext } from '../../common/context/common-pp-context';\r\nimport { CaseActionTypes } from '../../common/reducer/CaseActionTypes';\r\nimport { StatePropertiesText } from '../../common/state/StatePropertiesText';\r\nimport { ErrorMessages } from '../../../../content/ErrorMessages';\r\nimport { useEffect, useState } from 'react';\r\nimport { IVertical } from '../../../../models/IVertical';\r\nimport { Guid } from '../../../../infrastructure/Guid';\r\nimport { ActionType } from '../../../../models/ActionType';\r\nimport { AttachmentDisplayMode } from '../../../../models/AttachmentDisplayMode';\r\nimport { IAttachment } from '../../../../models/IAttachment';\r\nimport { ArrayExtensions } from '../../../../infrastructure/ArrayExtensions';\r\nimport { JavaScriptExtensions } from '../../../../infrastructure/JavaScriptExtensions';\r\nimport { IDealInfoProps } from '../props/IDealInfoProps';\r\nimport React from 'react';\r\nimport { UserSubRole } from '../../../../models/UserSubRole';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport Moment from 'moment';\r\nimport { RfpType } from '../../../../models/RfpType';\r\nimport { IDealState } from '../../common/state/IDealState';\r\nimport { OpportunityDealStatusCodes } from '../../../../models/OpportunityDealStatusCodes';\r\nimport _ from 'lodash';\r\nimport { FieldMapMode } from '../../../../models/FieldMapMode';\r\nimport { DealType } from '../../../../models/DealType';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { PageMode } from '../../../../models/PageMode';\r\nimport { IOpportunityChannelContact } from '../../../../models/IOpportunityChannelContact';\r\n\r\nexport function DealDetails(props: IDealInfoProps) {\r\n const { commonPPContextState, commonPPContextDispatch } = useCommonPPContext();\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [isRfpRfqPublicTender, setIsRfpRfqPublicTender] = useState<boolean>(commonPPContextState?.opportunityRfp === RfpType.Yes);\r\n const [isRfpJustificationRequired, setIsRfpJustificationRequired] = useState<boolean>(true);\r\n const [rfpJustificationRequiredError, setrfpJustificationRequiredError] = useState<string>(\"\");\r\n const [attachmentList, setAttachmentList] = useState<Array<IAttachment | undefined>>(commonPPContextState.attachments?.filter(x => x?.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText)) || []);\r\n const [showMessageBar, setShowMessageBar] = React.useState<boolean>(true);\r\n const handleDismiss = React.useCallback(() => setShowMessageBar(false), []);\r\n const customerData = commonPPContextState.opportunityDeals && commonPPContextState.opportunityDeals[0]?.dealCustomers\r\n && commonPPContextState.opportunityDeals[0]?.dealCustomers[0];\r\n const [selectedOptyDeal, setSelectedOptyDeal] = React.useState<IDealState>();\r\n const savedAttachments = getsavedContext()?.attachments;\r\n const deviceShipToCountryName = customerData?.country;\r\n const pivotTab = commonPPContextState.pivotTabs?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInformationText\", UIControlsText.DealInformationText));\r\n const isMultiDealType: boolean = isMultiDeal(commonPPContextState);\r\n const [dealVerticalValue, setDealVerticalValue] = useState<string>('');\r\n const [emailValue, setEmailValue] = useState<string>(commonPPContextState && commonPPContextState?.opportunityChannelContacts?.find(t => t.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText))\r\n ?.channelContactEmails || \"\");\r\n\r\n useEffect(() => {\r\n const dealData = commonPPContextState?.opportunityDeals.find((t: IDealState) => t.statusCode !== OpportunityDealStatusCodes.Draft);\r\n if(dealData && !_.isEmpty(dealData)) { \r\n setSelectedOptyDeal(commonPPContextState?.opportunityDeals && (commonPPContextState?.opportunityDeals?.find(t => t.name === commonPPContextState?.selectedOptyDealCaseNumber) || {}));\r\n }\r\n else {\r\n setSelectedOptyDeal({});\r\n }\r\n let dealVerticalVal = props?.verticals && commonPPContextState.opportunityDeals && props?.verticals.find(pt => pt.id === commonPPContextState?.opportunityDeals[0]?.dealVertical ? pt.name : '');\r\n setDealVerticalValue(dealVerticalVal?.name || '');\r\n }, [commonPPContextState?.selectedOptyDealCaseNumber]);\r\n\r\n useEffect(() => {\r\n commonPPContextState?.opportunityChannelContacts \r\n && commonPPContextState.opportunityChannelContacts?.length \r\n && setEmailValue(commonPPContextState?.opportunityChannelContacts\r\n .find(t => t.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText))\r\n ?.channelContactEmails || \"\");\r\n \r\n }, [commonPPContextState?.opportunityChannelContacts]);\r\n\r\n useEffect(() => {\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(deviceShipToCountryName)) {\r\n var countryId = props?.countries?.find(t => t?.countryName?.toLowerCase() === deviceShipToCountryName?.toLowerCase())?.countryId;\r\n commonPPContextDispatch({ type: CaseActionTypes.dealAddressValueChanged, dealInputControlValue: { key: StatePropertiesText.DeviceShipToCountryText, value: countryId } })\r\n }\r\n }, [deviceShipToCountryName]);\r\n\r\n useEffect(() => {\r\n setIsRfpRfqPublicTender(commonPPContextState?.opportunityRfp === RfpType.Yes);\r\n }, [commonPPContextState?.opportunityRfp]);\r\n\r\n useEffect(() => {\r\n setrfpJustificationRequiredError(pivotTab?.errors?.get(StatePropertiesText.RfpJustification) || \"\");\r\n }, [pivotTab?.errors?.get(StatePropertiesText.RfpJustification)]);\r\n\r\n useEffect(() => {\r\n let dealAttachments = commonPPContextState?.attachments?.filter(t => t?.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText));\r\n if (dealAttachments && dealAttachments?.length > 0) {\r\n setAttachmentList(dealAttachments);\r\n setIsRfpJustificationRequired(false);\r\n setErrorsDataIntoContext('', StatePropertiesText.RfpJustification || \"\");\r\n }\r\n else {\r\n setIsRfpJustificationRequired(true);\r\n }\r\n\r\n }, [commonPPContextState.attachments, isRfpRfqPublicTender]);\r\n\r\n const isFieldDisabled = (properId: string): boolean | undefined => {\r\n const isFieldDisabled: boolean | undefined = getFieldConfigByState(commonPPContextState, properId, FieldMapMode.Disable);\r\n return (isFieldDisabled === true) || (selectedOptyDeal?.isRenewed === true && isMultiDealType)\r\n }\r\n\r\n /**\r\n * Attachment change Callback function.\r\n * @param {Array<IAttachment | undefined>} attachmentList Updated list of attachments \r\n */\r\n const handleAttachmentChanges = (attachmentList: Array<IAttachment | undefined>): void => {\r\n setAttachmentList(attachmentList.filter(item => item?.action !== ActionType.Delete));\r\n let otherAttachments = commonPPContextState.attachments?.filter(x => x?.source !== getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText)) || [];\r\n commonPPContextDispatch({ type: CaseActionTypes.attachmentChanged, attachments: ArrayExtensions.mergeArrays(otherAttachments, attachmentList) });\r\n }\r\n\r\n const onDealVerticalBlur = () => {\r\n let dealVertical = commonPPContextState.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealVertical;\r\n let message : string = '';\r\n if (JavaScriptExtensions.isEmptyOrNullOrUndefined(dealVertical)) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoDealVerticalRequired\", ErrorMessages.DealInfoDealVerticalRequired);\r\n }\r\n\r\n setErrorsDataIntoContext(message, StatePropertiesText.DealVerticalText || \"\");\r\n return;\r\n }\r\n\r\n /**\r\n * Deal Deatils Textbox Change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n * @param {string} targetPropertyName property name\r\n * @param {string} dealId property name\r\n */\r\n const onDealTextBoxChange = (targetPropertyName?: string, dealId?: string) => (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {\r\n if(!JavaScriptExtensions.isEmptyOrNullOrUndefined(newValue) && !JavaScriptExtensions.isEmptyOrNullOrUndefined(pivotTab?.errors?.get(targetPropertyName || \"\"))) {\r\n setErrorsDataIntoContext('', targetPropertyName || \"\");\r\n }\r\n\r\n commonPPContextDispatch({ type: CaseActionTypes.dealFieldValueChanged, dealInputControlValue: { key: targetPropertyName, value: newValue, id: dealId } })\r\n }\r\n\r\n /**\r\n * Deal Deatils Volume Change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n * @param {string} targetPropertyName property name\r\n * @param {string} dealId property name\r\n */\r\n const onDealVolumeChange = (targetPropertyName?: string, dealId?: string) => (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {\r\n const re = /[^0-9]/g;\r\n newValue = newValue?.replace(re,'') || \"\";\r\n if((isValidInterger(newValue) && newValue.indexOf('+') < 0 && newValue.indexOf('-') < 0 && newValue?.length <= 10) || newValue ===\"\") {\r\n commonPPContextDispatch({ type: CaseActionTypes.dealFieldValueChanged, dealInputControlValue: { key: targetPropertyName, value: newValue, id: dealId } })\r\n }\r\n if(!JavaScriptExtensions.isEmptyOrNullOrUndefined(newValue) && !JavaScriptExtensions.isEmptyOrNullOrUndefined(pivotTab?.errors?.get(targetPropertyName || \"\"))) {\r\n setErrorsDataIntoContext('', targetPropertyName || \"\");\r\n }\r\n } \r\n \r\n /**\r\n * Deal Address Textbox Change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n * @param {string} targetPropertyName property name\r\n */\r\n const onDealAddressTextBoxChange = (targetPropertyName?: string, dealId?: string) => (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {\r\n if(!JavaScriptExtensions.isEmptyOrNullOrUndefined(newValue) && !JavaScriptExtensions.isEmptyOrNullOrUndefined(pivotTab?.errors?.get(targetPropertyName || \"\"))) {\r\n setErrorsDataIntoContext('', targetPropertyName || \"\");\r\n }\r\n\r\n commonPPContextDispatch({ type: CaseActionTypes.dealAddressValueChanged, dealInputControlValue: { key: targetPropertyName, value: newValue, id: dealId } })\r\n }\r\n\r\n /**\r\n * Get PostalCode TextField ErrorMessage.\r\n * @method\r\n * @param {string>} value Text Box value.\r\n * @@returns {string} Error Message.\r\n */\r\n const getPostalCodeTextFieldErrorMessage = () => (value: string): string => {\r\n let message = '';\r\n if (!value) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"PostalCodeRequired\", ErrorMessages.PostalCodeRequired);\r\n } else {\r\n let isInvalid = !isValidPostalCode(value);\r\n if (isInvalid) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidPostalCodeError\", ErrorMessages.ValidPostalCodeError);\r\n }\r\n }\r\n\r\n setErrorsDataIntoContext(message, StatePropertiesText.DeviceShipToPostalCodeText || \"\");\r\n return message;\r\n } \r\n\r\n /**\r\n * Customer Textbox Change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n * @param {string} targetPropertyName property name\r\n */\r\n const onCusotmerTextBoxChange = (targetPropertyName?: string, dealId?: string) => (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {\r\n if(!JavaScriptExtensions.isEmptyOrNullOrUndefined(newValue) && !JavaScriptExtensions.isEmptyOrNullOrUndefined(pivotTab?.errors?.get(targetPropertyName || \"\"))) {\r\n setErrorsDataIntoContext('', targetPropertyName || \"\");\r\n }\r\n\r\n commonPPContextDispatch({ type: CaseActionTypes.dealCustomerValueChanged, dealInputControlValue: { key: targetPropertyName, value: newValue, id: dealId } })\r\n }\r\n\r\n /**\r\n * Textbox EmailCCNotification Change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onEmailCCNotificationTextBoxChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {\r\n setEmailValue(event.currentTarget.value)\r\n }\r\n\r\n /**\r\n * Textbox EmailCCNotification Blur Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onEmailCCNotificationTextBoxBlur = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {\r\n newValue = newValue || event?.currentTarget?.value;\r\n const allChannelContacts: IOpportunityChannelContact[] = commonPPContextState.opportunityChannelContacts || [];\r\n const isComplete = isValidEmailWithSeperator(newValue || \"\", ';');\r\n let dealSource = getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText);\r\n \r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(newValue)) {\r\n setEmailValue(newValue?.replace(/,/g, ';'));\r\n // Find all matching entries for the given dealSource\r\n let matchingCCDealContacts: IOpportunityChannelContact[] = allChannelContacts.filter(c => c.source === dealSource) || [];\r\n if (matchingCCDealContacts?.length > 0) {\r\n // If there are matching entries, update them\r\n matchingCCDealContacts?.forEach((emailCCDealContact: IOpportunityChannelContact) => {\r\n emailCCDealContact.channelContactEmails = newValue?.replace(/,/g, ';');\r\n emailCCDealContact.isComplete = true;\r\n });\r\n } else {\r\n // Otherwise, create a new entry with the email value\r\n allChannelContacts.push({\r\n action: ActionType.Add,\r\n id: Guid.newGuid(),\r\n source: dealSource,\r\n channelContactEmails: newValue?.replace(/,/g, ';'),\r\n isComplete: isComplete\r\n });\r\n \r\n // Update the state with the new allChannelContacts\r\n commonPPContextDispatch({ type: CaseActionTypes.channelContactChanged, channelContacts: allChannelContacts });\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Dropdown change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {IDropdownOption} item Clicked Option from Dropdown.\r\n * @param {string} targetPropertyName property name\r\n * @param {string} dealId property name\r\n */\r\n const onDealDropDownChange = (targetPropertyName?: string, dealId?: string) => (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n setErrorsDataIntoContext('', targetPropertyName || \"\");\r\n commonPPContextDispatch({ type: CaseActionTypes.dealFieldValueChanged, dealInputControlValue: { key: targetPropertyName, value: item.key, id: dealId } })\r\n }\r\n }\r\n\r\n /**\r\n * Rfp Rfq PublicTender change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {IChoiceGroupOption} item Clicked Option from ChoiceGroup.\r\n */\r\n const onRfpRfqPublicTenderChange = (event: React.FormEvent<HTMLElement | HTMLInputElement>, item?: IChoiceGroupOption): void => {\r\n if (item) {\r\n setIsRfpRfqPublicTender(item.key.toString() === RfpType.Yes.toString())\r\n commonPPContextDispatch({ type: CaseActionTypes.rfpRfqPublicTenderValueChanged, inputNumber: item.key })\r\n if (item.key.toString() === RfpType.No.toString()) {\r\n commonPPContextDispatch({ type: CaseActionTypes.rfpRfqPublicTenderJustificationValueChanged, inputValue: \"\" });\r\n setErrorsDataIntoContext('', StatePropertiesText.RfpJustification || \"\");\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Rfp Rfq PublicTender Justification Textbox Change Callback function.\r\n * @method\r\n * @param {React.FormEvent<HTMLDivElement>} event Element Click Event.\r\n * @param {string} newValue updated value from textField.\r\n */\r\n const onRfpRfqPublicTenderJustificationValueChanged = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {\r\n if(!JavaScriptExtensions.isEmptyOrNullOrUndefined(newValue) && !JavaScriptExtensions.isEmptyOrNullOrUndefined(pivotTab?.errors?.get(StatePropertiesText.RfpJustification))) {\r\n setErrorsDataIntoContext('', StatePropertiesText.RfpJustification);\r\n }\r\n commonPPContextDispatch({ type: CaseActionTypes.rfpRfqPublicTenderJustificationValueChanged, inputValue: newValue })\r\n }\r\n\r\n /**\r\n * Get TextField ErrorMessage.\r\n * @method\r\n * @param {string>} value Text Box value.\r\n * @@returns {string} Error Message.\r\n */\r\n const getTextFieldErrorMessage = (errorMessage: string, targetPropertyId: string) => (value: string): string => {\r\n const message = !value ? errorMessage : '';\r\n setErrorsDataIntoContext(message, targetPropertyId)\r\n return message;\r\n };\r\n\r\n const setErrorsDataIntoContext = (message: string, targetPropertyId: string) => {\r\n const pivotTabsData = commonPPContextState.pivotTabs;\r\n var pivotTab = pivotTabsData?.find(t=> t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInformationText\", UIControlsText.DealInformationText));\r\n if(JavaScriptExtensions.isEmptyOrNullOrUndefined(message)) {\r\n pivotTab?.errors?.delete(targetPropertyId);\r\n }\r\n else {\r\n pivotTab?.errors?.set(targetPropertyId, message);\r\n }\r\n \r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabsData })\r\n }\r\n\r\n /**\r\n * Get Email Field Validate ErrorMessage.\r\n * @method\r\n * @param {string} value Text Box value.\r\n * @returns {string} Error Message.\r\n */\r\n const getEmailFieldErrorMessage = (errorMessage: string) => (value: string): string => {\r\n let message = '';\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(value)) {\r\n message = !isValidEmailWithSeperator(value, ';') ? errorMessage : '';\r\n }\r\n\r\n setErrorsDataIntoContext(message, StatePropertiesText.EmailCCNotificationRecipients);\r\n return message;\r\n };\r\n\r\n /**\r\n * Get Justification Field Validate ErrorMessage.\r\n * @method\r\n * @param {string>} value Text Box value.\r\n * @returns {string} Error Message.\r\n */\r\n const getTextFieldJustificationErrorMessage = (errorMessage: string) => (value: string): string => {\r\n let message = ''\r\n if (!value && isRfpJustificationRequired) {\r\n message = errorMessage;\r\n }\r\n else {\r\n message = '';\r\n }\r\n\r\n setErrorsDataIntoContext(message, StatePropertiesText.RfpJustification);\r\n return message;\r\n };\r\n const checkRequestorViewing = () => {\r\n return isRequestorViewing(commonPPContextState.submitterDetails?.email);\r\n }\r\n const DealDetailsJson = [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackTileForDeal\",\r\n 'data-nextgen-parent-group': \"Create - Deal Details\",\r\n 'data-nextgen-parentid': \"Create - Deal Details\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"CreateCardForDeal\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsIcon\", UIControlsText.DealDetailsIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'DealsHeaderGuidance',\r\n vertical: true,\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackitemForGuidance\",\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemDealInfoMessageBar',\r\n styles: stackItemStyles,\r\n visible: !JavaScriptExtensions.isNullOrUndfinedOrEmpty(customerData) && !customerData?.isManaged && showMessageBar,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"DealInfoMessageBar\",\r\n contolType: UIControlType.MessageBar,\r\n message: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"DealInfoNewCustomerWarning\", GuidanceText.DealInfoNewCustomerWarning),\r\n messageBarType: MessageBarType.info,\r\n handleDismiss: handleDismiss,\r\n styles: DealDetailsStyles.customerWarningMessageWidth\r\n }\r\n },\r\n \r\n ]\r\n },\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForDealitems\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: UIConfigIdentifierConstants.StackDealsNameRowId,\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !isFieldDisabled(UIConfigIdentifierConstants.StackDealsNameRowId),\r\n data: {\r\n id: \"DealNameTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealNamePlaceHolderTextExample\", UIControlsText.DealNamePlaceHolderTextExample),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n onGetErrorMessage: getTextFieldErrorMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoDealNameRequired\", ErrorMessages.DealInfoDealNameRequired), StatePropertiesText.DealNameText),\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState && commonPPContextState.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealName : selectedOptyDeal?.dealName,\r\n onChange: onDealTextBoxChange(StatePropertiesText.DealNameText, selectedOptyDeal?.id),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.DealNameText)\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(UIConfigIdentifierConstants.StackDealsNameRowId),\r\n data: {\r\n id: \"DealNameTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealNameText\", UIControlsText.DealNameText),\r\n contolType: UIControlType.LabelValueView,\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState && commonPPContextState.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealName : selectedOptyDeal?.dealName,\r\n }\r\n },\r\n \r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: \"StackItemForDealVerticalDropdown\",\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"Dropdown\",\r\n visible: !isFieldDisabled(UIConfigIdentifierConstants.StackItemForDealVerticalDropdownId),\r\n data: {\r\n id: \"dealVerticalDropdown\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText),\r\n styles: PageStyles.dropdownStyles,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealVerticalPlaceHolderText\", UIControlsText.DealVerticalPlaceHolderText),\r\n required: true,\r\n options: (props?.verticals && props?.verticals.map((pt: IVertical) => ({ key: pt.id, text: pt.name } as IDropdownOption))) || [],\r\n selectedKey: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealVertical : selectedOptyDeal?.dealVertical,\r\n onBlur: onDealVerticalBlur,\r\n onChange: onDealDropDownChange(StatePropertiesText.DealVerticalText),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.DealVerticalText)\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(UIConfigIdentifierConstants.StackItemForDealVerticalDropdownId),\r\n data: {\r\n id: \"dealVerticalDropdown\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealVerticalText\", UIControlsText.DealVerticalText),\r\n contolType: UIControlType.LabelValueView,\r\n value: (props.verticals && props.verticals?.map((item : IVertical) => ((item?.id === (commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealVertical)) ? item.name : '') as string)), \r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: \"StackContainerForOverviewAndDomain\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackItemDealOverviewId,\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !getFieldConfigByState(commonPPContextState, UIConfigIdentifierConstants.StackItemDealOverviewId, FieldMapMode.Disable),\r\n data: {\r\n id: UIConfigIdentifierConstants.DealOverviewTextFieldId,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DealOverviewPlaceholderTextExample\", UIControlsText.DealOverviewPlaceholderTextExample),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n multiline: true,\r\n rows: 2,\r\n resizable: false,\r\n maxLength: 5000,\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? (commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealOverview) : selectedOptyDeal?.dealOverview,\r\n onGetErrorMessage: getTextFieldErrorMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoDealOverviewRequired\", ErrorMessages.DealInfoDealOverviewRequired), StatePropertiesText.DealOverviewText),\r\n onRenderLabel: DefaultLabelRendererText(isLoggedInUserHasSubRole(UserSubRole.MSStoreUser) ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"DealInfoDealOverviewForMSStore\", GuidanceText.DealInfoDealOverviewForMSStore) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"DealInfoDealOverview\", GuidanceText.DealInfoDealOverview)),\r\n onChange: onDealTextBoxChange(StatePropertiesText.DealOverviewText, selectedOptyDeal?.id),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.DealOverviewText)\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: getFieldConfigByState(commonPPContextState, UIConfigIdentifierConstants.StackItemDealOverviewId, FieldMapMode.Disable),\r\n data: {\r\n id: UIConfigIdentifierConstants.DealOverviewTextFieldId,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealOverviewText\", UIControlsText.DealOverviewText),\r\n contolType: UIControlType.LabelValueView,\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? (commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealOverview) : selectedOptyDeal?.dealOverview,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackContainerDomain\",\r\n styles: stackItemCustomerStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !isFieldDisabled(UIConfigIdentifierConstants.StackContainerDomainId),\r\n data: {\r\n id: \"CustomerDomainTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"CustomerDomainPlaceholderTextExample\", UIControlsText.CustomerDomainPlaceholderTextExample),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n onGetErrorMessage: getTextFieldErrorMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoCustomerDomainRequired\", ErrorMessages.DealInfoCustomerDomainRequired), StatePropertiesText.CustomerDomain),\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealCustomers && commonPPContextState?.opportunityDeals[0]?.dealCustomers[0]?.dealCustomerDomain: selectedOptyDeal?.dealCustomers && selectedOptyDeal?.dealCustomers[0]?.dealCustomerDomain,\r\n onRenderLabel: DefaultLabelRendererText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"DealInfoCustomerDomain\", getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"DealInfoCustomerDomain\", GuidanceText.DealInfoCustomerDomain))),\r\n onChange: onCusotmerTextBoxChange(StatePropertiesText.CustomerDomain, selectedOptyDeal?.id),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.CustomerDomain)\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(UIConfigIdentifierConstants.StackContainerDomainId),\r\n data: {\r\n id: \"CustomerDomainTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDomainText\", UIControlsText.CustomerDomainText),\r\n contolType: UIControlType.LabelValueView,\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealCustomers && commonPPContextState?.opportunityDeals[0]?.dealCustomers[0]?.dealCustomerDomain: selectedOptyDeal?.dealCustomers && selectedOptyDeal?.dealCustomers[0]?.dealCustomerDomain,\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackItemColForDeal\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n //wrap: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForStartDate',\r\n styles: stackItemStyles,\r\n //align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CaseStartDateTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInfoCaseStartDateText\", UIControlsText.DealInfoCaseStartDateText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInfoCaseStartDateText\", UIControlsText.DealInfoCaseStartDateText),\r\n //styles: PageStyles.textFieldStylesOneColumn,\r\n value: selectedOptyDeal && selectedOptyDeal?.caseStartDate && Moment(selectedOptyDeal?.caseStartDate).format('MM/DD/YYYY'),\r\n contolType: UIControlType.LabelValueView,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForCaseDealEndDate',\r\n styles: stackItemStyles,\r\n //align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CaseExpireTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInfoEndDateText\", UIControlsText.DealInfoEndDateText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInfoEndDateText\", UIControlsText.DealInfoEndDateText),\r\n //styles: PageStyles.textFieldStylesOneColumn,\r\n value: selectedOptyDeal && selectedOptyDeal?.caseEndDate && Moment(selectedOptyDeal?.caseEndDate).format('MM/DD/YYYY'),\r\n contolType: UIControlType.LabelValueView,\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \r\n ]\r\n }\r\n } \r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackTileForAddressForCreate\",\r\n //disableShrink: true,\r\n //wrap: true,\r\n horizontal: true,\r\n verticalAlign:\"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForAddressForCreate\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToAddressCardText\", UIControlsText.DeviceShipToAddressCardText),\r\n iconName: UIControlsText.AddressIcon,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackDeviceShipToAddressRowId,\r\n //wrap: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemForShipAddress',\r\n horizontal: true,\r\n //wrap: true,\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackItemForDeviceShipTo\",\r\n styles: stackItemStyles,\r\n align: \"start\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !isFieldDisabled(\"StackItemForShipAddress\"),\r\n data: {\r\n id: \"DeviceShipToAddressTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToAddressText\", UIControlsText.DeviceShipToAddressText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToAddressText\", UIControlsText.DeviceShipToAddressText),\r\n styles: PageStyles.textFieldStylesTwoColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DeviceShipToAddressPlaceholderTextExample\", UIControlsText.DeviceShipToAddressPlaceholderTextExample),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 1000,\r\n onGetErrorMessage: getTextFieldErrorMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoDeviceShipToAddressRequired\", ErrorMessages.DealInfoDeviceShipToAddressRequired), StatePropertiesText.DeviceShipToAddressText),\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealAddress && commonPPContextState?.opportunityDeals[0]?.dealAddress?.address1 : selectedOptyDeal?.dealAddress?.address1,\r\n onChange: onDealAddressTextBoxChange(StatePropertiesText.DeviceShipToAddressText, selectedOptyDeal?.id),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.DeviceShipToAddressText)\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(\"StackItemForShipAddress\"),\r\n data: {\r\n id: \"DeviceShipToAddressTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToAddressText\", UIControlsText.DeviceShipToAddressText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToAddressText\", UIControlsText.DeviceShipToAddressText),\r\n contolType: UIControlType.LabelValueView,\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealAddress && commonPPContextState?.opportunityDeals[0]?.dealAddress?.address1 : selectedOptyDeal?.dealAddress?.address1,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n styles: stackItemStyles,\r\n data: {\r\n id: 'StackItemForCountry',\r\n styles: stackItemStyles,\r\n align: \"end\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CountryTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Country\", UIControlsText.Country),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Country\", UIControlsText.Country),\r\n value: deviceShipToCountryName,\r\n contolType: UIControlType.LabelValueView,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForFirstAddressRow\",\r\n horizontal: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForCityTextField',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !isFieldDisabled(\"StackItemForCity\"),\r\n data: {\r\n id: \"CityTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n styles: PageStyles.textFieldStylesWidth146,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DeviceShipToCityPlaceholderTextExample\", UIControlsText.DeviceShipToCityPlaceholderTextExample),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n onGetErrorMessage: getTextFieldErrorMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoCityRequired\", ErrorMessages.DealInfoCityRequired), StatePropertiesText.DeviceShipToCityText),\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealAddress && commonPPContextState?.opportunityDeals[0]?.dealAddress?.city : selectedOptyDeal?.dealAddress?.city,\r\n onChange: onDealAddressTextBoxChange(StatePropertiesText.DeviceShipToCityText, selectedOptyDeal?.id),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.DeviceShipToCityText)\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(\"StackItemForCity\"),\r\n data: {\r\n id: \"CityTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n contolType: UIControlType.LabelValueView,\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealAddress && commonPPContextState?.opportunityDeals[0]?.dealAddress?.city : selectedOptyDeal?.dealAddress?.city,\r\n }\r\n },\r\n ]\r\n }\r\n }, \r\n { \r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForStateProvince',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !isFieldDisabled(\"StackItemForStateProvince\"),\r\n data: {\r\n id: \"StateProvinceTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToStateProvinceText\", UIControlsText.DeviceShipToStateProvinceText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToStateProvinceText\", UIControlsText.DeviceShipToStateProvinceText),\r\n styles: PageStyles.textFieldStylesWidth146,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DeviceShipToStatePlaceholderTextExample\", UIControlsText.DeviceShipToStatePlaceholderTextExample),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n onGetErrorMessage: getTextFieldErrorMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoStateRequired\", ErrorMessages.DealInfoStateRequired), StatePropertiesText.DeviceShipToStateProvinceText),\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealAddress && commonPPContextState?.opportunityDeals[0]?.dealAddress?.stateOrProvince : selectedOptyDeal?.dealAddress?.stateOrProvince,\r\n onChange: onDealAddressTextBoxChange(StatePropertiesText.DeviceShipToStateProvinceText, selectedOptyDeal?.id),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.DeviceShipToStateProvinceText)\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(\"StackItemForStateProvince\"), \r\n data: {\r\n id: \"StateProvinceTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToStateProvinceText\", UIControlsText.DeviceShipToStateProvinceText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToStateProvinceText\", UIControlsText.DeviceShipToStateProvinceText),\r\n contolType: UIControlType.LabelValueView,\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealAddress && commonPPContextState?.opportunityDeals[0]?.dealAddress?.stateOrProvince : selectedOptyDeal?.dealAddress?.stateOrProvince,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForSecondAddressRow\",\r\n //wrap: true,\r\n horizontal: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForOther',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !isFieldDisabled(\"StackItemForPostalCode\"),\r\n data: {\r\n id: \"PostalCodeTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToPostalCodeText\", UIControlsText.DeviceShipToPostalCodeText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DeviceShipToPostalCodeText\", UIControlsText.DeviceShipToPostalCodeText),\r\n styles: PageStyles.textFieldStylesWidth146,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DeviceShipTopostalPlaceholderTextExample\", UIControlsText.DeviceShipTopostalPlaceholderTextExample),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 20,\r\n onGetErrorMessage: getPostalCodeTextFieldErrorMessage(),\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealAddress && commonPPContextState?.opportunityDeals[0]?.dealAddress?.postalCode : selectedOptyDeal?.dealAddress?.postalCode,\r\n onChange: onDealAddressTextBoxChange(StatePropertiesText.DeviceShipToPostalCodeText, selectedOptyDeal?.id),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.DeviceShipToPostalCodeText)\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: isFieldDisabled(\"StackItemForPostalCode\"),\r\n data: {\r\n id: \"PostalCodeTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PostalCode\", UIControlsText.PostalCode),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PostalCode\", UIControlsText.PostalCode),\r\n contolType: UIControlType.LabelValueView,\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.dealAddress && commonPPContextState?.opportunityDeals[0]?.dealAddress?.postalCode : selectedOptyDeal?.dealAddress?.postalCode,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'emptyHeight20',\r\n components: [\r\n ]\r\n },\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n \r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackItemForCreateDealVol\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForCommittedDealVolume\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CommittedDealVolumeText\", UIControlsText.CommittedDealVolumeText),\r\n iconName: UIControlsText.CommittedDealVolumeIcon,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemCommittedDealVolume',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"CommittedDealVolume\",\r\n data: {\r\n required: true,\r\n opportunityDeals: commonPPContextState?.opportunityDeals,\r\n pageMode: commonPPContextState?.pageMode,\r\n dealTypes: props.dealTypes,\r\n handleDealQuantityChanges: onDealVolumeChange,\r\n setErrorsDataIntoContext: setErrorsDataIntoContext,\r\n selectedOptyDealCaseNumber: commonPPContextState?.selectedOptyDealCaseNumber,\r\n pivotTabContext: pivotTab,\r\n partnerDetails: commonPPContextState?.partnerDetails\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackTileItemForCreateCase\",\r\n horizontal: true,\r\n disableShrink: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"CreateCardForCase\",\r\n baseState: commonPPContextState,\r\n name: \"Case Details\",\r\n iconName: UIControlsText.CaseDetailsIcon,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackItemEmailCCNotificationRecipientsId,\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !getFieldConfigByState(commonPPContextState, UIConfigIdentifierConstants.StackItemEmailCCNotificationRecipientsId, FieldMapMode.Disable) && checkRequestorViewing(),\r\n data: {\r\n id: \"EmailCCNotificationRecipient\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n styles: PageStyles.textFieldPanelWidth,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"EmailCCRecipientsPlaceholderTextExample\", UIControlsText.EmailCCRecipientsPlaceholderTextExample),\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n multiline: true,\r\n rows: 1,\r\n resizable: false,\r\n maxLength: 5000,\r\n onGetErrorMessage: getEmailFieldErrorMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidEmailError\", ErrorMessages.ValidEmailError)),\r\n value: emailValue,\r\n onChange: onEmailCCNotificationTextBoxChange,\r\n onBlur: onEmailCCNotificationTextBoxBlur,\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.EmailCCNotificationRecipients)\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: getFieldConfigByState(commonPPContextState, UIConfigIdentifierConstants.StackItemEmailCCNotificationRecipientsId, FieldMapMode.Disable),\r\n data: {\r\n id: \"EmailCCNotificationRecipient\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EmailCCNotificationRecipients\", UIControlsText.EmailCCNotificationRecipients),\r\n contolType: UIControlType.LabelValueView,\r\n value: commonPPContextState?.opportunityChannelContacts && commonPPContextState?.opportunityChannelContacts.find(t => t.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText))?.channelContactEmails,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackForCaseDecisionRowId,\r\n styles: stackItemStyles,\r\n //align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"CaseDecisionJustificationTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseDecisionJustification\", UIControlsText.CaseDecisionJustification),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseDecisionJustification\", UIControlsText.CaseDecisionJustification),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n value: selectedOptyDeal && selectedOptyDeal?.closureDecisionComments,\r\n contolType: UIControlType.LabelValueView,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"emptyHeight10\",\r\n compoennts: [\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackItemTileForRFPRFQTenderForCreate\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n visible: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? isCaseContainsDealType(commonPPContextState, DealType.DealRegistration) : selectedOptyDeal?.dealType?.name === DealType.DealRegistration,\r\n data: {\r\n id: \"CustomTileCardComponentForPreSales\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PreSalesActivitiesText\", UIControlsText.PreSalesActivitiesText),\r\n iconName: UIControlsText.PreSalesIcon,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'DealsPreSalesStack',\r\n horizontal: true,\r\n wrap: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackItemPreSalesActivitiesId,\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !getFieldConfigByState(commonPPContextState, \"StackItemPreSalesActivities\", FieldMapMode.Disable),\r\n data: {\r\n id: \"dealPreSalesActivities\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PreSalesActivitiesText\", UIControlsText.PreSalesActivitiesText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PreSalesActivitiesText\", UIControlsText.PreSalesActivitiesText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"PreSalesActivitiesPlaceholderText\", UIControlsText.PreSalesActivitiesPlaceholderText),\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n required: true,\r\n maxLength: 5000,\r\n multiline: true,\r\n rows: 3,\r\n resizable: false,\r\n onGetErrorMessage: getTextFieldErrorMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoPreSalesRequired\", ErrorMessages.DealInfoPreSalesRequired), StatePropertiesText.PreSalesActivitiesText),\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? (commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.preSalesActivity) : selectedOptyDeal?.preSalesActivity,\r\n onChange: onDealTextBoxChange(StatePropertiesText.PreSalesActivitiesText, selectedOptyDeal?.id),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.PreSalesActivitiesText)\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: getFieldConfigByState(commonPPContextState, \"StackItemPreSalesActivities\", FieldMapMode.Disable),\r\n data: {\r\n id: \"dealPreSalesActivities\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PreSalesActivitiesText\", UIControlsText.PreSalesActivitiesText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PreSalesActivitiesText\", UIControlsText.PreSalesActivitiesText),\r\n contolType: UIControlType.LabelValueView,\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? (commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.preSalesActivity) : selectedOptyDeal?.preSalesActivity,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackTileForRfQ\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"CreateCardForRFP\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderText\", UIControlsText.RfpRfqPublicTenderText),\r\n iconName: UIControlsText.PublicTenderPolicyIcon,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'DealsRFPRFQTab',\r\n //wrap: true,\r\n horizontal: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"ChoiceGroup\",\r\n visible: !getFieldConfigByState(commonPPContextState, \"RfpRfqPublicTender\", FieldMapMode.Disable) ,\r\n data: {\r\n id: UIConfigIdentifierConstants.RfpRfqPublicTenderId,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderText\", UIControlsText.RfpRfqPublicTenderText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderText\", UIControlsText.RfpRfqPublicTenderText),\r\n styles: DealDetailsStyles.horizontalChoiceGroupSmallColumn,\r\n options: [{ key: RfpType.Yes, text: UIControlsText.YesText, styles: { field: DealDetailsStyles.fontSize12 } }, { key: RfpType.No, text: UIControlsText.NoText, styles: { field: DealDetailsStyles.marginLeftFontSize } }],\r\n required: true,\r\n defaultSelectedKey: RfpType.No,\r\n selectedKey: commonPPContextState?.opportunityRfp,\r\n onChange: onRfpRfqPublicTenderChange\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: getFieldConfigByState(commonPPContextState, \"RfpRfqPublicTender\", FieldMapMode.Disable),\r\n data: {\r\n id: UIConfigIdentifierConstants.RfpRfqPublicTenderId,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderText\", UIControlsText.RfpRfqPublicTenderText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderText\", UIControlsText.RfpRfqPublicTenderText),\r\n contolType: UIControlType.LabelValueView,\r\n value: commonPPContextState.opportunityRfp === RfpType.Yes ? UIControlsText.YesText : UIControlsText.NoText, \r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackItemPublicTenderJustificationId,\r\n styles: stackItemStyles,\r\n visible: isRfpRfqPublicTender,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !getFieldConfigByState(commonPPContextState, \"RfpRfqPublicTender\", FieldMapMode.Disable),\r\n data: {\r\n id: \"RfpRfqPublicTenderJustificationText\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderJustificationText\", UIControlsText.RfpRfqPublicTenderJustificationText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderJustificationText\", UIControlsText.RfpRfqPublicTenderJustificationText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"RfpRfqPublicTenderJustificationPlaceholderText\", UIControlsText.RfpRfqPublicTenderJustificationPlaceholderText),\r\n required: isRfpJustificationRequired,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n multiline: true,\r\n rows: 3,\r\n resizable: false,\r\n maxLength: 5000,\r\n errorMessage: rfpJustificationRequiredError,\r\n value: commonPPContextState?.rfpJustification,\r\n onRenderLabel: DefaultLabelRendererText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"DealInfoPublicTenderJustification\", GuidanceText.DealInfoPublicTenderJustification)),\r\n onChange: onRfpRfqPublicTenderJustificationValueChanged,\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: getFieldConfigByState(commonPPContextState, \"RfpRfqPublicTender\", FieldMapMode.Disable),\r\n data: {\r\n id: \"RfpRfqPublicTenderJustificationText\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderJustificationText\", UIControlsText.RfpRfqPublicTenderJustificationText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RfpRfqPublicTenderJustificationText\", UIControlsText.RfpRfqPublicTenderJustificationText),\r\n contolType: UIControlType.LabelValueView,\r\n value: commonPPContextState?.rfpJustification,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemPublicTenderAttachements',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"Attachment\",\r\n data: {\r\n id: \"RfpRfqPublicTenderAttachement\",\r\n required: false,\r\n attachmentList: attachmentList,\r\n labelText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Attachments\", UIControlsText.Attachments),\r\n source: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText),\r\n guidanceText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"DealInfoPublicTenderAttachments\", getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"DealInfoPublicTenderAttachments\", GuidanceText.DealInfoPublicTenderAttachments)),\r\n handleAttachmentChanges: handleAttachmentChanges,\r\n opportunityDealStatusCode: commonPPContextState.opportunityDeals[0]?.statusCode,\r\n pageMode: commonPPContextState.pageMode,\r\n attachmentDisplayMode: AttachmentDisplayMode.Grid,\r\n allowedFileExtensions: UIControlsText.AllowedFileExtensionsForDRAndSP.split(','),\r\n savedAttachments: savedAttachments,\r\n disabled: false\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n \r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackItemTileForAdditionalInformationForCreate\",\r\n horizontal: true,\r\n verticalAlign: \"start\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n visible: true,\r\n data: {\r\n id: \"CustomTileCardComponentForAdditionalInformation\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation),\r\n iconName: UIControlsText.DealDetailsIcon,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'AdditionalInformationStack',\r\n horizontal: true,\r\n wrap: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: UIConfigIdentifierConstants.StackItemAdditionalInformation,\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n visible: !getFieldConfigByState(commonPPContextState, \"StackItemAdditionalInformation\", FieldMapMode.Disable),\r\n data: {\r\n id: \"AdditionalInformationId\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"AdditionalInformationsPlaceholderText\", UIControlsText.AdditionalInformationsPlaceholderText),\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 5000,\r\n multiline: true,\r\n rows: 3,\r\n resizable: false,\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? (commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.additionalComments) : selectedOptyDeal?.additionalComments,\r\n onChange: onDealTextBoxChange(StatePropertiesText.AdditionalComments, selectedOptyDeal?.id),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.AdditionalComments)\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: getFieldConfigByState(commonPPContextState, \"StackItemAdditionalInformation\", FieldMapMode.Disable),\r\n data: {\r\n id: \"AdditionalInformationId\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalInformation\", UIControlsText.AdditionalInformation),\r\n contolType: UIControlType.LabelValueView,\r\n value: (selectedOptyDeal && _.isEmpty(selectedOptyDeal)) ? (commonPPContextState?.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.additionalComments) : selectedOptyDeal?.additionalComments,\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n\r\n ];\r\n\r\n return DealDetailsJson;\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { UIControlsText, UIConfigIdentifierConstants } from '../../../../content/UIControlsText';\r\nimport { PageStyles, DealDetailsStyles, OpportunityDetailsStyles } from '../../common/content/Page.Styles';\r\nimport { Dropdown, IDropdownOption, MessageBarType, IChoiceGroupOption, Link, ActionButton, TextField } from '@fluentui/react';\r\nimport { LocalStorageConsts } from '../../../../models/LocalStorageConsts';\r\nimport { useCommonPPContext } from '../../common/context/common-pp-context';\r\nimport { DistributorGridItemsType, DistributorGridColumnConfig, PrimaryResellerGridColumnConfig, AdditionalResellerGridColumnConfig, FinalTierResellerGridColumnConfig, PrimaryResellerGridItemsType } from '../../../shared/ComponentTypes/DetailListEditableGridTypes';\r\nimport { ChoiceGroupStyles, DefaultPageStyles } from '../../../../content/styles/Page.styles';\r\nimport { useBoolean } from '@uifabric/react-hooks';\r\nimport { CaseActionTypes } from '../../common/reducer/CaseActionTypes';\r\nimport { getAction, isEditableRow, isValidEmail, isValidEmailWithSeperator, getTextFieldErrorMessage, getFieldConfigByState, getUserSession, getEmailFieldErrorMessage, getPostalCodeTextFieldErrorMessage, getRequestorsChannelFunctionalities, downloadFile, isMsStoreUser, getsavedContext, getDistinctUserRole, getLoggedinUserRoleDetails } from '../../../../components/shared/common/util';\r\nimport { stackItemStyles, getRegionalCountries, getTextFieldRequiredErrorMessage, channelConfig, itemAlignmentsStackTokens10, validateMSStoreEmailErrorMessage, smallAlignmentTokens, initialChannelDisplayOnEdit, selectCountryBasedOnRegion, replaceMEToUAEForDistributors } from '../PricingProgramFormUtils';\r\nimport { Guid } from '../../../../infrastructure/Guid';\r\nimport { IOpportunityAccount } from '../../../../models/IOpportunityAccount';\r\nimport { AccountAllType } from '../../../../models/AccountAllType';\r\nimport { IOpportunityChannelContact } from '../../../../models/IOpportunityChannelContact';\r\nimport { nextGenService } from '../../../../services/NextGenService';\r\nimport { JavaScriptExtensions } from '../../../../infrastructure/JavaScriptExtensions';\r\nimport { PartnerTypeLabel } from '../../../../models/PartnerTypeLabel';\r\nimport { ErrorMessages } from '../../../../content/ErrorMessages';\r\nimport { ApplicationConstants } from '../../../../models/ApplicationConstants';\r\nimport { ChannelSubType } from '../../../../models/ChannelSubType';\r\nimport { StatePropertiesText } from '../../common/state/StatePropertiesText';\r\nimport { IDealInfoProps } from '../props/IDealInfoProps';\r\nimport { IEntityLookupColumnConfig } from '../../../../models/IEntityLookupColumnConfig';\r\nimport { IAccount } from '../../../../models/IAccount';\r\nimport { PageMode } from '../../../../models/PageMode';\r\nimport { partnerTypeValues } from '../../../../services/StaticData';\r\nimport { GridType } from '../../../../models/GridType';\r\nimport { CssClassConstants } from '../../../../content/CssClassConstants';\r\nimport _ from 'lodash';\r\nimport { ICountry } from '../../../../models/ICountry';\r\nimport { FinalTierFields } from '../../../shared/ComponentTypes/Components';\r\nimport { GridSelectionType } from '../../../../components/shared/grid/SelectionType';\r\nimport { PartnerType } from '../../../../models/PartnerType';\r\nimport { IAttachment } from '../../../../models/IAttachment';\r\nimport { ActionType } from '../../../../models/ActionType';\r\nimport { IInitialAdditionalResellerValue } from '../../../../models/IInitialAdditionalResellerValue';\r\nimport { IInitialFinalTierResellerValue } from '../../../../models/IInitialFinalTierResellerValue';\r\nimport { IColumnConfig } from 'fluentui-editable-grid';\r\nimport { ChoiceGroup, IColumn } from 'office-ui-fabric-react';\r\nimport { UserSubRole } from '../../../../models/UserSubRole';\r\nimport { FieldMapMode } from '../../../../models/FieldMapMode';\r\nimport { countriesFilter, getRuleValidationMessage, getEntityDataFromSession } from '../../../../components/shared/common/util';\r\nimport { AttachmentDisplayMode } from '../../../../models/AttachmentDisplayMode';\r\nimport { ArrayExtensions } from '../../../../infrastructure/ArrayExtensions';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { OpportunityDealStatusCodes } from '../../../../models/OpportunityDealStatusCodes';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { IUserDetail } from '../../../../models/IUserDetail';\r\nimport { IUserRoleDetail } from '../../../../models/IUserRoleDetail';\r\n\r\nconst initialFinalTierResellerValue: IInitialFinalTierResellerValue = {\r\n id: '',\r\n ftrNo: 1,\r\n resellerName: '',\r\n contactName: '',\r\n contactEmail: '',\r\n address: '',\r\n city: '',\r\n stateProvince: '',\r\n zipPostalCode: '',\r\n};\r\n\r\nconst initialAdditionalResellerValue: IInitialAdditionalResellerValue = {\r\n id: '',\r\n arNo: 1,\r\n resellerName: '',\r\n contactName: '',\r\n contactEmail: '',\r\n address: '',\r\n city: '',\r\n stateProvince: '',\r\n zipPostalCode: '',\r\n attachments: [],\r\n attachmentName: '',\r\n};\r\n\r\nexport function Channel(props: IDealInfoProps, onResellerLoaded: any) {\r\n const { commonPPContextState, commonPPContextDispatch } = useCommonPPContext();\r\n const currentDealStatusCode = commonPPContextState.opportunityDeals.find(t => t.name === commonPPContextState.selectedOptyDealCaseNumber)?.statusCode === OpportunityDealStatusCodes.Approved ? OpportunityDealStatusCodes.Approved : 0;\r\n const loggedInUserRole = getDistinctUserRole(getLoggedinUserRoleDetails());\r\n const defaultMSStoreSellerName = JSON.parse(getUserSession()).firstName + \" \" + JSON.parse(getUserSession()).lastName;\r\n const regionalCountries = getRegionalCountries(props?.countries || [], commonPPContextState.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.geoCountries || []) || [];\r\n const [endCustomerCountry, setEndCustomerCountry] = useState<ICountry>();\r\n const [primaryResellerGridItems, setPrimaryResellerGridItems] = useState<PrimaryResellerGridItemsType[]>([]);\r\n const [additionalResellerGridItems, setAdditionalResellerGridItems] = useState<IInitialAdditionalResellerValue[]>([]);\r\n const [addtionalResellerEditGridItems, setAddtionalResellerEditGridItems] = useState<IInitialAdditionalResellerValue[]>([]);\r\n const [finalTierResellerGridItems, setFinalTierResellerGridItems] = useState<IInitialFinalTierResellerValue[]>([]);\r\n const [distributorListGridItems, setDistributorGridItemsState] = useState<any[]>([]);\r\n const [requesterAccount, setRequesterAccount] = useState<IOpportunityAccount | undefined>({});\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n //Show the content appropriate to the Channel Requestor Role and other combinations\r\n const [showChannelContentBasedOnRoleType, setShowChannelContentBasedOnRoleType] = useState(() => {\r\n return getChannelPersona();\r\n });\r\n const productGroup = commonPPContextState?.productGroup || \"\";\r\n const distributorItems = {\r\n current: replaceMEToUAEForDistributors(props?.countries || [])?.filter((x: any) => x.productTypeId === productGroup)\r\n }\r\n\r\n const [resellerRegionalCountries, setResellerRegionalCountries] = useState<ICountry[]>();\r\n const [initialDistributorCountry, setInitialDistributorCountry] = useState<string>('');\r\n const [resellers, setResellers] = useState<any>([]); // To update with resellers\r\n const [selectedResellerCountry, setSelectedResellerCountry] = useState<any>('');\r\n const [selectedDistributorCountry, setSelectedDistributorCountry] = useState<any>('');\r\n const [distributors, setDistributors] = useState<any>({});\r\n const [selectedResellerType, setSelectedResellerType] = useState<any>();\r\n const [initialResellerType, setInitialResellerType] = useState<any>();\r\n const [selectedResellers, setSelectedResellers] = useState<any[]>([]);\r\n const [selectedDistributors, setSelectedDistributors] = useState<any[]>([]);\r\n const [panelType, setPanelType] = useState<string>('');\r\n const [currentFinalTierIndex, setCurrentFinalTierIndex] = useState<number>(0);\r\n const [addFinalResellerButtonStatus, setAddFinalResellerButtonStatus] = useState<boolean>(true);\r\n const [addSaveNextButtonStatus, setAddSaveNextButtonStatus] = useState<boolean>(true);\r\n const [addAdditionalResellerButtonStatus, setAdditionalFinalResellerButtonStatus] = useState<boolean>(true);\r\n const [additonalReselleraddSaveNextButtonStatus, setAdditionalResllerAddSaveNextButtonStatus] = useState<boolean>(true);\r\n const [currentAdditionalResellerIndex, setCurrentAdditionalResellerIndex] = useState<number>(0);\r\n const [errorFields, setErrorFields] = useState<Array<string>>([]);\r\n const [additionalErrorFields, setAdditionalErrorFields] = useState<Array<string>>([]);\r\n const [showFinalResellerPanel, { setTrue: openFinalResellerPanel, setFalse: dismissFinalResellerPanel }] = useBoolean(false);\r\n const [showAddtionalResellerPanel, { setTrue: openAddtionalResellerPanel, setFalse: dismissAddtionalResellerPanel }] = useBoolean(false);\r\n const pivotTab = commonPPContextState.pivotTabs?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText));\r\n const [isInitial, setIsInitial] = useState<boolean>(true);\r\n const [opportunityAccounts, setOpportunityAccounts] = useState<IOpportunityAccount[]>([]);\r\n const [opportunityChannelContacts, setOpportunityChannelContacts] = useState<IOpportunityChannelContact[]>(commonPPContextState && commonPPContextState?.opportunityChannelContacts || []);\r\n const [isResellerLoading, setIsResellerLoading] = useState<boolean>(false);\r\n const [isDistributorLoading, setIsDistributorLoading] = useState<boolean>(false);\r\n const resellerAccounts = useRef<IAccount[]>([]);\r\n const [msStoreSalesChannel, setMsStoreSalesChannel] = useState<number>(ChannelSubType.DSS);\r\n const msStoreAccount = opportunityAccounts && opportunityAccounts.find(a => a.partnerType === PartnerType.MsStore && a.channelSubType !== ChannelSubType.Requester);\r\n const [finalTierReseller, setFinalTierReseller] = useState<string>(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText));\r\n const [addtionalReseller, setAddtionalReseller] = useState<string>(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText));\r\n\r\n useEffect(() => {\r\n const distributorCountry = (endCustomerCountry?.region === ApplicationConstants.MiddleEastRegion) ? regionalCountries?.length > 0 && regionalCountries[0]?.countryId || '' : endCustomerCountry?.countryId;\r\n const updatedDistributors = distributorItems.current.filter((item: any) => item.countryId === distributorCountry);\r\n setDistributors({ current: updatedDistributors });\r\n setInitialDistributorCountry(distributorCountry || \"\");\r\n setSelectedDistributorCountry(distributorCountry);\r\n setSelectedResellerCountry(endCustomerCountry?.countryId);\r\n if (endCustomerCountry && endCustomerCountry.countryId) {\r\n setResellerRegionalCountries(countriesFilter(endCustomerCountry.countryId));\r\n }\r\n }, [endCustomerCountry && endCustomerCountry.countryId]);\r\n\r\n const onPanelClick = (value: string) => {\r\n setPanelType(value);\r\n };\r\n\r\n const setSelectedResellersOrDistributors = () => {\r\n if (commonPPContextState?.opportunityAccounts && commonPPContextState?.opportunityAccounts.length > 0) {\r\n //Block to update selected Resellers and Distributors in edit scenario \r\n if (showChannelContentBasedOnRoleType?.MultipleDistributorsOnly || showChannelContentBasedOnRoleType?.FinalTierAndDistributors || showChannelContentBasedOnRoleType?.AdditionalAndDistributors) {\r\n const initialSelectedDistributors: any = commonPPContextState?.opportunityAccounts?.filter(reseller => reseller.partnerType === PartnerType.ADD && reseller.action !== ActionType.PanelAdd).map((x: any) => ({\r\n accountId: x.accounts.length > 0 && x.accounts[0].accountId,\r\n companyName: x.accountCompanyName,\r\n countryId: x.countryId,\r\n countryName: x.countryName,\r\n partnerType: x.partnerType,\r\n organizationId: x.accounts.length > 0 && x.accounts[0].organizationId,\r\n action: x.action\r\n }))\r\n setSelectedDistributors(initialSelectedDistributors || [])\r\n }\r\n if (showChannelContentBasedOnRoleType?.PrimaryAndFinalTierResellers || showChannelContentBasedOnRoleType?.PrimaryResellersOnly || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers) {\r\n const initialSelectedResellers = commonPPContextState?.opportunityAccounts?.filter(reseller => (reseller.partnerType === PartnerType.ADR || reseller.partnerType === PartnerType.DMP) && reseller.action !== ActionType.PanelAdd).map((x: any) => ({\r\n accountId: x.accounts.length > 0 && x.accounts[0].accountId,\r\n companyName: x.accountCompanyName,\r\n countryId: x.countryId,\r\n countryName: x.countryName,\r\n partnerType: x.partnerType,\r\n organizationId: x.accounts.length > 0 && x.accounts[0].organizationId,\r\n action: x.action\r\n }))\r\n setSelectedResellers(initialSelectedResellers || [])\r\n }\r\n }\r\n }\r\n useEffect(() => {\r\n setSelectedResellersOrDistributors();\r\n }, [showChannelContentBasedOnRoleType])\r\n\r\n const onPanelFieldClick = (value: string) => {\r\n if (value === 'additionalReseller') {\r\n openAddtionalResellerPanel();\r\n }\r\n else if (value === 'finalTierReseller') {\r\n openFinalResellerPanel();\r\n }\r\n };\r\n\r\n const onResellerTypeChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption) => {\r\n if (item) {\r\n let filteredValues = resellerAccounts.current.filter((val: any) => val.partnerType === item.key);\r\n if (endCustomerCountry?.countryId) {\r\n filteredValues = filteredValues.filter((val: any) => val.applicablePriceListGeo === endCustomerCountry.applicablePriceListGeo);\r\n }\r\n const updatedResellers = {\r\n current: filteredValues\r\n };\r\n setSelectedResellerType(item.key);\r\n setResellers(updatedResellers);\r\n }\r\n };\r\n\r\n const onCountryChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption) => {\r\n const [list, setSelectedCountry, setSelectedList] = panelType === 'reseller' ?\r\n [resellerAccounts, setSelectedResellerCountry, setResellers] :\r\n [distributorItems, setSelectedDistributorCountry, setDistributors];\r\n if (item) {\r\n let filteredValues = list.current.filter((val: any) => val.countryId === item.key);\r\n if (panelType === 'reseller' && selectedResellerType) {\r\n filteredValues = filteredValues.filter((val: any) => val.partnerType === selectedResellerType)\r\n }\r\n const updatedList = {\r\n current: filteredValues\r\n };\r\n setSelectedCountry(item.key);\r\n setSelectedList(updatedList);\r\n }\r\n }\r\n\r\n /**\r\n * Get TextField ErrorMessage.\r\n * @method\r\n * @param {string>} value Text Box value.\r\n * @@returns {string} Error Message.\r\n */\r\n const getTextFieldErrorMessageMsStore = (errorMessage: string, targetPropertyId: string) => (value: string): string => {\r\n const message = !value ? errorMessage : '';\r\n setErrorsDataIntoContext(message, targetPropertyId)\r\n return message;\r\n };\r\n\r\n const onAdditionalNextButtonClicked = () => {\r\n setCurrentAdditionalResellerIndex(prevState => prevState + 1);\r\n };\r\n\r\n const onAdditionalBackButtonClicked = () => {\r\n setCurrentAdditionalResellerIndex(prevState => prevState - 1);\r\n }\r\n const onNextClicked = () => {\r\n setCurrentFinalTierIndex(prevState => prevState + 1);\r\n };\r\n\r\n const onBackClicked = () => {\r\n setCurrentFinalTierIndex(prevState => prevState - 1);\r\n };\r\n\r\n const onFinalTierFieldChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n const fieldId = event.currentTarget.id;\r\n setFinalTierResellerGridItems((prevState: any) => {\r\n return prevState.map(((item: any) => {\r\n return item.ftrNo === currentFinalTierIndex + 1 ? { ...item, [fieldId]: newValue } : item;\r\n }));\r\n });\r\n setAddFinalResellerButtonStatus(false);\r\n setAddSaveNextButtonStatus(false);\r\n };\r\n\r\n const onAdditionalResellerChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n const fieldId = event.currentTarget.id;\r\n setAdditionalResellerGridItems((prevState: any) => {\r\n return prevState.map(((item: any) => {\r\n return item.arNo === currentAdditionalResellerIndex + 1 ? { ...item, [fieldId]: newValue } : item;\r\n }));\r\n });\r\n setAdditionalFinalResellerButtonStatus(false);\r\n setAdditionalResllerAddSaveNextButtonStatus(false);\r\n };\r\n\r\n /**\r\n * Attachment change Callback function.\r\n * @param {Array<IAttachment | undefined>} attachmentList Updated list of attachments \r\n */\r\n const handleAttachmentChanges = (attachmentList: Array<IAttachment | undefined>): void => {\r\n const filteredAttachments = attachmentList.filter(item => item?.action !== ActionType.Delete);\r\n setAdditionalResellerGridItems((prevState: any) => {\r\n return prevState.map(((item: any) => {\r\n return item.arNo === currentAdditionalResellerIndex + 1 ? { ...item, attachments: filteredAttachments, attachmentName: filteredAttachments && filteredAttachments[0]?.name } : item;\r\n }));\r\n });\r\n setAdditionalFinalResellerButtonStatus(false);\r\n setAdditionalResllerAddSaveNextButtonStatus(false);\r\n };\r\n\r\n const resellerFieldMapping = {\r\n resellerName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText),\r\n contactName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactName\", UIControlsText.ContactName),\r\n contactEmail: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactEmailText\", UIControlsText.ContactEmailText),\r\n address: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressFacetText\", UIControlsText.AddressFacetText),\r\n city: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n stateProvince: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"StateProvinceText\", UIControlsText.StateProvinceText),\r\n zipPostalCode: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ZipPostalCode\", UIControlsText.ZipPostalCode),\r\n attachments: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AttachmentsText\", UIControlsText.AttachmentsText)\r\n };\r\n\r\n const fieldKeys = Object.keys(resellerFieldMapping);\r\n const onAddSaveNextClick = () => {\r\n const errorValues = finalTierErrorValues();\r\n const error = errorValues.filter(val => val);\r\n if (error.length === 0) {\r\n const index = finalTierResellerGridItems.findIndex(x => x.ftrNo === currentFinalTierIndex + 2);\r\n const newFormField = { ...initialFinalTierResellerValue, ftrNo: currentFinalTierIndex + 2 };\r\n const values = index === -1 ? [...finalTierResellerGridItems, newFormField] : finalTierResellerGridItems;\r\n setCurrentFinalTierIndex((prevState => prevState + 1));\r\n setFinalTierResellerGridItems(values);\r\n }\r\n setErrorFields(error);\r\n }\r\n\r\n const onAddAdditionalResellerSaveNextClick = () => {\r\n const errorValues: any = additionalResellerErrorValues();\r\n const error: any = errorValues.filter((val: any) => val).filter((itm: any) => itm.length > 0);\r\n\r\n if (error.length === 0) {\r\n const index = additionalResellerGridItems.findIndex(x => x.arNo === currentAdditionalResellerIndex + 2);\r\n const newFormField = { ...initialAdditionalResellerValue, arNo: currentAdditionalResellerIndex + 2 };\r\n const values = index === -1 ? [...additionalResellerGridItems, newFormField] : additionalResellerGridItems;\r\n setCurrentAdditionalResellerIndex((prevState => prevState + 1));\r\n setAdditionalResellerGridItems(values);\r\n }\r\n setAdditionalErrorFields(error);\r\n }\r\n\r\n const onAddFinalTierResellers = () => {\r\n const errorValues = finalTierErrorValues();\r\n const error = errorValues.filter(val => val);\r\n if (error.length === 0) {\r\n setCurrentFinalTierIndex(0);\r\n if (finalTierResellerGridItems) {\r\n const itemsWithoutId = finalTierResellerGridItems.map(item => {\r\n const val = _.omit(item, ['id', 'ftrNo']);\r\n return {\r\n ...val,\r\n };\r\n }).map((key: any) => Object.keys(key).some(i => {\r\n const getbool = () => {\r\n let val = false;\r\n if (i === 'contactEmail') {\r\n return val = key[i] == '' || validateContactErrorMessage(key[i]).length !== 0;\r\n }\r\n if (i === 'zipPostalCode') {\r\n return val = key[i] === '' || getPostalCodeTextFieldErrorMessage(key[i]).length !== 0;\r\n }\r\n return key[i] === '';\r\n }\r\n const flag = getbool();\r\n return flag;\r\n }));\r\n const emptyDataIndex = itemsWithoutId.findIndex(i => i);\r\n const updatedFinalResellerGridItems = emptyDataIndex === -1 ? finalTierResellerGridItems : finalTierResellerGridItems.filter((_, index) => index !== emptyDataIndex);\r\n //Remove existing accounts and add the updated accounts\r\n let updatedAccounts = opportunityAccounts.filter(acc => !updatedFinalResellerGridItems.map(f => f.id).includes(acc.id || ''));\r\n let accounts = updatedFinalResellerGridItems.map((acc) => {\r\n return {\r\n ...getNewOpportunityAccount(PartnerType.FinalTierReseller),\r\n id: acc.id === '' ? Guid.newGuid() : acc.id,\r\n action: acc.action || ActionType.Add,\r\n ftrNo: acc.ftrNo,\r\n address: acc.address, city: acc.city, stateProvince: acc.stateProvince, zipPostalCode: acc.zipPostalCode, contactEmail: acc.contactEmail,\r\n opportunityAccountName: acc.resellerName, accountCompanyName: acc.contactName\r\n } as IOpportunityAccount\r\n });\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: [...updatedAccounts, ...accounts] });\r\n clearErrorFromContext([PartnerType.FinalTierReseller], [...updatedAccounts, ...accounts], StatePropertiesText.ValidateFinalOrAdditionalReseller, getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidateFinalReseller\", ErrorMessages.ValidateFinalReseller));\r\n }\r\n }\r\n setErrorFields(error);\r\n }\r\n\r\n const onAddAdditionalResellers = () => {\r\n const errorValues: any = additionalResellerErrorValues();\r\n const error: any = errorValues?.filter((val: any) => val).filter((itm: any) => itm?.length > 0);\r\n if (error.length === 0) {\r\n setCurrentAdditionalResellerIndex(0);\r\n if (additionalResellerGridItems) {\r\n const itemsWithoutId = additionalResellerGridItems.map(item => {\r\n const val = _.omit(item, ['id', 'arNo']);\r\n return {\r\n ...val,\r\n };\r\n }).map((key: any) => Object.keys(key).some(i => {\r\n const getbool = () => {\r\n let val = false;\r\n if (i === 'contactEmail') {\r\n return val = key[i] == '' || validateContactErrorMessage(key[i]).length !== 0;\r\n }\r\n if (i === 'zipPostalCode') {\r\n return val = key[i] === '' || getPostalCodeTextFieldErrorMessage(key[i]).length !== 0;\r\n }\r\n return key[i] === '';\r\n }\r\n const flag = getbool();\r\n return flag;\r\n }));\r\n const emptyDataIndex = itemsWithoutId.findIndex(i => i);\r\n const updatedAdditionalResellerGridItems = emptyDataIndex === -1 ? additionalResellerGridItems : additionalResellerGridItems.filter((_, index) => index !== emptyDataIndex);\r\n //Remove existing accounts and add the updated accounts\r\n const additionalResellers = opportunityAccounts.filter(acc => acc.partnerType === PartnerType.AdditionalTierReseller);\r\n let attachments = (commonPPContextState.attachments || []).filter(att => !additionalResellers.map(acc => acc.id).includes(att?.relatedEntityId));\r\n let updatedAccounts = opportunityAccounts.filter(acc => !updatedAdditionalResellerGridItems.map(f => f.id).includes(acc.id || ''));\r\n let accounts = updatedAdditionalResellerGridItems.map((acc) => {\r\n let account = {\r\n ...getNewOpportunityAccount(PartnerType.AdditionalTierReseller),\r\n id: acc.id === '' ? Guid.newGuid() : acc.id,\r\n action: acc.action || ActionType.Add,\r\n arNo: acc.arNo,\r\n address: acc.address, city: acc.city, stateProvince: acc.stateProvince, zipPostalCode: acc.zipPostalCode, contactEmail: acc.contactEmail,\r\n opportunityAccountName: acc.resellerName, accountCompanyName: acc.contactName\r\n } as IOpportunityAccount\r\n if (acc.attachments) {\r\n let att = (acc.attachments as IAttachment[]);\r\n const newlist = att.map((x) => { return { ...x, relatedEntityId: account.id } })\r\n\r\n attachments = ArrayExtensions.mergeArrays(attachments, newlist);\r\n }\r\n return account;\r\n });\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: [...updatedAccounts, ...accounts] });\r\n commonPPContextDispatch({ type: CaseActionTypes.attachmentChanged, attachments: attachments });\r\n clearErrorFromContext([PartnerType.AdditionalTierReseller], [...updatedAccounts, ...accounts], StatePropertiesText.ValidateFinalOrAdditionalReseller, getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidateAdditionalReseller\", ErrorMessages.ValidateAdditionalReseller));\r\n }\r\n }\r\n setAdditionalErrorFields(error);\r\n }\r\n\r\n const clearErrorFromContext = (partnerTypes?: PartnerType[], optyAccounts?: IOpportunityAccount[], targetPropertyId?: string, errorMessage?: string) => {\r\n const pivotTabsData = commonPPContextState.pivotTabs;\r\n let pivotTabChannel = pivotTabsData?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)) || {};\r\n const optyAccount = optyAccounts?.find(t => (t.channelSubType !== ChannelSubType.Requester) && (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(partnerTypes?.find(x => t.partnerType === x))));\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(optyAccount)) {\r\n pivotTabChannel?.errors?.delete(targetPropertyId || \"\");\r\n }\r\n else {\r\n pivotTabChannel?.errors?.set(targetPropertyId || \"\", errorMessage || \"\");\r\n }\r\n\r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabsData });\r\n }\r\n\r\n const finalTierErrorValues = () => {\r\n const errorValues = fieldKeys.filter(x => x !== 'attachments').map((item: any) => {\r\n const fallbackValue = '';\r\n const fieldValue = finalTierResellerGridItems.length > 0 ? finalTierResellerGridItems[currentFinalTierIndex][item as keyof IInitialFinalTierResellerValue] : fallbackValue;\r\n let result = finalTierResellerGridItems.length > 0 && !finalTierResellerGridItems[currentFinalTierIndex][item as keyof IInitialFinalTierResellerValue] ? resellerFieldMapping[item as keyof typeof resellerFieldMapping] : fallbackValue;\r\n let fieldVal: any = typeof (fieldValue) !== 'undefined' && fieldValue?.toString();\r\n if (item === 'contactEmail') {\r\n result = fieldValue === '' ? resellerFieldMapping[item as keyof typeof resellerFieldMapping] : getEmailFieldErrorMessage(fieldVal);\r\n }\r\n if (item === 'zipPostalCode') {\r\n result = fieldValue === '' ? resellerFieldMapping[item as keyof typeof resellerFieldMapping] : getPostalCodeTextFieldErrorMessage(fieldVal);\r\n }\r\n return result;\r\n }).filter(val => val);\r\n return errorValues;\r\n }\r\n\r\n const additionalResellerErrorValues = () => {\r\n const errorValues = fieldKeys.map((item: any) => {\r\n const fallbackValue = item === 'attachments' ? [] : '';\r\n let result = (additionalResellerGridItems.length > 0 && additionalResellerGridItems[currentAdditionalResellerIndex][item as keyof typeof resellerFieldMapping] || fallbackValue).length > 0 ? fallbackValue : resellerFieldMapping[item as keyof typeof resellerFieldMapping];\r\n if (item === 'contactEmail') {\r\n const fieldValue = additionalResellerGridItems.length > 0 ? additionalResellerGridItems[currentAdditionalResellerIndex].contactEmail : '';\r\n result = fieldValue === '' ? resellerFieldMapping[item as keyof typeof resellerFieldMapping] : getEmailFieldErrorMessage(fieldValue.toString());\r\n }\r\n if (item === 'zipPostalCode') {\r\n const fieldValue = additionalResellerGridItems.length > 0 ? additionalResellerGridItems[currentAdditionalResellerIndex].zipPostalCode : '';\r\n result = fieldValue === '' ? resellerFieldMapping[item as keyof typeof resellerFieldMapping] : getPostalCodeTextFieldErrorMessage(fieldValue.toString());\r\n }\r\n return result;\r\n }).filter(val => val).filter(itm => itm.length > 0);\r\n return errorValues || [];\r\n }\r\n\r\n const panelContent = (showAttachment: boolean, values: any) => values.map((item: any) => {\r\n let contextData: any = [];\r\n let currentIndex = 0;\r\n if (showAddtionalResellerPanel) {\r\n contextData = additionalResellerGridItems;\r\n currentIndex = currentAdditionalResellerIndex;\r\n }\r\n if (showFinalResellerPanel) {\r\n contextData = finalTierResellerGridItems;\r\n currentIndex = currentFinalTierIndex;\r\n }\r\n let isDisabled = false;\r\n if (contextData && commonPPContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n isDisabled = contextData[currentIndex] ? item.action === ActionType.Created : false;\r\n }\r\n return (\r\n <div>\r\n <FinalTierFields\r\n ResellerNameTextField={{\r\n id: 'resellerName',\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText),\r\n styles: PageStyles.textFieldPanelWidth,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ResellerNamePlaceHolder\", UIControlsText.ResellerNamePlaceHolder),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n value: item.resellerName,\r\n onChange: showAttachment ? onAdditionalResellerChange : onFinalTierFieldChange,\r\n onGetErrorMessage: getTextFieldErrorMessage,\r\n disabled: isDisabled\r\n }}\r\n ContactName={{\r\n id: 'contactName',\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactName\", UIControlsText.ContactName),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactName\", UIControlsText.ContactName),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ContactNamePlaceHolder\", UIControlsText.ContactNamePlaceHolder),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n value: item.contactName,\r\n onChange: showAttachment ? onAdditionalResellerChange : onFinalTierFieldChange,\r\n onGetErrorMessage: getTextFieldErrorMessage,\r\n disabled: isDisabled\r\n }}\r\n ContactEmail={{\r\n id: 'contactEmail',\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactEmailText\", UIControlsText.ContactEmailText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactEmailText\", UIControlsText.ContactEmailText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ContactEmailPlaceHolder\", UIControlsText.ContactEmailPlaceHolder),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n value: item.contactEmail,\r\n onChange: showAttachment ? onAdditionalResellerChange : onFinalTierFieldChange,\r\n onGetErrorMessage: getTextFieldErrorMessage,\r\n disabled: isDisabled\r\n }}\r\n Address={{\r\n id: 'address',\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressFacetText\", UIControlsText.AddressFacetText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddressFacetText\", UIControlsText.AddressFacetText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"AddressFacetText\", UIControlsText.AddressPlaceHolder),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n value: item.address,\r\n onChange: showAttachment ? onAdditionalResellerChange : onFinalTierFieldChange,\r\n onGetErrorMessage: getTextFieldErrorMessage,\r\n disabled: isDisabled\r\n }}\r\n City={{\r\n id: 'city',\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"CityTextFieldPlaceHolder\", UIControlsText.CityTextFieldPlaceHolder),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n value: item.city,\r\n onChange: showAttachment ? onAdditionalResellerChange : onFinalTierFieldChange,\r\n onGetErrorMessage: getTextFieldErrorMessage,\r\n disabled: isDisabled\r\n }}\r\n StateOrProvince={{\r\n id: 'stateProvince',\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"StateProvinceText\", UIControlsText.StateProvinceText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"StateProvinceText\", UIControlsText.StateProvinceText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"StateOrProvincePlaceHolder\", UIControlsText.StateOrProvincePlaceHolder),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n value: item.stateProvince,\r\n onChange: showAttachment ? onAdditionalResellerChange : onFinalTierFieldChange,\r\n onGetErrorMessage: getTextFieldErrorMessage,\r\n disabled: isDisabled\r\n }}\r\n PostalCode={{\r\n id: 'zipPostalCode',\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ZipPostalCode\", UIControlsText.ZipPostalCode),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ZipPostalCode\", UIControlsText.ZipPostalCode),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ZipOrPostalCodePlaceHolder\", UIControlsText.ZipOrPostalCodePlaceHolder),\r\n required: true,\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n value: item.zipPostalCode,\r\n onChange: showAttachment ? onAdditionalResellerChange : onFinalTierFieldChange,\r\n onGetErrorMessage: getTextFieldErrorMessage,\r\n disabled: isDisabled\r\n }}\r\n showAttachment={showAttachment}\r\n attachment={{\r\n labelText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AttachmentsText\", UIControlsText.AttachmentsText),\r\n source: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText),\r\n required: true,\r\n attachmentList: item.attachments,\r\n handleAttachmentChanges: handleAttachmentChanges,\r\n attachmentDisplayMode: AttachmentDisplayMode.Grid,\r\n allowedFileExtensions: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AllowedFileExtensionsForDRAndSP\", UIControlsText.AllowedFileExtensionsForDRAndSP).split(','),\r\n opportunityDealStatusCode: commonPPContextState.opportunityDeals[0]?.statusCode,\r\n pageMode: commonPPContextState.pageMode,\r\n disabled: isDisabled\r\n }}\r\n />\r\n </div>)\r\n });\r\n\r\n const resellerColumnDefinitions: IEntityLookupColumnConfig[] = [\r\n {\r\n apiField: 'name',\r\n key: 'name',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText),\r\n displayOrder: 2\r\n }, {\r\n apiField: 'organizationId',\r\n key: 'organizationId',\r\n columnTitle: 'MPN ID',\r\n displayOrder: 3,\r\n }];\r\n\r\n\r\n const distributorColumnDefinitions: IEntityLookupColumnConfig[] = [\r\n {\r\n apiField: 'name',\r\n key: 'name',\r\n columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DistributorNameText\", UIControlsText.DistributorNameText),\r\n displayOrder: 2\r\n }];\r\n const resellerTypes = [PartnerType.ADR, PartnerType.DMP];\r\n\r\n const resellerTableConfigurations = (\r\n <div className='configContainer'>\r\n <Dropdown\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerTypeText\", UIControlsText.ResellerTypeText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerTypeText\", UIControlsText.ResellerTypeText)}\r\n options={_.uniqBy(resellerTypes.map((item: any) => ({ key: item, text: partnerTypeValues[item] } as IDropdownOption)), 'key')}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerTypeText\", UIControlsText.ResellerTypeText)}\r\n styles={PageStyles.PaneldropdownStyles}\r\n onChange={onResellerTypeChange}\r\n selectedKey={selectedResellerType}\r\n disabled={false}\r\n required\r\n />\r\n <Dropdown\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerCountryText\", UIControlsText.ResellerCountryText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerCountryText\", UIControlsText.ResellerCountryText)}\r\n options={_.uniqBy(resellerRegionalCountries?.map((item: any) => ({ key: item.countryId, text: item.countryName } as IDropdownOption)), 'key')}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ResellerCountryPlaceholderText\", UIControlsText.ResellerCountryPlaceholderText)}\r\n styles={PageStyles.PaneldropdownStyles}\r\n onChange={onCountryChange}\r\n defaultSelectedKey={endCustomerCountry?.countryId}\r\n selectedKey={selectedResellerCountry}\r\n disabled={!endCustomerCountry?.isEUEFTA}\r\n required\r\n />\r\n </div>);\r\n\r\n const distributorTableConfigurations = (\r\n <div className='configContainer'>\r\n <Dropdown\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DistributorCountryText\", UIControlsText.DistributorCountryText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DistributorCountryText\", UIControlsText.DistributorCountryText)}\r\n options={_.uniqBy(regionalCountries?.map((item: any) => ({ key: item.countryId, text: item.countryName } as IDropdownOption)), 'key')}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DistributorCountryPlaceholderText\", UIControlsText.DistributorCountryPlaceholderText)}\r\n styles={PageStyles.distributorDropdownStyles}\r\n onChange={onCountryChange}\r\n defaultSelectedKey={selectedDistributorCountry}\r\n selectedKey={selectedDistributorCountry}\r\n disabled={!endCustomerCountry?.isEUEFTA}\r\n required\r\n />\r\n </div>);\r\n\r\n const onResellerOrDistributorChange = (selectedItems: any[]): void => {\r\n const [list, setSelectedList, countrySelection] = panelType === 'reseller' ? [resellerAccounts, setSelectedResellers, selectedResellerCountry] : [distributorItems, setSelectedDistributors, selectedDistributorCountry];\r\n setIsInitial(false);\r\n if (selectedItems) {\r\n const updatedValues = list.current.map((item: any) => {\r\n return {\r\n ...item,\r\n key: `${item.accountId}-${item.partnerType}`,\r\n };\r\n });\r\n const modifiedList = {\r\n current: updatedValues,\r\n };\r\n let updatedList: IAccount[] = [];\r\n if (selectedItems) {\r\n selectedItems.forEach(x => {\r\n let value: any;\r\n value = modifiedList.current?.find((y: any) => y.key === x.key);\r\n if (value) {\r\n value.action = JavaScriptExtensions.isNullOrUndfinedOrEmpty(x.action) ? ActionType.PanelAdd : x.action;\r\n updatedList.push(value);\r\n }\r\n });\r\n }\r\n setSelectedList(updatedList);\r\n }\r\n }\r\n\r\n const onClearAll = () => {\r\n if (panelType === 'reseller') {\r\n setSelectedResellersOrDistributors();\r\n const filteredResllers: any = resellerAccounts.current.filter((item: any) => item.applicablePriceListGeo === endCustomerCountry?.applicablePriceListGeo)\r\n setResellers({ current: filteredResllers })\r\n setSelectedResellerType(initialResellerType)\r\n setSelectedResellerCountry(endCustomerCountry?.countryId)\r\n } else {\r\n const updatedDistributors = distributorItems.current.filter((item: any) => item.countryId === initialDistributorCountry);\r\n setSelectedResellersOrDistributors();\r\n setDistributors({ current: updatedDistributors })\r\n setSelectedDistributorCountry(initialDistributorCountry)\r\n }\r\n };\r\n const onAddButtonClicked = (isResellerAdd?: boolean) => {\r\n onPrimaryResellerAdd([...selectedResellers, ...selectedDistributors], isResellerAdd);\r\n }\r\n\r\n const onCancelClick = () => {\r\n setCurrentFinalTierIndex(0);\r\n const currentFinalTierItems = commonPPContextState.pageMode === PageMode.Edit ? finalTierResellerGridItems.filter(x => x.action === ActionType.Created) : [initialFinalTierResellerValue]\r\n setFinalTierResellerGridItems(currentFinalTierItems);\r\n if (commonPPContextState.pageMode === PageMode.Create) {\r\n const updatedAccounts = commonPPContextState.opportunityAccounts?.filter(acc => acc.partnerType !== PartnerType.FinalTierReseller);\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: updatedAccounts });\r\n }\r\n setErrorFields([]);\r\n }\r\n\r\n const onCancelButtonClicked = () => {\r\n setCurrentAdditionalResellerIndex(0);\r\n const currentAdditionalItems = commonPPContextState.pageMode === PageMode.Edit ? additionalResellerGridItems.filter(x => x.action === ActionType.Created) : [initialAdditionalResellerValue];\r\n setAdditionalResellerGridItems(currentAdditionalItems);\r\n if (commonPPContextState.pageMode === PageMode.Create) {\r\n const updatedAccounts = commonPPContextState.opportunityAccounts?.filter(acc => acc.partnerType !== PartnerType.AdditionalTierReseller);\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: updatedAccounts });\r\n }\r\n setErrorFields([]);\r\n }\r\n\r\n function getChannelPersona() {\r\n let initialChannelDisplay;\r\n if (isMsStoreUser()) {\r\n initialChannelDisplay = getRequestorsChannelFunctionalities(UserSubRole.MSStoreUser, endCustomerCountry?.countryName || \"\");\r\n }\r\n else if (commonPPContextState.pageMode === PageMode.Create) {\r\n initialChannelDisplay = getRequestorsChannelFunctionalities(commonPPContextState.partnerDetails?.userRole || \"\", endCustomerCountry?.countryName || \"\");\r\n }\r\n else {\r\n let requestor = commonPPContextState?.opportunityAccounts?.find(r => r.channelSubType === ChannelSubType.Requester);\r\n initialChannelDisplay = getRequestorsChannelFunctionalities(PartnerType[requestor?.partnerType || 0] || \"\", endCustomerCountry?.countryName || \"\");\r\n initialChannelDisplayOnEdit(commonPPContextState, initialChannelDisplay);\r\n }\r\n return initialChannelDisplay;\r\n }\r\n\r\n //Create a new IOpportunityAccount\r\n function getNewOpportunityAccount(type?: PartnerType, partnerAccount?: IAccount): IOpportunityAccount {\r\n return { id: Guid.newGuid(), accounts: partnerAccount ? [{ ...partnerAccount, action: ActionType.Add }] : undefined, partnerType: type, isAllSelected: AccountAllType.None, isComplete: true, countryId: selectCountryBasedOnRegion(endCustomerCountry?.countryId || \"\", partnerAccount?.countryId || \"\", props?.countries || [], type), action: ActionType.Add } as IOpportunityAccount;\r\n }\r\n\r\n //Create a new IOpportunityChannelContact\r\n function getNewOpportunityChannelContact(opportunityAccountId?: string, email?: string): IOpportunityChannelContact {\r\n return { id: Guid.newGuid(), opportunityAccountId: opportunityAccountId, channelContactEmails: email?.replace(',', ';'), source: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText), action: ActionType.Add, isComplete: email ? isValidEmailWithSeperator(email, ';') : false } as IOpportunityChannelContact;\r\n }\r\n\r\n async function getResellers(countries: ICountry[]) {\r\n setIsResellerLoading(true);\r\n\r\n //Remove resellers when the countries are removed.\r\n resellerAccounts.current = resellerAccounts.current.filter(r => r.productTypeId === productGroup).filter(r => countries.map(c => c.countryId).indexOf(r.countryId as string) >= 0);\r\n\r\n //Newly selected countries\r\n let newCountries = countries.filter(c => resellerAccounts.current.filter(r => r.productTypeId === productGroup).map(r => r.countryId).indexOf(c.countryId) === -1);\r\n let count = newCountries.length;\r\n\r\n if (newCountries.length === 0) {\r\n setIsResellerLoading(false);\r\n }\r\n\r\n //Get resellers for newly selected countries\r\n newCountries.forEach(async c => {\r\n let response = await nextGenService.getAllActiveResellersByProductAndCountry(productGroup, c.countryId);\r\n count--;\r\n if (count === 0) {\r\n setIsResellerLoading(false);\r\n }\r\n\r\n if (response.status === 200) {\r\n resellerAccounts.current = resellerAccounts.current.concat(response.data);\r\n resellerAccounts.current = _.uniqBy(resellerAccounts.current, v => [v.accountId, v.partnerType].join());\r\n setResellers({ current: resellerAccounts.current });\r\n if (count === 0) {\r\n onResellerLoaded && onResellerLoaded(resellerAccounts.current);\r\n }\r\n }\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n const getDistributors = () => {\r\n //Remove Distributors when the countries are removed.\r\n distributorItems.current = distributorItems.current.filter((r: any) => r.productTypeId === productGroup).filter((r: any) => r.applicablePriceListGeo === endCustomerCountry?.applicablePriceListGeo);\r\n return distributorItems.current;\r\n }\r\n setDistributors({ current: getDistributors() })\r\n const selectedGeoCountries = (commonPPContextState.opportunityDeals && commonPPContextState?.opportunityDeals[0]?.geoCountries) || [];\r\n\r\n if (resellerRegionalCountries && resellerRegionalCountries.length > 0 && JavaScriptExtensions.isDefined(productGroup) && selectedGeoCountries.length > 0 \r\n && (typeof (showChannelContentBasedOnRoleType) != \"undefined\" && (showChannelContentBasedOnRoleType.PrimaryResellersOnly || showChannelContentBasedOnRoleType.PrimaryAndFinalTierResellers || showChannelContentBasedOnRoleType.PrimaryandAdditionalResellers))) {\r\n getResellers(resellerRegionalCountries || []);\r\n }\r\n if (JavaScriptExtensions.isDefined(productGroup) && selectedGeoCountries.length > 0 && (typeof (showChannelContentBasedOnRoleType) != \"undefined\" && !showChannelContentBasedOnRoleType.MSStore)) {\r\n getDistributors();\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [endCustomerCountry?.countryId, commonPPContextState?.productGroup, showChannelContentBasedOnRoleType]);\r\n\r\n useEffect(() => {\r\n if (commonPPContextState.opportunityAccounts) {\r\n //Set IsComplete Flag on initialization\r\n let accounts = [...commonPPContextState.opportunityAccounts];\r\n setRequesterAccount(commonPPContextState.opportunityAccounts?.find(t => t.channelSubType === ChannelSubType.Requester));\r\n if (commonPPContextState.opportunityAccounts.length > 0 && commonPPContextState.opportunityAccounts.filter(acc => !JavaScriptExtensions.isDefined(acc.isComplete)).length > 0) {\r\n accounts.filter(acc => acc.partnerType !== PartnerType.MsStore && !JavaScriptExtensions.isDefined(acc.isComplete)).map((acc) => acc.isComplete = true);\r\n accounts.filter(acc => acc.partnerType === PartnerType.MsStore && !JavaScriptExtensions.isDefined(acc.isComplete)).map((ms) => updateMSStoreCompleteFlag(ms));\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: accounts });\r\n }\r\n setOpportunityAccounts(accounts);\r\n\r\n if (msStoreAccount?.channelSubType) {\r\n setMsStoreSalesChannel(msStoreAccount.channelSubType);\r\n }\r\n\r\n let resellerItems = commonPPContextState.opportunityAccounts.filter(reseller => reseller.partnerType === PartnerType.ADR || reseller.partnerType === PartnerType.DMP)\r\n .map((acc) => {\r\n const contact = commonPPContextState.opportunityChannelContacts?.find((c) => c.opportunityAccountId === acc.id);\r\n return {\r\n id: acc.id,\r\n resellerCountry: acc.accounts && acc.accounts[0].countryName,\r\n resellerType: acc.partnerType ? PartnerTypeLabel.get(acc.partnerType) : \"\",\r\n resellerNames: acc.accounts && acc.accounts[0].companyName,\r\n resellerEmailContacts: acc?.channelSubType === ChannelSubType.Requester ? acc.contactEmail : contact?.channelContactEmails,\r\n deleteAction: acc.id,\r\n action: acc.accounts && acc.accounts[0]?.action\r\n } as PrimaryResellerGridItemsType\r\n });\r\n setPrimaryResellerGridItems(resellerItems);\r\n\r\n let finalResellerItems = commonPPContextState.opportunityAccounts.filter(reseller => reseller.partnerType === PartnerType.FinalTierReseller)\r\n .map((acc: any, index: number) => {\r\n return {\r\n id: acc.id,\r\n ftrNo: acc.ftNo || index + 1,\r\n resellerName: acc.opportunityAccountName,\r\n contactName: acc.accountCompanyName,\r\n contactEmail: acc.contactEmail,\r\n address: acc.address,\r\n city: acc.city,\r\n stateProvince: acc.stateProvince,\r\n zipPostalCode: acc.zipPostalCode,\r\n action: acc.action\r\n } as IInitialFinalTierResellerValue\r\n });\r\n setFinalTierResellerGridItems(finalResellerItems.length > 0 ? finalResellerItems : [initialFinalTierResellerValue]);\r\n\r\n finalResellerItems.length > 0 ? setFinalTierReseller(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText)) : setFinalTierReseller(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText))\r\n\r\n let additionalResellerItems = commonPPContextState.opportunityAccounts.filter(reseller => reseller.partnerType === PartnerType.AdditionalTierReseller)\r\n .map((acc: any, index: number) => {\r\n return {\r\n id: acc.id,\r\n arNo: acc.arNo || index + 1,\r\n resellerName: acc.opportunityAccountName,\r\n contactName: acc.accountCompanyName,\r\n contactEmail: acc.contactEmail,\r\n address: acc.address,\r\n city: acc.city,\r\n stateProvince: acc.stateProvince,\r\n zipPostalCode: acc.zipPostalCode,\r\n attachments: commonPPContextState.attachments?.filter(a => a?.relatedEntityId === acc.id),\r\n attachmentName: commonPPContextState.attachments?.filter(a => a?.relatedEntityId === acc.id)?.map(x => x?.name).join(', '),\r\n action: acc.action\r\n } as IInitialAdditionalResellerValue\r\n });\r\n setAddtionalResellerEditGridItems(additionalResellerItems.length > 0 ? additionalResellerItems : [initialAdditionalResellerValue]);\r\n setAdditionalResellerGridItems(additionalResellerItems.length > 0 ? additionalResellerItems : [initialAdditionalResellerValue]);\r\n\r\n additionalResellerItems.length > 0 ? setAddtionalReseller(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText)) : setAddtionalReseller(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText))\r\n\r\n let distributorItems = commonPPContextState.opportunityAccounts.filter(reseller => reseller.partnerType === PartnerType.ADD)\r\n .map((acc) => {\r\n const contact = commonPPContextState.opportunityChannelContacts?.find((c) => c.opportunityAccountId === acc.id);\r\n const distiAccounts = acc?.accounts && acc?.accounts[0];\r\n return {\r\n id: acc.id,\r\n distributorCountry: distiAccounts?.countryName,\r\n distributorOwner: acc?.channelSubType === ChannelSubType.CoOwner ? true : false,\r\n distributorNames: distiAccounts?.companyName,\r\n distributorEmailContacts: acc?.channelSubType === ChannelSubType.Requester ? acc.contactEmail : contact?.channelContactEmails,\r\n action: acc.action\r\n } as DistributorGridItemsType\r\n });\r\n setDistributorGridItemsState(distributorItems);\r\n }\r\n }, [commonPPContextState.opportunityAccounts]);\r\n\r\n useEffect(() => {\r\n if (commonPPContextState.opportunityChannelContacts) {\r\n //Set IsComplete Flag on initialization\r\n let contacts = [...commonPPContextState.opportunityChannelContacts]\r\n contacts.filter(c => !JavaScriptExtensions.isDefined(c.isComplete)).map(c => commonPPContextState.opportunityAccounts?.find(a => a.id === c.opportunityAccountId)?.partnerType === PartnerType.MsStore\r\n ? c.isComplete = getMSStoreEmailErrorMessage(c.channelContactEmails || '') === ''\r\n : c.isComplete = validateContactErrorMessage(c.channelContactEmails || '', StatePropertiesText.ValidateEmailText + c.opportunityAccountId) === '');\r\n\r\n setOpportunityChannelContacts(contacts);\r\n }\r\n }, [commonPPContextState.opportunityChannelContacts]);\r\n\r\n\r\n //Remove the initial template item from Grid display\r\n const getGridDisplayItems = (items: any[]) => {\r\n if (items && items.length > 0) {\r\n return items.filter(x => x.id !== ''); //Remove the initial template used by PanelFieldContainer component from grid display\r\n }\r\n }\r\n\r\n // Attach Primary Reseller grid callbacks\r\n const attachFinalAdditionalResellerGridCallbacks = (columnConfig: IColumnConfig[], type: number): IColumnConfig[] => {\r\n columnConfig.filter((item) => item.key == 'editAction').map((item) => item.onRender = (item?: any, index?: number, column?: IColumn) => onRenderFinalAddtionalResellerEdit(item, index, column, type));\r\n columnConfig.filter((item) => item.key == 'deleteAction').map((item) => item.onRender = (item?: any, index?: number, column?: IColumn) => onRenderFinalAddtionalResellerDelete(item, index, column, type));\r\n return columnConfig;\r\n };\r\n\r\n // Overridden OnRender event for Primary Reseller Delete button\r\n function onRenderFinalAddtionalResellerEdit(item?: any, index?: number, column?: IColumn, type?: number): JSX.Element {\r\n const id = (item?.id || '') as string;\r\n const isFieldDisabled = getFieldConfigByState(commonPPContextState, \"PrimaryResellerContainer\", FieldMapMode.Disable);\r\n const iconName = CssClassConstants.EditIconName;\r\n let gridItems: IInitialFinalTierResellerValue[] = finalTierResellerGridItems?.filter((acc: any) => acc && acc.id === id && acc.action === ActionType.Created);\r\n\r\n return renderActionButton(id, 'primaryResellerEditButton', iconName, isFieldDisabled, (() => onFinalAddtionalResellerEdit(item, id, type)), gridItems);\r\n }\r\n\r\n // Overridden OnRender event for Primary Reseller Delete button\r\n function onRenderFinalAddtionalResellerDelete(item?: any, index?: number, column?: IColumn, type?: number): JSX.Element {\r\n const id = (item?.id || '') as string;\r\n const isFieldDisabled = getFieldConfigByState(commonPPContextState, \"PrimaryResellerContainer\", FieldMapMode.Disable);\r\n const iconName = CssClassConstants.DeleteIconName;\r\n let gridInitialItems: IInitialAdditionalResellerValue[] | IInitialFinalTierResellerValue[] = (type === PartnerType.FinalTierReseller) ? finalTierResellerGridItems.filter((acc) => acc && acc.id === id && acc.action === ActionType.Created) : additionalResellerGridItems.filter((acc) => acc && acc.id === id && acc.action === ActionType.Created);\r\n\r\n return renderActionButton(id, 'primaryResellerDeleteButton', iconName, isFieldDisabled, (() => onFinalAddtionalResellerDelete(id, type)), gridInitialItems);\r\n }\r\n\r\n function onFinalAddtionalResellerEdit(item: any, id: string, type?: number, ev?: React.FormEvent<HTMLElement | HTMLInputElement>) {\r\n if (type === PartnerType.FinalTierReseller) {\r\n setCurrentFinalTierIndex(item?.ftrNo - 1);\r\n openFinalResellerPanel();\r\n }\r\n else {\r\n setCurrentAdditionalResellerIndex(item?.arNo - 1);\r\n openAddtionalResellerPanel();\r\n }\r\n }\r\n\r\n //Common helper function --> to handle render Action Button Delete or Edit type\r\n function renderActionButton(rowId: string, buttonId: string, iconName: string, isFieldDisabled: boolean | undefined, onRenderClickFunction: any\r\n , gridInitialItems: DistributorGridItemsType[] | PrimaryResellerGridItemsType[] | IInitialAdditionalResellerValue[] | IInitialFinalTierResellerValue[]): JSX.Element {\r\n let isDisabledForExistingItems = getFieldStatusBasedOnExistingItemsActionFlag(rowId, gridInitialItems);\r\n let isActionButtonDisabled = isDisabledForExistingItems || ((typeof (isFieldDisabled) == 'undefined') ? false : isFieldDisabled);\r\n\r\n return <ActionButton\r\n id={buttonId}\r\n iconProps={{\r\n iconName: iconName, ariaLabel: iconName,\r\n styles: isActionButtonDisabled ? DefaultPageStyles.grayColor : DefaultPageStyles.redColor\r\n }}\r\n disabled={isActionButtonDisabled}\r\n onClick={() => { onRenderClickFunction(); console.log(); }}>\r\n </ActionButton>\r\n }\r\n\r\n // Primary Reseller Delete button event handler\r\n function onFinalAddtionalResellerDelete(id: string, type?: number, ev?: React.FormEvent<HTMLElement | HTMLInputElement>) {\r\n if (commonPPContextState.opportunityAccounts && id) {\r\n //Update Panel related variables\r\n if (type === PartnerType.FinalTierReseller) {\r\n let updatedResellers = finalTierResellerGridItems.filter((reseller) => reseller.id !== id);\r\n setFinalTierResellerGridItems(updatedResellers);\r\n }\r\n else if (type === PartnerType.AdditionalTierReseller) {\r\n let updatedResellers = additionalResellerGridItems.filter((reseller) => reseller.id !== id);\r\n setAdditionalResellerGridItems(updatedResellers);\r\n }\r\n\r\n //Update context\r\n let oppAccounts = [...commonPPContextState.opportunityAccounts].filter((acc) => acc.id !== id);\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: oppAccounts });\r\n\r\n if (type === PartnerType.AdditionalTierReseller) {\r\n const attachments = commonPPContextState.attachments?.filter(att => att && att.relatedEntityId !== id);\r\n commonPPContextDispatch({ type: CaseActionTypes.attachmentChanged, attachments: attachments });\r\n }\r\n\r\n const errorMessage = type === PartnerType.AdditionalTierReseller ? getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidateAdditionalReseller\", ErrorMessages.ValidateAdditionalReseller) : getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidateFinalReseller\", ErrorMessages.ValidateFinalReseller);\r\n clearErrorFromContext([type as PartnerType], oppAccounts, StatePropertiesText.ValidateFinalOrAdditionalReseller, errorMessage);\r\n }\r\n }\r\n\r\n // Attach Primary Reseller grid callbacks\r\n const attachPrimaryResellerCallbacks = (columnConfig: IColumnConfig[]): IColumnConfig[] => {\r\n const isFieldDisabled = getFieldConfigByState(commonPPContextState, \"PrimaryResellerContainer\", FieldMapMode.Disable);\r\n columnConfig.filter((item) => item.key === 'resellerEmailContacts').map((item) => item.onRender = onRenderResellerEmail);\r\n columnConfig.filter((item) => item.key === 'deleteAction').map((item) => item.onRender = onRenderResellerDelete);\r\n if (isFieldDisabled) {\r\n columnConfig.forEach((item, index) => {\r\n if (item.key === 'deleteAction') {\r\n columnConfig.splice(index, 1);\r\n }\r\n });\r\n }\r\n return columnConfig;\r\n };\r\n\r\n // Attach Distributor grid callbacks\r\n const attachDistributorCallbacks = (columnConfig: IColumnConfig[]): IColumnConfig[] => {\r\n columnConfig.filter((item) => item.key === 'distributorOwner').map((item) => item.onRender = onRenderDistributorOwner);\r\n columnConfig.filter((item) => item.key === 'distributorEmailContacts').map((item) => item.onRender = onRenderDistributorEmail);\r\n columnConfig.filter((item) => item.key === 'deleteAction').map((item) => item.onRender = onRenderDistributorDelete);\r\n if (loggedInUserRole === UserSubRole.ADD) {\r\n columnConfig.forEach((item, index) => {\r\n if (item.key === 'deleteAction') {\r\n columnConfig.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n return columnConfig;\r\n };\r\n\r\n // Overridden OnRender event for Email textbox with validations\r\n function onRenderResellerEmail(item?: any, index?: number, column?: IColumn): JSX.Element {\r\n const fieldContent = item[column?.fieldName || ''] as string;\r\n const isDisabled = getFieldConfigByState(commonPPContextState, \"PrimaryResellerContainer\", FieldMapMode.Disable);\r\n let gridInitialItems: PrimaryResellerGridItemsType[] = primaryResellerGridItems.filter((acc) => acc && acc.id === item?.id && acc.action === ActionType.Created);\r\n\r\n return renderTextFieldElement_HelperFunction(fieldContent, isDisabled, gridInitialItems, item, column);\r\n };\r\n\r\n // Overridden OnRender event for Email textbox with validations\r\n function onRenderDistributorOwner(item?: any, index?: number, column?: IColumn): JSX.Element {\r\n const id = (item?.id || '') as string;\r\n let isDisabled = loggedInUserRole === UserSubRole.ADD || (requesterAccount != null && item.id === requesterAccount?.id && requesterAccount?.channelSubType === ChannelSubType.Requester);\r\n return (\r\n <ChoiceGroup defaultSelectedKey={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText)}\r\n options={[{ key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText), text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) }, { key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText), text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText) }]}\r\n styles={OpportunityDetailsStyles.HorizontalChoiceGroup}\r\n required={true}\r\n onChange={(ev: any, option: any) => onDistributorOwnerChange(ev, option, id)}\r\n selectedKey={item.distributorOwner === false ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText)}\r\n disabled={isDisabled}\r\n />\r\n );\r\n };\r\n\r\n const onDistributorOwnerChange = (ev?: React.FormEvent<HTMLElement | HTMLInputElement>, option?: IChoiceGroupOption, id?: string): void => {\r\n if (option && option.key && opportunityAccounts) {\r\n let existingOpportunityAccounts = [...opportunityAccounts];\r\n var existingOwner = existingOpportunityAccounts.filter(t => t.partnerType === PartnerType.ADD && t.channelSubType === ChannelSubType.CoOwner);\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(existingOwner) && existingOwner?.length > 0) {\r\n existingOwner.forEach(x => {\r\n x.channelSubType = undefined;\r\n x.action = x.action === ActionType.Created ? ActionType.Update : x.action;\r\n x.accounts?.forEach(act => act.action = x?.action);\r\n });\r\n }\r\n let distributorAccount = existingOpportunityAccounts.find(acc => acc.id === id);\r\n if (distributorAccount) {\r\n distributorAccount.channelSubType = option.key === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) ? ChannelSubType.CoOwner : undefined;\r\n distributorAccount.action = distributorAccount.action === ActionType.Created ? ActionType.Update : distributorAccount.action;\r\n distributorAccount?.accounts?.forEach(act => act.action = distributorAccount?.action);\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: existingOpportunityAccounts });\r\n }\r\n }\r\n }\r\n\r\n // Overridden OnRender event for Email textbox with validations\r\n function onRenderDistributorEmail(item?: any, index?: number, column?: IColumn): JSX.Element {\r\n const fieldContent = item[column?.fieldName || ''] as string;\r\n const isDisabled = getFieldConfigByState(commonPPContextState, \"ChannelStackForDistributor\", FieldMapMode.Disable);\r\n let gridInitialItems: DistributorGridItemsType[] = distributorListGridItems.filter((acc) => acc && acc.id === item?.id && acc.action === ActionType.Created);\r\n\r\n return renderTextFieldElement_HelperFunction(fieldContent, (isDisabled && item?.action !== ActionType.Add), gridInitialItems, item, column);\r\n };\r\n\r\n //Common Helper function to render Multiline TextField Email \r\n function renderTextFieldElement_HelperFunction(fieldContent: string, isDisabled: boolean | undefined, gridInitialItems: DistributorGridItemsType[] | PrimaryResellerGridItemsType[] | IInitialAdditionalResellerValue[] | IInitialFinalTierResellerValue[], item?: any, column?: IColumn): JSX.Element {\r\n let isDisabledForExistingItems = getFieldStatusBasedOnExistingItemsActionFlag(item?.id, gridInitialItems);\r\n let isActionButtonDisabled = isDisabledForExistingItems || ((typeof (isDisabled) == 'undefined') ? false : isDisabled);\r\n\r\n return <TextField\r\n id={item[column?.key || '']}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContacts\", UIControlsText.ChannelContacts)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"EmailCCRecipientsPlaceholderTextExample\", UIControlsText.EmailCCRecipientsPlaceholderTextExample)}\r\n validateOnFocusOut\r\n required={true}\r\n multiline\r\n maxLength={1000}\r\n validateOnLoad={false}\r\n onGetErrorMessage={getEmailContactErrorMessage(StatePropertiesText.ValidateEmailText + item?.id)}\r\n onChange={onEmailContactsChange(item?.id)}\r\n disabled={isActionButtonDisabled}\r\n value={(requesterAccount != null && item.id === requesterAccount?.id) ? requesterAccount.contactEmail : commonPPContextState?.opportunityChannelContacts?.find(t => t.opportunityAccountId === item.id && t.source === \"Channel\")?.channelContactEmails}\r\n errorMessage={pivotTab?.errors?.get(StatePropertiesText.ValidateEmailText + item?.id)}\r\n />\r\n }\r\n\r\n // Reseller contact email change event handler\r\n const onEmailContactsChange = (accountId: string) => (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {\r\n let contacts: any[] = commonPPContextState.opportunityChannelContacts || [];\r\n if (contacts) {\r\n updateChannelContact(contacts, accountId, newValue);\r\n commonPPContextDispatch({ type: CaseActionTypes.channelContactChanged, channelContacts: contacts });\r\n }\r\n }\r\n\r\n // Overridden OnRender event for Primary Reseller Delete button\r\n function onRenderResellerDelete(item?: any, index?: number, column?: IColumn): JSX.Element {\r\n const accountId = item[column?.fieldName || ''] as string;\r\n const isFieldDisabled = getFieldConfigByState(commonPPContextState, \"PrimaryResellerContainer\", FieldMapMode.Disable);\r\n const iconName = CssClassConstants.DeleteIconName;\r\n let gridInitialItems: PrimaryResellerGridItemsType[] = primaryResellerGridItems.filter((acc) => acc && acc.id === accountId && acc.action === ActionType.Created);\r\n\r\n return renderActionButton(accountId, 'primaryResellerDeleteButton', iconName, isFieldDisabled, () => onResellerDelete(accountId), gridInitialItems);\r\n }\r\n\r\n // Overridden OnRender event for Distributor Delete button\r\n function onRenderDistributorDelete(item?: any, index?: number, column?: IColumn): JSX.Element {\r\n const accountId = item.id as string;\r\n const isFieldDisabled = getFieldConfigByState(commonPPContextState, \"StackItemForDistributorGrid\", FieldMapMode.Disable);\r\n const iconName = CssClassConstants.DeleteIconName;\r\n let gridInitialItems: DistributorGridItemsType[] = distributorListGridItems.filter((acc) => acc && acc.id === accountId && acc.action === ActionType.Created);;\r\n\r\n return renderActionButton(accountId, 'distributorDeleteButton', iconName, (item?.action !== ActionType.Add), (() => { onDistributorsDelete(accountId) }), gridInitialItems);\r\n }\r\n\r\n // Primary Reseller Delete button event handler\r\n function onResellerDelete(accountId: string, ev?: React.FormEvent<HTMLElement | HTMLInputElement>) {\r\n if (commonPPContextState.opportunityAccounts && accountId) {\r\n //Update Panel related variables\r\n let accounts = [...commonPPContextState.opportunityAccounts].find((acc) => acc.id === accountId)?.accounts || [];\r\n let updatedAccounts = selectedResellers.filter((account) => account.accountId !== accounts[0].accountId);\r\n setSelectedResellers(updatedAccounts);\r\n\r\n //Update context\r\n let oppAccounts = [...commonPPContextState.opportunityAccounts].filter((acc) => acc.id !== accountId);\r\n let contacts = [...commonPPContextState.opportunityChannelContacts || []].filter((contact) => contact.opportunityAccountId !== accountId);\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: oppAccounts });\r\n commonPPContextDispatch({ type: CaseActionTypes.channelContactChanged, channelContacts: contacts });\r\n clearErrorFromContext([PartnerType.ADR], oppAccounts, StatePropertiesText.ValidatePrimaryResellers, getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryResellersOnly\", ErrorMessages.ValidatePrimaryResellersOnly));\r\n }\r\n }\r\n\r\n // Distributor Delete button event handler\r\n function onDistributorsDelete(accountId: string, ev?: React.FormEvent<HTMLElement | HTMLInputElement>) {\r\n if (commonPPContextState.opportunityAccounts && accountId) {\r\n //Update Panel related variables\r\n let accounts = [...commonPPContextState.opportunityAccounts].find((acc) => acc.id === accountId)?.accounts || [];\r\n let updatedAccounts = selectedDistributors.filter((account) => account.accountId !== accounts[0].accountId)\r\n setSelectedDistributors(updatedAccounts);\r\n\r\n //Update context\r\n let oppAccounts = [...commonPPContextState.opportunityAccounts].filter((acc) => acc.id !== accountId);\r\n let contacts = [...commonPPContextState.opportunityChannelContacts || []].filter((contact) => contact.opportunityAccountId !== accountId);\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: oppAccounts });\r\n commonPPContextDispatch({ type: CaseActionTypes.channelContactChanged, channelContacts: contacts });\r\n clearErrorFromContext([PartnerType.ADD, PartnerType.DMP], oppAccounts, StatePropertiesText.ValidateMultipleDistributors, ErrorMessages.ValidatePrimaryDistributorOnly);\r\n }\r\n }\r\n\r\n //Common Helper function to check if the existing row's delete button needs to be disabled.\r\n function getFieldStatusBasedOnExistingItemsActionFlag(rowAccountId: string, gridInitialItems: DistributorGridItemsType[] | PrimaryResellerGridItemsType[] | IInitialAdditionalResellerValue[] | IInitialFinalTierResellerValue[]) {\r\n let isDisabled: boolean = false;\r\n\r\n if (gridInitialItems?.length > 0) {\r\n isDisabled = true;\r\n }\r\n return isDisabled;\r\n }\r\n\r\n //Add new IOpportunityAccount\r\n const addAccounts = (selectedAccounts: IAccount[]) => {\r\n //Remove uncheched accounts & its associated contacts\r\n let updatedAccounts = opportunityAccounts.filter(acc => acc.channelSubType === ChannelSubType.Requester || acc.partnerType === PartnerType.FinalTierReseller || acc.partnerType === PartnerType.AdditionalTierReseller || selectedAccounts.some(s => acc.accounts && acc.accounts[0]?.accountId === s.accountId));\r\n let updatedContacts = opportunityChannelContacts.filter(c => c.source !== getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText) || (c.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText) && updatedAccounts.some(a => a.id === c.opportunityAccountId)));\r\n\r\n let newAccounts = selectedAccounts.filter(ac => !opportunityAccounts.find((opp) => opp.accounts && opp.accounts[0]?.accountId === ac?.accountId))\r\n .map((acc) => { return getNewOpportunityAccount(acc.partnerType, acc); });\r\n let newContacts = newAccounts.map((acc) => { return getNewOpportunityChannelContact(acc?.id); });\r\n\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: [...updatedAccounts, ...newAccounts] });\r\n commonPPContextDispatch({ type: CaseActionTypes.channelContactChanged, channelContacts: [...updatedContacts, ...newContacts] });\r\n if (opportunityAccounts.find(t => (t.channelSubType !== ChannelSubType.Requester) && (t.partnerType === PartnerType.ADD || t.partnerType === PartnerType.ADR || t.partnerType === PartnerType.DMP)) !== null) {\r\n const pivotTabsData = commonPPContextState.pivotTabs;\r\n let pivotTabChannel = pivotTabsData?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)) || {};\r\n pivotTabChannel?.errors?.delete(StatePropertiesText.ValidatePrimaryResellers);\r\n pivotTabChannel?.errors?.delete(StatePropertiesText.ValidateMultipleDistributors);\r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabsData });\r\n }\r\n }\r\n\r\n //callback method to add new ADDs from Panel\r\n const onPrimaryResellerAdd = (selectedItems: any[], isResellerAdd?: boolean): void => {\r\n if (selectedItems) {\r\n const selectedData = [...selectedItems];\r\n selectedData.forEach(t => t.action = (t.action === ActionType.PanelAdd) ? ActionType.Add : t.action)\r\n if (isResellerAdd) {\r\n setSelectedResellers(selectedData);\r\n }\r\n else {\r\n setSelectedDistributors(selectedData);\r\n }\r\n\r\n addAccounts([...selectedData]);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n let partnerType = PartnerType.ADR;\r\n if (commonPPContextState.partnerDetails?.userRole === UserSubRole.ADD || commonPPContextState.partnerDetails?.userRole === UserSubRole.DMP) {\r\n partnerType = PartnerType.ADR;\r\n }\r\n else if (commonPPContextState.partnerDetails?.userRole === UserSubRole.ADR) {\r\n partnerType = PartnerType.DMP;\r\n }\r\n setSelectedResellerType(partnerType);\r\n setInitialResellerType(partnerType);\r\n setShowChannelContentBasedOnRoleType(getChannelPersona());\r\n\r\n }, [commonPPContextState.partnerDetails?.userRole, endCustomerCountry]);\r\n\r\n useEffect(() => {\r\n if (commonPPContextState?.opportunityDeals[0]?.geoCountries) {\r\n const countryId = commonPPContextState?.opportunityDeals[0]?.geoCountries[0] && commonPPContextState?.opportunityDeals[0]?.geoCountries[0].countryId;\r\n var endCustomerCountry = props.countries?.find(c => c.countryId === countryId);\r\n if (endCustomerCountry) {\r\n setEndCustomerCountry(endCustomerCountry);\r\n }\r\n }\r\n\r\n }, [commonPPContextState?.opportunityDeals[0]?.geoCountries]);\r\n\r\n useEffect(() => {\r\n //Initialize MSStore Opportunity Account if it doesn't exists and login persona is MSStore.\r\n if (showChannelContentBasedOnRoleType && commonPPContextState.opportunityAccounts && commonPPContextState.opportunityAccounts.length === 0\r\n && commonPPContextState.partnerDetails?.userRole !== undefined && endCustomerCountry) {\r\n //Add IOpportunityAccount for login user for requestor\r\n let requestor = addRequestorAccount();\r\n if (requestor) {\r\n if (showChannelContentBasedOnRoleType?.MSStore) {\r\n\r\n let msStore = getNewOpportunityAccount(PartnerType.MsStore);\r\n msStore.channelSubType = msStoreSalesChannel;\r\n msStore.accountCompanyName = defaultMSStoreSellerName;\r\n updateMSStoreCompleteFlag(msStore);\r\n let msContact = getNewOpportunityChannelContact(msStore.id as string);\r\n\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: [requestor, msStore] });\r\n commonPPContextDispatch({ type: CaseActionTypes.channelContactChanged, channelContacts: [msContact] });\r\n }\r\n else {\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: [requestor] });\r\n }\r\n }\r\n }\r\n }, [commonPPContextState.partnerDetails, showChannelContentBasedOnRoleType, endCustomerCountry, distributors.current, resellerAccounts.current]);\r\n\r\n const addRequestorAccount = () => {\r\n let account: IAccount | undefined;\r\n {\r\n if (commonPPContextState.partnerDetails?.userRole === UserSubRole.ADD) {\r\n account = distributorItems.current && distributorItems.current.find((acc: IAccount) => acc.accountId === commonPPContextState.partnerDetails?.accountId?.trim());\r\n }\r\n else if (commonPPContextState.partnerDetails?.userRole === UserSubRole.ADR || commonPPContextState.partnerDetails?.userRole === UserSubRole.DMP) {\r\n var loggedUserInfo: IUserDetail = JSON.parse(getUserSession());\r\n var user = loggedUserInfo.userRoleDetails.find((acc: IUserRoleDetail) => acc.accountId === commonPPContextState.partnerDetails?.accountId?.trim());\r\n if (user) {\r\n account = {\r\n accountId: user.accountId,\r\n accountName: user.organizationName || \"\",\r\n companyName: user.organizationName || \"\",\r\n organizationId: user.organizationId,\r\n locationId: user.locationId,\r\n countryId: commonPPContextState.partnerDetails?.countryId,\r\n countryName: commonPPContextState.partnerDetails?.countryName,\r\n productType: commonPPContextState.partnerDetails?.productGroupName,\r\n productTypeId: commonPPContextState.partnerDetails?.productGroupId\r\n };\r\n }\r\n }\r\n\r\n type PartnerDataType = keyof typeof PartnerType;\r\n let requestorAccount = getNewOpportunityAccount(JavaScriptExtensions.isEmptyOrNullOrUndefined(commonPPContextState.partnerDetails?.userRole) ? PartnerType.MsStore : PartnerType[commonPPContextState.partnerDetails?.userRole as PartnerDataType], account);\r\n requestorAccount.channelSubType = ChannelSubType.Requester;\r\n requestorAccount.contactEmail = sessionStorage.getItem(SessionStorageConsts.userEmail) || \"\";\r\n return requestorAccount;\r\n }\r\n }\r\n\r\n // MSStoreSalesChannel change event handler\r\n const onMSStoreChannelChange = (ev?: React.FormEvent<HTMLElement | HTMLInputElement>, option?: IChoiceGroupOption): void => {\r\n if (option && option.key && opportunityAccounts) {\r\n let msStore = msStoreAccount;\r\n if (msStore) {\r\n msStore.channelSubType = parseInt(option.key) as ChannelSubType;\r\n updateMSStoreCompleteFlag(msStore);\r\n setMsStoreSalesChannel(msStore.channelSubType);\r\n let accounts = commonPPContextState.opportunityAccounts?.filter(acc => acc.id !== msStore?.id) || [];\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: [...accounts, msStore] });\r\n\r\n //Update error message for MS Store address\r\n getTextFieldErrorMessageMsStore(msStore.channelSubType === ChannelSubType.DSS ? getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredMSStoreHub\", ErrorMessages.RequiredMSStoreHub) : getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredMSStoreDigitalStore\", ErrorMessages.RequiredMSStoreDigitalStore), StatePropertiesText.PartnerAddress)(msStore?.address || '');\r\n }\r\n }\r\n }\r\n\r\n //Common event handler for MSStore text-boxes\r\n const onMSStoreTextFieldChange = (targetPropertyName: string) => (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {\r\n let msStore: any = msStoreAccount;\r\n msStore[targetPropertyName] = newValue;\r\n updateMSStoreCompleteFlag(msStore);\r\n let accounts = commonPPContextState.opportunityAccounts?.filter(acc => acc.id !== msStore.id) || [];\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: [...accounts, msStore] });\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(newValue) && !JavaScriptExtensions.isEmptyOrNullOrUndefined(pivotTab?.errors?.get(targetPropertyName || \"\"))) {\r\n setErrorsDataIntoContext('', targetPropertyName || \"\");\r\n }\r\n }\r\n\r\n const updateMSStoreCompleteFlag = (msStore: IOpportunityAccount): void => {\r\n msStore.isComplete = !(!JavaScriptExtensions.isDefined(msStore.channelSubType) || JavaScriptExtensions.isEmptyOrNullOrUndefined(msStore.address) || JavaScriptExtensions.isEmptyOrNullOrUndefined(msStore.city) || JavaScriptExtensions.isEmptyOrNullOrUndefined(msStore.stateProvince) || JavaScriptExtensions.isEmptyOrNullOrUndefined(msStore.accountCompanyName))\r\n }\r\n\r\n //Event handler for MSStore email\r\n const onMSStoreContactEmailChange = () => (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {\r\n if (opportunityAccounts) {\r\n const msStore = msStoreAccount;\r\n if (msStore) {\r\n let contacts: IOpportunityChannelContact[] = commonPPContextState?.opportunityChannelContacts || [];\r\n if (contacts) {\r\n updateChannelContact(contacts, msStore.id, newValue);\r\n commonPPContextDispatch({ type: CaseActionTypes.channelContactChanged, channelContacts: contacts });\r\n }\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(newValue) && !JavaScriptExtensions.isEmptyOrNullOrUndefined(pivotTab?.errors?.get(StatePropertiesText.MSStoreContactEmail || \"\"))) {\r\n setErrorsDataIntoContext('', StatePropertiesText.MSStoreContactEmail || \"\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Get MSStore Email TextField ErrorMessage.\r\n const getMSStoreEmailErrorMessage = (value: string): string => {\r\n let message = validateMSStoreEmailErrorMessage(value);\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(StatePropertiesText.MSStoreContactEmail)) {\r\n setErrorsDataIntoContext(message, (StatePropertiesText.ValidateEmailText + msStoreAccount?.id));\r\n }\r\n\r\n return message;\r\n };\r\n\r\n // Get Email Contacts TextField ErrorMessage.\r\n const getEmailContactErrorMessage = (targetPropertyId?: string) => (value: string): string => {\r\n return validateContactErrorMessage(value, targetPropertyId)\r\n };\r\n\r\n const validateContactErrorMessage = (value: string, targetPropertyId?: string): string => {\r\n let message = '';\r\n if (!value) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredResellerEmail\", ErrorMessages.RequiredResellerEmail);\r\n }\r\n else if (!isValidEmailWithSeperator(value, \";\")) {\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"InvalidResellerEmail\", ErrorMessages.InvalidResellerEmail);\r\n }\r\n\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(targetPropertyId)) {\r\n setErrorsDataIntoContext(message, targetPropertyId || \"\");\r\n }\r\n return message;\r\n }\r\n\r\n const setErrorsDataIntoContext = (message: string, targetPropertyId: string) => {\r\n const pivotTabsData = commonPPContextState.pivotTabs;\r\n var pivotTab = pivotTabsData?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText));\r\n if (JavaScriptExtensions.isEmptyOrNullOrUndefined(message)) {\r\n pivotTab?.errors?.delete(targetPropertyId);\r\n }\r\n else {\r\n pivotTab?.errors?.set(targetPropertyId, message);\r\n }\r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabsData })\r\n }\r\n\r\n //Updates the contact, based on the id provided\r\n function updateChannelContact(contacts: IOpportunityChannelContact[], id?: string, email?: string, isMSStore?: boolean) {\r\n let updatedContact = contacts.find(c => c.opportunityAccountId === id);\r\n email = email?.replace(',', ';');\r\n if (updatedContact) {\r\n updatedContact.channelContactEmails = email?.replace(',', ';');\r\n updatedContact.isComplete = isMSStore ? getMSStoreEmailErrorMessage(email || '') === '' : validateContactErrorMessage(email || '', StatePropertiesText.ValidateEmailText + id) === '';\r\n } else {\r\n //This indicates that in the list of contacts (accounts) that is available in the state, there is no existing account available.\r\n updatedContact = getNewOpportunityChannelContact(id, email);\r\n contacts.push(updatedContact);\r\n }\r\n }\r\n\r\n // FinalTierReseller Choice change event handler\r\n const onFinalTierResellerChange = (ev?: React.FormEvent<HTMLElement | HTMLInputElement>, option?: IChoiceGroupOption): void => {\r\n if (option && option.key) {\r\n setFinalTierReseller(option.key);\r\n if (option.key === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText)) {\r\n let updatedAccounts = opportunityAccounts.filter(acc => acc.partnerType !== PartnerType.FinalTierReseller);\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: updatedAccounts });\r\n setErrorsDataIntoContext('', StatePropertiesText.ValidateFinalOrAdditionalReseller);\r\n }\r\n commonPPContextDispatch({ type: CaseActionTypes.isFinalOrAdditionalResellerSelected, boolValue: option.key === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) });\r\n }\r\n }\r\n\r\n // AddtionalReseller Choice change event handler\r\n const onAddtionalResellerChange = (ev?: React.FormEvent<HTMLElement | HTMLInputElement>, option?: IChoiceGroupOption): void => {\r\n if (option && option.key) {\r\n setAddtionalReseller(option.key);\r\n if (option.key === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText)) {\r\n let updatedAccounts = opportunityAccounts.filter(acc => acc.partnerType !== PartnerType.AdditionalTierReseller);\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: updatedAccounts });\r\n setErrorsDataIntoContext('', StatePropertiesText.ValidateFinalOrAdditionalReseller);\r\n }\r\n\r\n commonPPContextDispatch({ type: CaseActionTypes.isFinalOrAdditionalResellerSelected, boolValue: option.key === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) });\r\n }\r\n }\r\n\r\n const text = <span style={{ fontSize: 12, marginTop: 10 }}>For additional resellers you must complete a copy of <Link onClick={(event) => OnFlowDownLinkClick(event, \"Flowdown Terms Application.pdf\")}>Flow Down Terms Application</Link > which must be submitted as attachment in the form.</span>;\r\n\r\n const OnFlowDownLinkClick = (event: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement | HTMLElement>, fileName: string): void => {\r\n nextGenService.getDocumentFromBlob(fileName)\r\n .then((response) => {\r\n downloadFile(fileName, response.data);\r\n });\r\n };\r\n\r\n const [addSaveResellerButtonInEdit, addAdditionalResellerButtonInEdit] = additionalResellerGridItems.length && commonPPContextState.pageMode === PageMode.Edit ? [false, false] : [true, true];\r\n const [addSaveFinalButtonInEdit, addFinalResellerButtonInEdit] = finalTierResellerGridItems.length && commonPPContextState.pageMode === PageMode.Edit ? [false, false] : [true, true];\r\n\r\n /**\r\n * Content for the Channel tab with JSON format\r\n * @json\r\n */\r\n const ChannelJson = [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'ChannelContainerLoadingSpinner',\r\n visible: isResellerLoading,\r\n components: [\r\n {\r\n type: 'Spinner',\r\n data: {\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingReseller\", UIControlsText.LoadingReseller)\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'CustomTileCardComponent',\r\n data: {\r\n id: 'DocCardContainerForMSStore',\r\n visible: showChannelContentBasedOnRoleType?.MSStore,\r\n baseState: commonPPContextState,\r\n name: \"MS Store Details\",\r\n 'data-nextgen-parent-group': \"Create - MS Store Details\",\r\n 'data-nextgen-parentid': \"Create - MS Store Details\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MsStoreText\", UIControlsText.MsStoreText),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: UIConfigIdentifierConstants.ChannelContainerForMSStoreId,\r\n visible: showChannelContentBasedOnRoleType?.MSStore,\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n tokens: itemAlignmentsStackTokens10,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'MSStoreChannelSection',\r\n horizontal: true,\r\n visible: showChannelContentBasedOnRoleType?.MSStore,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemMSStoreChannel',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"GuidanceTextInformation\",\r\n data: {\r\n id: UIConfigIdentifierConstants.GuidanceTextForMSStoreId,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"GuidanceTextForMSStore\", UIControlsText.GuidanceTextForMSStore),\r\n styles: PageStyles.textFieldStylesTwoColumn,\r\n }\r\n },\r\n {\r\n type: \"ChoiceGroup\",\r\n data: {\r\n id: \"MSStoreChannel\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreChannel\", UIControlsText.MSStoreChannel),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreChannel\", UIControlsText.MSStoreChannel),\r\n styles: DealDetailsStyles.horizontalChoiceGroup,\r\n options: [{ key: ChannelSubType.DSS, text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DSSText\", UIControlsText.DSSText) }, { key: ChannelSubType.DigitalStore, text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DigitalStore\", UIControlsText.DigitalStore), styles: { field: DealDetailsStyles.marginLeft10 } }],\r\n required: true,\r\n defaultSelectedKey: msStoreSalesChannel,\r\n selectedKey: msStoreSalesChannel,\r\n onChange: onMSStoreChannelChange\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'MSStoreAddressSection',\r\n horizontal: true,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemMSStoreAddress',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n data: {\r\n id: \"MSStoreAddressTextField\",\r\n name: \"MSStoreAddressTextField\",\r\n label: msStoreSalesChannel == ChannelSubType.DSS ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Hub\", UIControlsText.Hub) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DigitalStoreName\", UIControlsText.DigitalStoreName),\r\n ariaLabel: msStoreSalesChannel == ChannelSubType.DSS ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Hub\", UIControlsText.Hub) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DigitalStoreName\", UIControlsText.DigitalStoreName),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DeviceShipToAddressPlaceholderTextExample\", UIControlsText.DeviceShipToAddressPlaceholderTextExample),\r\n required: true,\r\n maxLength: 100,\r\n onGetErrorMessage: getTextFieldErrorMessageMsStore(msStoreSalesChannel === ChannelSubType.DSS ? getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredMSStoreHub\", ErrorMessages.RequiredMSStoreHub) : getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredMSStoreDigitalStore\", ErrorMessages.RequiredMSStoreDigitalStore), StatePropertiesText.PartnerAddress),\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n value: msStoreAccount?.address,\r\n onChange: onMSStoreTextFieldChange(StatePropertiesText.PartnerAddress),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.PartnerAddress)\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemMSStoreCity',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n data: {\r\n id: \"MSStoreCityTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CityText\", UIControlsText.CityText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DeviceShipToCityPlaceholderTextExample\", UIControlsText.DeviceShipToCityPlaceholderTextExample),\r\n defaultValue: \"\",\r\n required: true,\r\n onGetErrorMessage: getTextFieldErrorMessageMsStore(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredCity\", ErrorMessages.RequiredCity), StatePropertiesText.PartnerCity),\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n value: msStoreAccount?.city,\r\n onChange: onMSStoreTextFieldChange(StatePropertiesText.PartnerCity),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.PartnerCity)\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemMSStoreState',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n data: {\r\n id: \"MSStoreStateTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"StateProvinceText\", UIControlsText.StateProvinceText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"StateProvinceText\", UIControlsText.StateProvinceText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DeviceShipToStatePlaceholderTextExample\", UIControlsText.DeviceShipToStatePlaceholderTextExample),\r\n defaultValue: \"\",\r\n required: msStoreSalesChannel === ChannelSubType.DigitalStore,\r\n onGetErrorMessage: msStoreSalesChannel === ChannelSubType.DigitalStore ? getTextFieldErrorMessageMsStore(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredState\", ErrorMessages.RequiredState), StatePropertiesText.PartnerState) : \"\",\r\n validateOnLoad: false,\r\n validateOnFocusOut: true,\r\n maxLength: 100,\r\n value: msStoreAccount?.stateProvince,\r\n onChange: onMSStoreTextFieldChange(StatePropertiesText.PartnerState),\r\n errorMessage: msStoreSalesChannel === ChannelSubType.DigitalStore ? pivotTab?.errors?.get(StatePropertiesText.PartnerState) : \"\"\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'MSStoreContact',\r\n horizontal: true,\r\n disableshrink: true,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemMSStoreSellerName',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n data: {\r\n id: \"MSStoreSellerNameTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreSellerName\", UIControlsText.MSStoreSellerName),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreSellerName\", UIControlsText.MSStoreSellerName),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreSellerNamePlaceholderText\", UIControlsText.MSStoreSellerNamePlaceholderText),\r\n defaultValue: defaultMSStoreSellerName,\r\n required: true,\r\n onGetErrorMessage: getTextFieldErrorMessageMsStore(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredMSStoreSellerName\", ErrorMessages.RequiredMSStoreSellerName), StatePropertiesText.PartnerSellerName),\r\n validateOnLoad: false,\r\n maxLength: 100,\r\n validateOnFocusOut: true,\r\n value: msStoreAccount?.accountCompanyName,\r\n onChange: onMSStoreTextFieldChange(StatePropertiesText.PartnerSellerName),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.PartnerSellerName)\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemMSStoreSellerEmail',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"TextField\",\r\n data: {\r\n id: \"MSStoreSellerEmailTextField\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreSellerEmail\", UIControlsText.MSStoreSellerEmail),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MSStoreSellerEmail\", UIControlsText.MSStoreSellerEmail),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"MSStoreSellerEmailPlaceholderText\", UIControlsText.MSStoreSellerEmailPlaceholderText),\r\n defaultValue: \"\",\r\n required: true,\r\n onGetErrorMessage: getMSStoreEmailErrorMessage,\r\n validateOnLoad: false,\r\n maxLength: 1000,\r\n validateOnFocusOut: true,\r\n value: opportunityChannelContacts.find(c => c.opportunityAccountId === msStoreAccount?.id)?.channelContactEmails,\r\n onChange: onMSStoreContactEmailChange(),\r\n errorMessage: pivotTab?.errors?.get(StatePropertiesText.ValidateEmailText + msStoreAccount?.id)\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'CustomTileCardComponent',\r\n data: {\r\n id: 'DocCardContainerForReseller',\r\n baseState: commonPPContextState,\r\n name: \"Reseller Details\",\r\n 'data-nextgen-parent-group': \"Create - Reseller Details\",\r\n 'data-nextgen-parentid': \"Create - Reseller Details\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellersIcon\", UIControlsText.ResellersIcon),\r\n visible: !(showChannelContentBasedOnRoleType?.MSStore) && !isResellerLoading && (showChannelContentBasedOnRoleType?.FinalTierAndDistributors || showChannelContentBasedOnRoleType?.AdditionalAndDistributors || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers || showChannelContentBasedOnRoleType?.PrimaryAndFinalTierResellers || showChannelContentBasedOnRoleType?.PrimaryResellersOnly || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackReseller',\r\n visible: !(showChannelContentBasedOnRoleType?.MSStore) && !isResellerLoading && (showChannelContentBasedOnRoleType?.FinalTierAndDistributors || showChannelContentBasedOnRoleType?.AdditionalAndDistributors || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers || showChannelContentBasedOnRoleType?.PrimaryAndFinalTierResellers || showChannelContentBasedOnRoleType?.PrimaryResellersOnly || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers),\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n tokens: smallAlignmentTokens,\r\n wrap: true,\r\n components: [\r\n //Reseller Grid\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemForAddChannelRoleBasedContentForReseller',\r\n vertical: true,\r\n wrap: true,\r\n visible: showChannelContentBasedOnRoleType?.FinalTierAndDistributors || showChannelContentBasedOnRoleType?.AdditionalAndDistributors || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers || showChannelContentBasedOnRoleType?.PrimaryAndFinalTierResellers || showChannelContentBasedOnRoleType?.PrimaryResellersOnly || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers,\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: UIConfigIdentifierConstants.PrimaryResellerContainerId,\r\n visible: showChannelContentBasedOnRoleType?.PrimaryAndFinalTierResellers || showChannelContentBasedOnRoleType?.PrimaryResellersOnly || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers,\r\n components: [\r\n {\r\n type: \"CustomViewModeComponent\",\r\n data: {\r\n id: \"LabelResellerInformation\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerInformation\", UIControlsText.ResellerInformation),\r\n styles: PageStyles.sectionHeading,\r\n }\r\n },\r\n {\r\n type: \"GuidanceTextInformation\",\r\n data: {\r\n id: UIConfigIdentifierConstants.GuidanceTextForResellerId,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"GuidanceTextForReseller\", UIControlsText.GuidanceTextForReseller),\r\n styles: PageStyles.textFieldStylesWidth146,\r\n visible: true\r\n }\r\n },\r\n {\r\n type: \"PanelTableContainer\",\r\n data: {\r\n invokePanelProps: {\r\n iconProps: {\r\n iconName: CssClassConstants.AddItemIconName,\r\n ariaLabel: CssClassConstants.AddIconName\r\n },\r\n buttonStyles: PageStyles.buttonStylesLong,\r\n buttonText: showChannelContentBasedOnRoleType?.PrimaryResellersOnly ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddResellerText\", UIControlsText.AddResellerText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddPrimaryResellerText\", UIControlsText.AddPrimaryResellerText),\r\n onButtonClick: () => onPanelClick('reseller'),\r\n disabled: (opportunityAccounts.filter(acc => acc.partnerType === PartnerType.ADR || acc.partnerType === PartnerType.DMP).length >= channelConfig.Config.PrimaryResellerCount)\r\n || getFieldConfigByState(commonPPContextState, \"PrimaryResellerContainer\", FieldMapMode.Disable)\r\n || commonPPContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview\r\n },\r\n messageBar: {\r\n messageBarType: MessageBarType.error,\r\n isMultiline: false,\r\n dismissButtonAriaLabel: \"Close\"\r\n },\r\n panelType: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Reseller\", UIControlsText.Reseller),\r\n errorMessage: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameErrorMessage\", UIControlsText.ResellerNameErrorMessage) || '',\r\n headerText: GridType.ResellersList,\r\n sortingDataType: 'number',\r\n propertyName: 'organizationId',\r\n onItemSelection: onResellerOrDistributorChange,\r\n onClearAll: onClearAll,\r\n tableConfigurationFields: resellerTableConfigurations,\r\n selectionType: GridSelectionType.Single,\r\n columnDefinitions: resellerColumnDefinitions,\r\n tableContent: resellers && resellers.current && resellers.current.length > 0 && resellers.current.map((pt: any) => ({\r\n key: `${pt.accountId}-${pt.partnerType}`, id: pt.accountId, name: pt.companyName, data: partnerTypeValues[`${pt.partnerType}`], partnerType: pt.partnerType, country: pt.countryName, countryId: pt.countryId, organizationId: pt.organizationId, countryGeo: pt.applicablePriceListGeo,\r\n editMode: false\r\n })) || [],\r\n countrySelected: selectedResellerCountry,\r\n geoSelected: endCustomerCountry?.applicablePriceListGeo,\r\n partnerTypeSelected: selectedResellerType,\r\n selectedItems: selectedResellers && selectedResellers.map((x: any) => ({\r\n key: `${x.accountId}-${x.partnerType}`, id: x.accountId, name: x.companyName, data: partnerTypeValues[`${x.partnerType}`], partnerType: x.partnerType, country: x.countryName, countryId: x.countryId, countryGeo: x.applicablePriceListGeo, organizationId: x.organizationId, action: x.action,\r\n editMode: isEditableRow(selectedResellerCountry, commonPPContextState?.pageMode, currentDealStatusCode, x, x.partnerType)\r\n } as any)) || [],\r\n disableSelectAllSelection: false,\r\n primaryButtonProps: {\r\n ariaLabel: 'AddReseller',\r\n text: showChannelContentBasedOnRoleType?.PrimaryResellersOnly ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddResellerText\", UIControlsText.AddResellerText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddPrimaryResellerText\", UIControlsText.AddPrimaryResellerText),\r\n onClick: () => onAddButtonClicked(true),\r\n style: PageStyles.panelButtonStyle,\r\n },\r\n onDefaultButtonClick: onClearAll,\r\n footerTextField: `${selectedResellers && selectedResellers.length} Resellers selected`,\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: !JavaScriptExtensions.isEmptyOrNullOrUndefined(pivotTab?.errors?.get(StatePropertiesText.ValidatePrimaryResellers)),\r\n data: {\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n contolType: UIControlType.Label,\r\n id: \"ValidatePrimaryResellerError\",\r\n value: pivotTab?.errors?.get(StatePropertiesText.ValidatePrimaryResellers),\r\n className: 'ms-LabelValueInvalid',\r\n styles: DefaultPageStyles.customWidthStyleAuto\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"DetailListEditableGrid\",\r\n data: {\r\n id: \"DetailsListGridForPrimaryReseller\",\r\n key: \"DetailsListGridForPrimaryReseller\",\r\n styles: { root: { height: \"100%\" } },\r\n items: primaryResellerGridItems,\r\n columns: attachPrimaryResellerCallbacks(PrimaryResellerGridColumnConfig),\r\n gridConfigOptions: {\r\n enableCellEdit: commonPPContextState?.pageMode == PageMode.Create,\r\n },\r\n enableDefaultEditMode: commonPPContextState?.pageMode == PageMode.Create,\r\n height: \"140px\",\r\n width: \"100%\",\r\n visible: primaryResellerGridItems?.length !== 0,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"AdditionalResellersContainer\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalResellersInformation\", UIControlsText.AdditionalResellersInformation),\r\n styles: stackItemStyles,\r\n visible: showChannelContentBasedOnRoleType?.AdditionalAndDistributors || showChannelContentBasedOnRoleType?.PrimaryandAdditionalResellers,\r\n components: [\r\n {\r\n type: \"ChoiceGroup\",\r\n data: {\r\n id: UIConfigIdentifierConstants.AdditionalResellersChoiceGroupId,\r\n defaultSelectedKey: addtionalReseller,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalResellerChoiceQuestion\", UIControlsText.AdditionalResellerChoiceQuestion),\r\n styles: ChoiceGroupStyles.ChoiceGroupHorizontal,\r\n options: [{ key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText), text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) }, { key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText), text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText) }],\r\n selectedKey: addtionalReseller,\r\n required: true,\r\n onChange: onAddtionalResellerChange,\r\n }\r\n },\r\n {\r\n type: \"CustomViewModeComponent\",\r\n data: {\r\n id: \"LabelAdditionalResellerInformation\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalResellersInformation\", UIControlsText.AdditionalResellersInformation),\r\n styles: PageStyles.sectionHeading,\r\n visible: addtionalReseller === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText),\r\n }\r\n },\r\n {\r\n type: \"PanelFieldContainer\",\r\n data: {\r\n invokePanelProps: {\r\n iconProps: {\r\n iconName: CssClassConstants.AddItemIconName,\r\n ariaLabel: CssClassConstants.AddItemIconName\r\n },\r\n buttonStyles: PageStyles.buttonStylesLong,\r\n buttonText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddAdditionResellersText\", UIControlsText.AddAdditionResellersText),\r\n disabled: addtionalReseller !== getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText)\r\n || commonPPContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview,\r\n onButtonClick: () => onPanelFieldClick('additionalReseller'),\r\n },\r\n headerText: `${getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AdditionalReseller\", UIControlsText.AdditionalReseller)} ${currentAdditionalResellerIndex + 1} `,\r\n text: text,\r\n panelContent: panelContent(true, additionalResellerGridItems)[currentAdditionalResellerIndex],\r\n openPanel: showAddtionalResellerPanel,\r\n primaryButtonFields: {\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddAdditionResellersText\", UIControlsText.AddAdditionResellersText),\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddAdditionResellersText\", UIControlsText.AddAdditionResellersText),\r\n disabled: addAdditionalResellerButtonStatus && addAdditionalResellerButtonInEdit,\r\n style: PageStyles.panelButtonStyle,\r\n onClick: onAddAdditionalResellers,\r\n },\r\n secondaryButtonFields: {\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SaveAndAddNextButton\", UIControlsText.SaveAndAddNextButton),\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SaveAndAddNextButton\", UIControlsText.SaveAndAddNextButton),\r\n disabled: (additonalReselleraddSaveNextButtonStatus && addSaveResellerButtonInEdit) || currentAdditionalResellerIndex === 4,\r\n style: PageStyles.panelButtonStyle,\r\n onClick: onAddAdditionalResellerSaveNextClick\r\n },\r\n onNextButtonClick: onAdditionalNextButtonClicked,\r\n onBackButtonClick: onAdditionalBackButtonClicked,\r\n onCancel: onCancelButtonClicked,\r\n onDismissed: dismissAddtionalResellerPanel,\r\n isBackButtonDisabled: currentAdditionalResellerIndex === 0,\r\n isNextButtonDisabled: additionalResellerGridItems.length - 1 === currentAdditionalResellerIndex,\r\n showErrorMessage: additionalErrorFields.length > 0 && additionalResellerErrorValues().length > 0,\r\n errorMessage: `Missing Fields: ${additionalErrorFields.join(' , ')} `,\r\n messageBar: {\r\n messageBarType: MessageBarType.error,\r\n isMultiline: true,\r\n dismissButtonAriaLabel: \"Close\"\r\n },\r\n isError: additionalResellerErrorValues().length > 0,\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: !JavaScriptExtensions.isEmptyOrNullOrUndefined(pivotTab?.errors?.get(StatePropertiesText.ValidateFinalOrAdditionalReseller)),\r\n data: {\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n contolType: UIControlType.Label,\r\n id: \"FinalOrAdditionalResellerError\",\r\n value: pivotTab?.errors?.get(StatePropertiesText.ValidateFinalOrAdditionalReseller),\r\n className: 'ms-LabelValueInvalid',\r\n styles: DefaultPageStyles.customWidthStyleAuto\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"DetailListEditableGrid\",\r\n data: {\r\n id: \"DetailsListCustomColumnsForAdditionalReseller\",\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n items: getGridDisplayItems(additionalResellerGridItems),\r\n columns: attachFinalAdditionalResellerGridCallbacks(AdditionalResellerGridColumnConfig, PartnerType.AdditionalTierReseller),\r\n position: 'relative',\r\n visible: getGridDisplayItems(additionalResellerGridItems)?.length !== 0,\r\n height: (85 + (30 * additionalResellerGridItems?.length)) + \"px\",\r\n width: \"100%\"\r\n //Disabled enabled based on above choice\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"FinalTierResellerContainer\",\r\n styles: stackItemStyles,\r\n visible: showChannelContentBasedOnRoleType?.FinalTierAndDistributors || showChannelContentBasedOnRoleType?.PrimaryAndFinalTierResellers,\r\n components: [\r\n {\r\n type: \"ChoiceGroup\",\r\n data: {\r\n id: UIConfigIdentifierConstants.FinalTierResellersChoiceGroupId,\r\n styles: ChoiceGroupStyles.ChoiceGroupHorizontal,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"FinalTierResellerQuestion\", UIControlsText.FinalTierResellerQuestion),\r\n defaultSelectedKey: finalTierReseller,\r\n options: [{ key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText), text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) }, { key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText), text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NoText\", UIControlsText.NoText) }],\r\n required: true,\r\n selectedKey: finalTierReseller,\r\n onChange: onFinalTierResellerChange,\r\n }\r\n },\r\n {\r\n type: \"CustomViewModeComponent\",\r\n data: {\r\n id: \"LabelFinalTierResellerInformation\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"FinalTierResellerInformation\", UIControlsText.FinalTierResellerInformation),\r\n styles: PageStyles.textFieldStylesTwoColumn\r\n }\r\n },\r\n {\r\n type: \"PanelFieldContainer\",\r\n data: {\r\n invokePanelProps: {\r\n iconProps: {\r\n iconName: CssClassConstants.AddItemIconName,\r\n ariaLabel: CssClassConstants.AddItemIconName\r\n },\r\n buttonStyles: PageStyles.buttonStylesLong,\r\n buttonText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddFinalTier\", UIControlsText.AddFinalTier),\r\n disabled: finalTierReseller != getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText)\r\n || commonPPContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview,\r\n onButtonClick: () => onPanelFieldClick('finalTierReseller'),\r\n },\r\n headerText: `${getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"FinalTierReseller\", UIControlsText.FinalTierReseller)} ${currentFinalTierIndex + 1} `,\r\n panelContent: panelContent(false, finalTierResellerGridItems)[currentFinalTierIndex],\r\n openPanel: showFinalResellerPanel,\r\n primaryButtonFields: {\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddFinalTierResellers\", UIControlsText.AddFinalTierResellers),\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddFinalTierResellers\", UIControlsText.AddFinalTierResellers),\r\n disabled: addFinalResellerButtonStatus && addFinalResellerButtonInEdit,\r\n style: PageStyles.panelButton,\r\n onClick: onAddFinalTierResellers,\r\n },\r\n secondaryButtonFields: {\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SaveAndAddNextButton\", UIControlsText.SaveAndAddNextButton),\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SaveAndAddNextButton\", UIControlsText.SaveAndAddNextButton),\r\n disabled: (addSaveNextButtonStatus && addSaveFinalButtonInEdit) || currentFinalTierIndex === 1,\r\n onClick: onAddSaveNextClick,\r\n style: PageStyles.panelButton\r\n },\r\n onNextButtonClick: onNextClicked,\r\n onBackButtonClick: onBackClicked,\r\n onCancel: onCancelClick,\r\n onDismissed: dismissFinalResellerPanel,\r\n isBackButtonDisabled: currentFinalTierIndex === 0,\r\n isNextButtonDisabled: finalTierResellerGridItems.length - 1 === currentFinalTierIndex,\r\n showErrorMessage: errorFields.length > 0 && finalTierErrorValues().length > 0,\r\n errorMessage: `Missing Fields: ${errorFields.join(' , ')} `,\r\n messageBar: {\r\n messageBarType: MessageBarType.error,\r\n isMultiline: true,\r\n dismissButtonAriaLabel: \"Close\"\r\n },\r\n isError: finalTierErrorValues().length > 0,\r\n }\r\n },\r\n {\r\n type: \"DetailListEditableGrid\",\r\n data: {\r\n id: \"DetailsListCustomColumnsForFinalTierReseller\",\r\n styles: PageStyles.textFieldPanelWidth,\r\n items: getGridDisplayItems(finalTierResellerGridItems),\r\n columns: attachFinalAdditionalResellerGridCallbacks(FinalTierResellerGridColumnConfig, PartnerType.FinalTierReseller),\r\n visible: getGridDisplayItems(finalTierResellerGridItems)?.length !== 0,\r\n height: (85 + (30 * finalTierResellerGridItems?.length)) + \"px\",\r\n width: \"100%\"\r\n //Disabled enabled based on above choice\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'CustomTileCardComponent',\r\n data: {\r\n id: 'DocCardContainerForDistributor',\r\n baseState: commonPPContextState,\r\n name: \"Distributor Details\",\r\n 'data-nextgen-parent-group': \"Create - Distributor Details\",\r\n 'data-nextgen-parentid': \"Create - Distributor Details\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DistributorIcon\", UIControlsText.DistributorIcon),\r\n visible: showChannelContentBasedOnRoleType?.MultipleDistributorsOnly || showChannelContentBasedOnRoleType?.FinalTierAndDistributors || showChannelContentBasedOnRoleType?.AdditionalAndDistributors,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'ChannelStackForDisti',\r\n visible: showChannelContentBasedOnRoleType?.MultipleDistributorsOnly || showChannelContentBasedOnRoleType?.FinalTierAndDistributors || showChannelContentBasedOnRoleType?.AdditionalAndDistributors,\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n tokens: smallAlignmentTokens,\r\n verticalAlign: \"start\",\r\n horizontal: true,\r\n components: [\r\n //Distributor Grid\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemForAddChannelRoleBasedContentForDistributor',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n tokens: smallAlignmentTokens,\r\n components: [\r\n {\r\n type: \"GuidanceTextInformation\",\r\n visible: loggedInUserRole !== UserSubRole.ADD,\r\n data: {\r\n id: \"GuidanceTextForDistributor\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"GuidanceTextForDistributor\", UIControlsText.GuidanceTextForDistributor),\r\n styles: DefaultPageStyles.customWidthStyleAuto\r\n }\r\n },\r\n {\r\n type: \"PanelTableContainer\",\r\n data: {\r\n invokePanelProps: {\r\n iconProps: {\r\n iconName: CssClassConstants.AddItemIconName,\r\n ariaLabel: CssClassConstants.AddItemIconName\r\n },\r\n buttonStyles: PageStyles.buttonStylesLong,\r\n disabled: loggedInUserRole === UserSubRole.ADD || commonPPContextState.opportunityDeals[0]?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview,\r\n className: \"me-2\",\r\n buttonText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddDistributors\", UIControlsText.AddDistributors),\r\n onButtonClick: () => onPanelClick('distributor'),\r\n },\r\n headerText: GridType.DistributorList,\r\n sortingDataType: 'name',\r\n propertyName: 'name',\r\n messageBar: {\r\n messageBarType: MessageBarType.error,\r\n isMultiline: false,\r\n dismissButtonAriaLabel: \"Close\"\r\n },\r\n panelType: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Distributor\", UIControlsText.Distributor),\r\n errorMessage: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DistributorNameErrorMessage\", UIControlsText.DistributorNameErrorMessage) || '',\r\n onItemSelection: onResellerOrDistributorChange,\r\n onClearAll: onClearAll,\r\n tableConfigurationFields: distributorTableConfigurations,\r\n selectionType: GridSelectionType.Mulitple,\r\n columnDefinitions: distributorColumnDefinitions,\r\n tableContent: distributors.current && distributors.current.length > 0 && distributors.current.map((pt: any) => ({\r\n key: `${pt.accountId}-${pt.partnerType}`, id: pt.accountId, name: pt.companyName, country: pt.countryName, countryId: pt.countryId, organizationId: pt.organizationId, partnerType: pt.partnerType,\r\n editMode: false\r\n })) || [],\r\n countrySelected: selectedDistributorCountry,\r\n selectedItems: selectedDistributors && selectedDistributors.map(x => ({\r\n key: `${x.accountId}-${x.partnerType}`, id: x.accountId, name: x.companyName, country: x.countryName, countryId: x.countryId, organizationId: x.organizationId, partnerType: x.partnerType, action: x.action,\r\n editMode: isEditableRow(selectedDistributorCountry, commonPPContextState.pageMode, currentDealStatusCode, x, x.partnerType)\r\n })) || [],\r\n disableSelectAllSelection: false,\r\n primaryButtonProps: {\r\n ariaLabel: 'AddDistributor',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddDistributorText\", UIControlsText.AddDistributorText),\r\n onClick: () => onAddButtonClicked(false),\r\n style: PageStyles.panelButtonStyle\r\n },\r\n onDefaultButtonClick: onClearAll,\r\n PageMode: commonPPContextState.pageMode,\r\n footerTextField: `${selectedDistributors && selectedDistributors.length} Distributors selected`,\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n visible: !JavaScriptExtensions.isEmptyOrNullOrUndefined(pivotTab?.errors?.get(StatePropertiesText.ValidateMultipleDistributors)),\r\n data: {\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n contolType: UIControlType.Label,\r\n id: \"ValidateMultipleDistributorError\",\r\n value: pivotTab?.errors?.get(StatePropertiesText.ValidateMultipleDistributors),\r\n className: 'ms-LabelValueInvalid',\r\n styles: DefaultPageStyles.customWidthStyleAuto\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n //Distributor Grid\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemForDistributorGrid',\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"DetailListEditableGrid\",\r\n data: {\r\n id: \"DetailsListCustomColumnsForDistributor\",\r\n key: \"DetailsListCustomColumnsForDistributor\",\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n items: distributorListGridItems,\r\n columns: attachDistributorCallbacks(DistributorGridColumnConfig),\r\n gridConfigOptions: { enableCellEdit: true },\r\n visible: distributorListGridItems?.length > 0,\r\n width: \"885px\",\r\n height: (120 + (45 * distributorListGridItems?.length)) + \"px\",\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ];\r\n\r\n return ChannelJson;\r\n}","import { AzSearchStore } from \"azsearchstore\";\r\nimport { useEffect, useState,useCallback } from \"react\";\r\nimport { isAnyEUCountrySelected, isMsStoreUser, readGridConfig, getRuleValidationMessage, getEntityDataFromSession } from \"../../../../components/shared/common/util\";\r\nimport { UIControlsText } from \"../../../../content/UIControlsText\";\r\nimport { SessionStorageConsts } from \"../../../../models/SessionStorageConsts\";\r\nimport { ICountry } from \"../../../../models/ICountry\";\r\nimport { getter } from \"@progress/kendo-data-query\";\r\nimport { GridType } from \"../../../../models/GridType\";\r\nimport { IGridProps } from \"../../../../components/shared/grid/IGridProps\";\r\nimport { DefaultPageStyles, _Styles } from \"../../../../content/styles/Page.styles\";\r\nimport { setErrorsDataIntoContext, stackItemCustomerStyles, stackItemStyles } from \"../PricingProgramFormUtils\";\r\nimport { ApplicationConstants } from \"../../../../models/ApplicationConstants\";\r\nimport _, { groupBy } from \"lodash\";\r\nimport { Guid } from \"../../../../infrastructure/Guid\";\r\nimport { IProductFamily } from \"../../../../models/IProductFamily\";\r\nimport { ActionType } from \"../../../../models/ActionType\";\r\nimport { IDealInfoProps } from \"../props/IDealInfoProps\";\r\nimport { UIControlType } from \"../../../../models/UIControlType\";\r\nimport { formatProductSearchAPIData, setProductSearchStore } from \"../../../../components/shared/productDatabyProductview\";\r\nimport { useCommonPPContext } from \"../../common/context/common-pp-context\";\r\nimport { CaseActionTypes } from \"../../common/reducer/CaseActionTypes\";\r\nimport { DealType } from \"../../../../models/DealType\";\r\nimport { PageMode } from \"../../../../models/PageMode\";\r\nimport { OpportunityDealStatusCodes } from \"../../../../models/OpportunityDealStatusCodes\";\r\nimport { IFacetData } from \"../../../../models/IFacetData\";\r\nimport { CssClassConstants } from \"../../../../content/CssClassConstants\";\r\nimport { StatePropertiesText } from \"../../common/state/StatePropertiesText\";\r\nimport { JavaScriptExtensions } from \"../../../../infrastructure/JavaScriptExtensions\";\r\nimport { ErrorMessages } from \"../../../../content/ErrorMessages\";\r\nimport { IOpportunityDealProductSku } from \"../../../../models/IOpportunityDealProductSku\";\r\nimport { ChannelType } from \"../../../../models/ChannelType\";\r\nimport { nextGenService } from \"../../../../services/NextGenService\";\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { MessageBarType} from \"@fluentui/react\";\r\n\r\n\r\nexport function ProductSearch(props: IDealInfoProps) {\r\n const { commonPPContextState, commonPPContextDispatch } = useCommonPPContext();\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [globalSearchFilterExpression, setGlobalSearchFilterExpression] = useState<string>(\"\");\r\n const [searchFilterButtonText, setSearchFilterButtonText] = useState<string>(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ShowSearchFilter\", UIControlsText.ShowSearchFilter));\r\n const [businessUnitGridConfig, setBusinessUnitGridConfig] = useState<IGridProps>(readGridConfig(GridType.BusinessUnitProductSearch));\r\n const [businessUnitSelectionGridConfig, setBusinessUnitSelectionGridConfig] = useState<IGridProps>(readGridConfig(GridType.SelectedBusinessUnit));\r\n const [productSearchGridConfig, setProductSearchGridConfig] = useState<IGridProps>(readGridConfig(GridType.PFAMProductSearch));\r\n const [productSelectionGridConfig, setProductSelectionGridConfig] = useState<IGridProps>(readGridConfig(GridType.SelectedPFAM));\r\n const [isSpecialPricingDeal, setIsSpecialPricingDeal] = useState<boolean>(false);\r\n const [isDealRegistraionDeal, setIsDealRegistraionDeal] = useState<boolean>(false);\r\n const [dealRegistraionDealId, setDealRegistraionDealId] = useState<string>(\"\");\r\n const [specialPricingDealId, setSpecialPricingDealId] = useState<string>(\"\");\r\n const idBUGetter = getter(businessUnitGridConfig.kendoGridProps.dataItemKey);\r\n const idPFAMGetter = getter(productSearchGridConfig.kendoGridProps.dataItemKey);\r\n const [selectionState, setSelectionState] = useState<any>({});\r\n const [productType, setProductType] = useState<string>(\"\");\r\n const [searchBarString, setSearchBarString] = useState<string>(\"\");\r\n const [showDR, setShowDR] = useState<boolean>(false);\r\n const [showSP, setShowSP] = useState<boolean>(false);\r\n const [hideCasecadeMessageNotes, setHideCasecadeMessageNotes] = useState<boolean>(true);\r\n const [hideCasecadeMessageDialog, setHideCasecadeMessageDialog] = useState<boolean>(true);\r\n const allCountries: ICountry[] = JSON.parse(sessionStorage.getItem(SessionStorageConsts.countries) || '{}');\r\n const isRenewalCascadeDisabled = commonPPContextState.opportunityDeals.filter(t => t.isRenewed === true)?.length > 0;\r\n /**\r\n Facet Constants\r\n */\r\n const [pfamName, setPfamName] = useState<IFacetData[]>([]);\r\n const [selectedPfamNameValues, setSelectedPfamNameValues] = useState<IFacetData[]>([]);\r\n const [businessUnit, setBusinessUnit] = useState<IFacetData[]>([]);\r\n const [selectedBusinessUnitValues, setSelectedBusinessUnitValues] = useState<IFacetData[]>([]);\r\n const [skuName, setSkuName] = useState<IFacetData[]>([]);\r\n const [selectedSkuNameValues, setSelectedSkuNameValues] = useState<IFacetData[]>([]);\r\n const [skuPartNumber, setSkuPartNumber] = useState<IFacetData[]>([]);\r\n const [selectedSkuPartNumberValues, setSelectedSkuPartNumberValues] = useState<IFacetData[]>([]);\r\n const [showProductSearchFilters, setShowProductSearchFilters] = useState<boolean>(false)\r\n const [showProductDialog, setShowProductDialog] = useState(false);\r\n const [inactivePFAMs, setInactivePFAMs] = useState<IOpportunityDealProductSku[]>([]);\r\n const [inactiveBUs, setInactiveBUs] = useState<IOpportunityDealProductSku[]>([]);\r\n const [customerCountryDealTypes, setCustomerCountryDealTypes] = useState<string>(\"\");\r\n const [invalidPfams,setInvalidPfams]=useState<string[]>([]);\r\n const [showMessageBar, setShowMessageBar] = useState<boolean>(false);\r\n const [issearchBarVisible, setIsSearchBarVisible] = useState<boolean>(true);\r\n const handleDismiss = useCallback(() => \r\n setShowMessageBar(false)\r\n , []);\r\n\r\n let allFacets = [selectedPfamNameValues, selectedBusinessUnitValues, selectedSkuNameValues, selectedSkuPartNumberValues];\r\n let allFacetNames = ApplicationConstants.ProductSearchFacetNames;\r\n const pivotTab = commonPPContextState.pivotTabs?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductsText\", UIControlsText.ProductsText));\r\n let customerCountry = \"\";\r\n let buSearchstore = new AzSearchStore();\r\n let defaultPFAMSearchstore = new AzSearchStore();\r\n let pfamSearchstore = new AzSearchStore();\r\n let isCascadePopUpViewed = true;\r\n useEffect(() => {\r\n if (commonPPContextState.opportunityDeals.length > 0 && Object.keys(commonPPContextState.opportunityDeals[0]).length > 0) {\r\n var customers = commonPPContextState?.opportunityDeals[0].dealCustomers;\r\n let temporaryCustomerCountryDealTypes = \"\";\r\n if (customers && customers.length > 0) {\r\n customerCountry = customers[0].country || \"\";\r\n let selectedCountry = allCountries.find(x => x.countryName === customerCountry);\r\n if (selectedCountry?.isEUEFTA) {\r\n temporaryCustomerCountryDealTypes = ApplicationConstants.Eu;\r\n }\r\n else if (selectedCountry?.region?.toLowerCase() === ApplicationConstants.MiddleEastRegion.toLowerCase()) {\r\n temporaryCustomerCountryDealTypes = ApplicationConstants.MiddleEastRegion;\r\n }\r\n else {\r\n temporaryCustomerCountryDealTypes = customerCountry;\r\n }\r\n }\r\n setIsSpecialPricingDeal(false);\r\n setIsDealRegistraionDeal(false);\r\n\r\n setProductType(commonPPContextState.partnerDetails?.productGroupName || \"\");\r\n let specialPricingDeal: boolean = false;\r\n let dealRegistrationDeal: boolean = false;\r\n let showDRCase: boolean = false;\r\n let showSPCase: boolean = false;\r\n setShowDR(false);\r\n setShowSP(false);\r\n for (let i = 0; i < commonPPContextState.opportunityDeals.length; i++) {\r\n let deal = commonPPContextState.opportunityDeals[i]?.dealType?.name || \"\";\r\n var products = commonPPContextState.opportunityDeals[i].products;\r\n let updatedproductFamily = products?.map((item: IProductFamily) => ({ ...item, searchId: item.id }));\r\n var savedproductFamily: IProductFamily[] = getProductFamilyModel(updatedproductFamily || [], false);\r\n var oppDeal = commonPPContextState.opportunityDeals[i];\r\n if (deal === DealType.SpecialPricing) {\r\n setIsSpecialPricingDeal(true);\r\n //to show or hide deal based on selected deal\r\n if (oppDeal.name === commonPPContextState.selectedOptyDealCaseNumber ||\r\n (commonPPContextState.pageMode === PageMode.Edit && oppDeal.statusCode === OpportunityDealStatusCodes.Draft)) {\r\n setShowSP(true);\r\n showSPCase = true;\r\n }\r\n specialPricingDeal = true;\r\n if(!isRenewalCascadeDisabled || oppDeal.name === commonPPContextState.selectedOptyDealCaseNumber) {\r\n setSpecialPricingDealId((commonPPContextState.opportunityDeals[i]?.id) || \"\");\r\n }\r\n temporaryCustomerCountryDealTypes = temporaryCustomerCountryDealTypes + deal;\r\n //to show products on page load of edit\r\n if ((commonPPContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) && products) {\r\n let groupedbyPFAM = [\r\n ...new Map(\r\n savedproductFamily?.map((item: IProductFamily) => [item.productFamilyId, item])\r\n ).values(),\r\n ];\r\n updateProductFamilyAndDispatch(groupedbyPFAM, true);\r\n }\r\n //validate product inactive status \r\n if (oppDeal.statusCode === OpportunityDealStatusCodes.Draft && commonPPContextState.pageMode === PageMode.Edit) {\r\n var inactiveProducts = oppDeal.inActiveProducts;\r\n if (inactiveProducts && inactiveProducts?.length > 0) {\r\n let groupedData = [\r\n ...new Map(\r\n inactiveProducts?.map((item: any) => [item.name, item])\r\n ).values(),\r\n ];\r\n setInactivePFAMs(groupedData);\r\n }\r\n }\r\n\r\n if (oppDeal.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview && commonPPContextState.pageMode === PageMode.Edit) {\r\n setIsSearchBarVisible(false);\r\n }\r\n }\r\n else if (deal === DealType.DealRegistration) {\r\n setIsDealRegistraionDeal(true);\r\n //to show or hide deal based on selected deal\r\n if (oppDeal.name === commonPPContextState.selectedOptyDealCaseNumber ||\r\n (commonPPContextState.pageMode === PageMode.Edit && oppDeal.statusCode === OpportunityDealStatusCodes.Draft)) {\r\n setShowDR(true);\r\n showDRCase = true;\r\n }\r\n dealRegistrationDeal = true;\r\n if(!isRenewalCascadeDisabled || oppDeal.name === commonPPContextState.selectedOptyDealCaseNumber) {\r\n setDealRegistraionDealId((commonPPContextState.opportunityDeals[i]?.id) || \"\");\r\n }\r\n \r\n temporaryCustomerCountryDealTypes = temporaryCustomerCountryDealTypes + deal;\r\n //to show products on page load of edit\r\n if ((commonPPContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) && products) {\r\n let groupedbyBU = [\r\n ...new Map(\r\n savedproductFamily?.map((item: IProductFamily) => [item.businessUnitName, item])\r\n ).values(),\r\n ];\r\n updateProductFamilyAndDispatch(groupedbyBU.filter(b => b.businessUnitName !== \"\"), false);\r\n }\r\n //validate product inactive status \r\n if (oppDeal.statusCode === OpportunityDealStatusCodes.Draft && commonPPContextState.pageMode === PageMode.Edit) {\r\n var inactiveProducts = oppDeal.inActiveProducts;\r\n if (inactiveProducts && inactiveProducts?.length > 0) {\r\n let groupedData = [\r\n ...new Map(\r\n inactiveProducts?.map((item: any) => [item.name, item])\r\n ).values(),\r\n ];\r\n setInactiveBUs(groupedData);\r\n }\r\n }\r\n\r\n if (oppDeal.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview && commonPPContextState.pageMode === PageMode.Edit) {\r\n setIsSearchBarVisible(false);\r\n }\r\n }\r\n }\r\n if (showDRCase && inactiveBUs.length > 0) {\r\n setShowProductDialog(true);\r\n }\r\n else if (showSPCase && inactivePFAMs.length > 0) {\r\n setShowProductDialog(true);\r\n }\r\n if (temporaryCustomerCountryDealTypes !== customerCountryDealTypes) {\r\n resetSelectionGrid();\r\n }\r\n setCustomerCountryDealTypes(temporaryCustomerCountryDealTypes);\r\n if (commonPPContextState.partnerDetails) {\r\n defaultSearch(specialPricingDeal, dealRegistrationDeal);\r\n }\r\n //to show casecade message to user when adding new bu and multi deal\r\n if (commonPPContextState.pageMode === PageMode.Edit) {\r\n var oppDeal = commonPPContextState.opportunityDeals.filter(d => d.name === commonPPContextState.selectedOptyDealCaseNumber)[0];\r\n if (oppDeal) {\r\n if (commonPPContextState.opportunityDeals.length > 1 && showSP && oppDeal.statusCode !== OpportunityDealStatusCodes.Draft) {\r\n setHideCasecadeMessageNotes(false);\r\n }\r\n }\r\n }\r\n }\r\n }, [commonPPContextState.applicableDealTypes, commonPPContextState?.opportunityDeals[0] && commonPPContextState?.opportunityDeals[0].dealCustomers, commonPPContextState.partnerDetails, commonPPContextState.selectedOptyDealCaseNumber]);\r\n\r\n buSearchstore = setProductSearchStore(ApplicationConstants.BusinessUnitProductSearchIndex, ApplicationConstants.BusinessUnitProductSearchSuggesterName, ApplicationConstants.BusinessUnitSearchSelectColumn, globalSearchFilterExpression);\r\n defaultPFAMSearchstore = setProductSearchStore(ApplicationConstants.DistinctProductSearchIndex, ApplicationConstants.DistinctProductSearchSuggesterName, ApplicationConstants.ProductSearchSelectColumn, globalSearchFilterExpression);\r\n pfamSearchstore = setProductSearchStore(ApplicationConstants.ProductSearchIndex, ApplicationConstants.ProductSearchSuggesterName, ApplicationConstants.ProductSearchSelectColumn, globalSearchFilterExpression);\r\n\r\n const getProductSearchData = async (facetName: string, selectedValue: any[], skip: number, searchBarValue: string, searchFilterExpression: string, specialPricingDeal: boolean): Promise<void> => {\r\n try {\r\n let searchStore = new AzSearchStore();\r\n let indexURL: string = \"\";\r\n let facetNames: any[] = [];\r\n\r\n if (specialPricingDeal) {\r\n if (searchBarValue.length > 0) {\r\n searchStore = pfamSearchstore;\r\n indexURL = process.env.REACT_APP_SEARCH_API_URL_ENV + ApplicationConstants.ProductSearchIndexApi_Url || \"\";\r\n facetNames = ApplicationConstants.ProductSearchFacetNames;\r\n }\r\n else {\r\n searchStore = defaultPFAMSearchstore;\r\n indexURL = process.env.REACT_APP_SEARCH_API_URL_ENV + ApplicationConstants.DistinctProductSearchIndexApiUrl || \"\";\r\n facetNames = ApplicationConstants.DistinctProductSearchFacetNames;\r\n }\r\n }\r\n else {\r\n searchStore = buSearchstore;\r\n indexURL = process.env.REACT_APP_SEARCH_API_URL_ENV + ApplicationConstants.BuProductSearchApiUrl || \"\";\r\n facetNames = [];\r\n }\r\n\r\n let facetString = props?.facetProps?.facetList(facetNames);\r\n\r\n searchStore.updateSearchParameters({ count: true, skip: skip, searchMode: \"all\", });\r\n searchStore.setInput(searchBarValue);\r\n let apiReturnedData = await Promise.resolve(nextGenService.getProductSearchResults(indexURL, searchFilterExpression, searchBarValue, skip, facetString || [], ApplicationConstants.CustomerSearchTopThreshold));\r\n if (apiReturnedData.status === 200) {\r\n let productsCount = (apiReturnedData.data as { [key: string]: any })[\"@odata.count\"] as number;\r\n if (productsCount === 0) {\r\n searchBarValue = searchBarValue.slice(0, -1); // if first call results 0 then second time search the selected value with exact options by removing \"*\"\r\n apiReturnedData = await Promise.resolve(nextGenService.getProductSearchResults(indexURL, searchFilterExpression, searchBarValue, skip, facetString || [], ApplicationConstants.CustomerSearchTopThreshold));\r\n productsCount = (apiReturnedData.data as { [key: string]: any })[\"@odata.count\"] as number;\r\n }\r\n let productsSearchResultsData = [...(apiReturnedData.data as { [key: string]: any })[\"value\"] as string];\r\n if (productsCount > productsSearchResultsData.length) {\r\n for (\r\n let i = 1;\r\n i < Math.ceil(productsCount / ApplicationConstants.CustomerSearchTopThreshold);\r\n i++\r\n ) {\r\n apiReturnedData = await Promise.resolve(nextGenService.getProductSearchResults(indexURL, searchFilterExpression, searchBarValue, i * ApplicationConstants.CustomerSearchTopThreshold, facetString || [], ApplicationConstants.CustomerSearchTopThreshold));\r\n productsSearchResultsData.push(...(apiReturnedData.data as { [key: string]: any })[\"value\"] as string);\r\n }\r\n }\r\n let array: any[] = [];\r\n\r\n let customerCountry = \"\";\r\n if (commonPPContextState?.selectedOptyDealCaseNumber) {\r\n var tempDeal = commonPPContextState.opportunityDeals.filter(x => x.name === commonPPContextState.selectedOptyDealCaseNumber);\r\n if(tempDeal && tempDeal.length > 0 && tempDeal[0].dealCustomers && tempDeal[0].dealCustomers.length > 0){\r\n customerCountry = tempDeal[0].dealCustomers[0].country || \"\";\r\n }\r\n }\r\n else{\r\n if(commonPPContextState?.opportunityDeals[0].dealCustomers && commonPPContextState?.opportunityDeals[0].dealCustomers.length > 0){\r\n customerCountry = commonPPContextState?.opportunityDeals[0].dealCustomers[0].country || \"\";\r\n }\r\n }\r\n let selectedGeoCountries = allCountries.filter(country => country.countryName?.toLowerCase() === customerCountry.toLowerCase());\r\n array = formatProductSearchAPIData(productsSearchResultsData, selectedGeoCountries, specialPricingDeal);\r\n \r\n if (specialPricingDeal) {\r\n let productSearchConfig = { ...productSearchGridConfig };\r\n let searchData = _.uniqBy(array, (item) =>\r\n [item?.CountryId, item?.PfamId].join()\r\n );\r\n let groupedData = groupProductSearchData(searchData);\r\n productSearchConfig.kendoGridProps.data = groupedData;\r\n productSearchConfig.kendoGridProps.masterData = searchData;\r\n productSearchConfig.kendoGridProps.totalRecords = groupedData.length;\r\n if(!issearchBarVisible){\r\n productSearchConfig.kendoGridProps.className = \"ms-Panel-hideSelectAllCheckBox ms-Panel-hideAllCheckBox\";\r\n }\r\n setProductSearchGridConfig({ ...productSearchConfig });\r\n\r\n if (facetName.length == 0 && selectedValue.length == 0) {\r\n for (var i = 0; i < allFacetNames.length; i++) {\r\n setComboBoxDatasource((apiReturnedData.data as { [key: string]: any })[\"@search.facets\"][allFacetNames[i]] as IFacetData[], allFacetNames[i]);\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < allFacetNames.length; i++) {\r\n if (allFacetNames[i] != facetName) {\r\n setComboBoxDatasource((apiReturnedData.data as { [key: string]: any })[\"@search.facets\"][allFacetNames[i]] as IFacetData[], allFacetNames[i]);\r\n setSelectedValuesDatasource(allFacets[i], allFacetNames[i]);\r\n } else {\r\n setSelectedValuesDatasource(selectedValue, facetName);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n let searchConfig = { ...businessUnitGridConfig };\r\n let searchData = _.uniqBy(array, (item) =>\r\n [item?.BusinessUnitId].join()\r\n );\r\n let groupedData = groupProductSearchData(searchData);\r\n searchConfig.kendoGridProps.data = groupedData;\r\n searchConfig.kendoGridProps.totalRecords = groupedData.length;\r\n if(!issearchBarVisible){\r\n searchConfig.kendoGridProps.className = \"ms-Panel-hideSelectAllCheckBox ms-Panel-hideAllCheckBox\";\r\n }\r\n setBusinessUnitGridConfig({ ...searchConfig });\r\n }\r\n }\r\n }\r\n catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n const groupProductSearchData = (searchData: any[]) => {\r\n let groupedData = [\r\n ...new Map(\r\n searchData?.map((item: any) => [item.BusinessUnit, item])\r\n ).values(),\r\n ];\r\n\r\n return groupedData;\r\n }\r\n \r\n const onSubmit = (selectedValue: string): void => {\r\n let selectedProductSearchConfig = { ...productSelectionGridConfig };\r\n if (selectedProductSearchConfig.kendoGridProps.data === undefined) {\r\n selectedProductSearchConfig.kendoGridProps.data = [];\r\n }\r\n selectedProductSearchConfig = { ...businessUnitSelectionGridConfig };\r\n if (selectedProductSearchConfig.kendoGridProps.data === undefined) {\r\n selectedProductSearchConfig.kendoGridProps.data = [];\r\n }\r\n let filterStringExpression = createFilterString([], \"\", isSpecialPricingDeal, isDealRegistraionDeal, true);\r\n selectedValue = selectedValue.concat(\"*\");\r\n setSearchBarString(selectedValue);\r\n getProductSearchData(\"\", [], 0, selectedValue, filterStringExpression, isSpecialPricingDeal);\r\n };\r\n\r\n const onClear = (): void => {\r\n defaultSearch(isSpecialPricingDeal, isDealRegistraionDeal);\r\n };\r\n\r\n const resetSelectionGrid = (): void => {\r\n let selectedProductSearchConfig = { ...businessUnitSelectionGridConfig };\r\n selectedProductSearchConfig.kendoGridProps.data = [];\r\n selectedProductSearchConfig.kendoGridProps.totalRecords = 0;\r\n setBusinessUnitSelectionGridConfig({ ...selectedProductSearchConfig });\r\n selectedProductSearchConfig = { ...productSelectionGridConfig };\r\n selectedProductSearchConfig.kendoGridProps.data = [];\r\n selectedProductSearchConfig.kendoGridProps.totalRecords = 0;\r\n setProductSelectionGridConfig({ ...selectedProductSearchConfig });\r\n };\r\n\r\n const defaultSearch = (specialPricingDeal: boolean, dealRegistrationDeal: boolean): void => {\r\n for (let i = 0; i < allFacetNames.length; i++) {\r\n setComboBoxDatasource([], allFacetNames[i]);\r\n setSelectedValuesDatasource([], allFacetNames[i]);\r\n }\r\n\r\n if (specialPricingDeal) {\r\n if (searchBarString.length > 0) {\r\n allFacetNames = ApplicationConstants.ProductSearchFacetNames;\r\n allFacets = [selectedPfamNameValues, selectedBusinessUnitValues, selectedSkuNameValues, selectedSkuPartNumberValues];\r\n }\r\n else {\r\n allFacetNames = ApplicationConstants.DistinctProductSearchFacetNames;\r\n allFacets = [selectedPfamNameValues, selectedBusinessUnitValues];\r\n }\r\n }\r\n else {\r\n allFacetNames = [];\r\n allFacets = [];\r\n }\r\n let filterStringExpression = createFilterString([], \"\", specialPricingDeal, dealRegistrationDeal, true);\r\n setSearchBarString(\"\");\r\n getProductSearchData(\"\", [], 0, \"\", filterStringExpression, specialPricingDeal);\r\n };\r\n\r\n //hide or show facets on click of button\r\n const onShowFacets = () => {\r\n if (!showProductSearchFilters) {\r\n setSearchFilterButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"HideSearchFilter\", UIControlsText.HideSearchFilter));\r\n setShowProductSearchFilters(true);\r\n }\r\n else {\r\n setSearchFilterButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ShowSearchFilter\", UIControlsText.ShowSearchFilter));\r\n setShowProductSearchFilters(false);\r\n }\r\n }\r\n\r\n //Message prompted on selection of Pfams not applicable for SP \r\n const getMessage = (inavalidPfamList:string[]):string =>{\r\n let message :string = \"\";\r\n if(inavalidPfamList.length>1){\r\n message = getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MultipleInvalidPfamError\", UIControlsText.MultipleInvalidPfamError);\r\n } else{\r\n message = JavaScriptExtensions.stringFormat(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"InvalidPfamError\", UIControlsText.InvalidPfamError),inavalidPfamList[0]);\r\n }\r\n return message;\r\n }\r\n\r\n //callback function on checkbox selection of header and/or row(s)\r\n const onRowSelectionCallBack = (selectedState: any) => {\r\n let selectedProducts: IProductFamily[] = [];\r\n let searchGridDatawithSelection: any[] = [];\r\n var dealType = DealType.SpecialPricing;\r\n\r\n if (isSpecialPricingDeal) {\r\n searchGridDatawithSelection = productSearchGridConfig.kendoGridProps.masterData.map((item: any) => ({ ...item, ['selected']: selectedState[idPFAMGetter(item)] }));\r\n }\r\n else {\r\n searchGridDatawithSelection = businessUnitGridConfig.kendoGridProps.data.map((item: any) => ({ ...item, ['selected']: selectedState[idBUGetter(item)] }));\r\n dealType = DealType.DealRegistration;\r\n }\r\n\r\n searchGridDatawithSelection.map((item: any) => {\r\n if (item.selected === true) {\r\n selectedProducts.push(Object.assign({ inEdit: undefined }, item));\r\n }\r\n });\r\n addSelectedProductFamily(selectedProducts, dealType);\r\n setSelectionState(selectedState);\r\n }\r\n\r\n const onDetailRowSelectionCallBack = (selectedState: any) => {\r\n onRowSelectionCallBack(selectedState);\r\n }\r\n \r\n //on click checkbox add checked rows to selection grid at right\r\n const addSelectedProductFamily = (selectedData: IProductFamily[], dealType: DealType): void => {\r\n let selectedproductFamily: IProductFamily[] = getProductFamilyModel(selectedData, true).map((item: IProductFamily) => ({ ...item, action: ActionType.Add }));\r\n let finalSelection: IProductFamily[] = [];\r\n let invalidPfamsForSpecialPricing:string[]=[];\r\n let applicableForSpecialPricing:string = ApplicationConstants.SpecialPricingApplicableDeal.toString();\r\n var pagemode = commonPPContextState.pageMode;\r\n\r\n let allowUpdateProductFamily = false;\r\n if (showSP || commonPPContextState.opportunityDeals.filter(x => x.name === commonPPContextState.selectedOptyDealCaseNumber)[0].isRenewed) {\r\n allowUpdateProductFamily = true;\r\n \r\n }\r\n \r\n if (isSpecialPricingDeal || dealType === DealType.SpecialPricing) {\r\n finalSelection = productSelectionGridConfig.kendoGridProps.data;\r\n\r\n selectedproductFamily.map(item => {\r\n let findItem = finalSelection.find(x => x.productFamilyCode === item.productFamilyCode && x.country === item.country);\r\n let applicableDealsArray = item.applicableDeals.split(\";\");\r\n if (findItem === undefined && applicableDealsArray?.length > 0 && applicableDealsArray.includes(applicableForSpecialPricing)) {\r\n finalSelection.push(item);\r\n }\r\n else if(applicableDealsArray?.length>0 && !applicableDealsArray.includes(applicableForSpecialPricing)){\r\n setShowMessageBar(true);\r\n invalidPfamsForSpecialPricing.push(item.name); \r\n }\r\n if(invalidPfamsForSpecialPricing.length>0){\r\n setInvalidPfams(invalidPfamsForSpecialPricing);\r\n } \r\n });\r\n \r\n if (pagemode === PageMode.Create || (pagemode === PageMode.Edit && allowUpdateProductFamily)) {\r\n updateProductFamilyAndDispatch(finalSelection, true);\r\n }\r\n }\r\n\r\n if (isDealRegistraionDeal || dealType === DealType.DealRegistration) {\r\n finalSelection = businessUnitSelectionGridConfig.kendoGridProps.data;\r\n selectedproductFamily.map(item => {\r\n let findItem = finalSelection.find(x => x.businessUnitName === item.businessUnitName);\r\n if (findItem === undefined) {\r\n finalSelection.push(item);\r\n //to show casecade message to user when adding new bu and multi deal\r\n if (commonPPContextState.pageMode === PageMode.Edit && isCascadePopUpViewed) {\r\n var oppDeal = commonPPContextState.opportunityDeals.filter(d => d.name === commonPPContextState.selectedOptyDealCaseNumber)[0];\r\n if (oppDeal) {\r\n if (commonPPContextState.opportunityDeals.length > 1 && showSP && oppDeal.statusCode !== OpportunityDealStatusCodes.Draft) {\r\n setHideCasecadeMessageDialog(false);\r\n isCascadePopUpViewed=false;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n updateProductFamilyAndDispatch(finalSelection, false);\r\n }\r\n }\r\n\r\n //construct pfam model from selection grid\r\n const getProductFamilyModel = (productFamily: IProductFamily[], isAddition: boolean): IProductFamily[] => {\r\n let selectedProductFamily: IProductFamily[] = [];\r\n selectedProductFamily = productFamily.map((item: any) => {\r\n return {\r\n id: isAddition ? Guid.newGuid() : item.id,\r\n countryId: isAddition ? item.CountryId : item.countryId,\r\n productFamilyId: isAddition ? item.PfamId : item.productFamilyId,\r\n productFamilyCode: isAddition ? item.ProductFamilyCode : item.productFamilyCode,\r\n country: isAddition ? item.Country : item.country,\r\n name: isAddition ? item.PfamName : item.name,\r\n skuId: isAddition ? item.SKUId : item.skuId,\r\n businessUnitId: isAddition ? item.BusinessUnitId : item.businessUnitId,\r\n businessUnit: isAddition ? item.BusinessUnit : item.businessUnit,\r\n action: item.action,\r\n searchId: isAddition ? item.id : item.searchId,\r\n businessUnitName: isAddition ? item.BusinessUnit : item.businessUnitName,\r\n businessunit: isAddition ? item.BusinessUnit : item.businessUnitName,\r\n editMode: item.editMode,\r\n applicableDeals:isAddition?item.ApplicableDeals:item.applicableDeals,\r\n } as IProductFamily\r\n });\r\n return selectedProductFamily;\r\n }\r\n\r\n //dispatch products\r\n const updateProductFamilyAndDispatch = (productFamily: IProductFamily[], isSelectedProductFamilyConfig: boolean): void => {\r\n let selectedProductFamilyConfig;\r\n var oppDeal = commonPPContextState.opportunityDeals.filter(d => d.dealType?.name === DealType.DealRegistration)[0];\r\n\r\n if (isSelectedProductFamilyConfig) {\r\n selectedProductFamilyConfig = { ...productSelectionGridConfig };\r\n oppDeal = commonPPContextState.opportunityDeals.filter(d => d.dealType?.name === DealType.SpecialPricing)[0];\r\n }\r\n else {\r\n selectedProductFamilyConfig = { ...businessUnitSelectionGridConfig };\r\n }\r\n\r\n selectedProductFamilyConfig.kendoGridProps.data = productFamily.filter(item => item.action !== ActionType.Delete);\r\n selectedProductFamilyConfig.kendoGridProps.editMode = false;\r\n selectedProductFamilyConfig.kendoGridProps.totalRecords = productFamily.filter(item => item.action !== ActionType.Delete).length;\r\n\r\n if (commonPPContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase() && oppDeal) {\r\n if (oppDeal.statusCode !== OpportunityDealStatusCodes.Draft && selectedProductFamilyConfig.kendoGridProps.actionTypes?.showClearAllGridAction) {\r\n selectedProductFamilyConfig.kendoGridProps.actionTypes.showClearAllGridAction = false;\r\n }\r\n }\r\n if (isSelectedProductFamilyConfig) {\r\n setProductSelectionGridConfig({ ...selectedProductFamilyConfig });\r\n commonPPContextDispatch({ type: CaseActionTypes.selectedProductFamilyChanged, products: { key: specialPricingDealId, value: productFamily } });\r\n }\r\n else {\r\n setBusinessUnitSelectionGridConfig({ ...selectedProductFamilyConfig });\r\n commonPPContextDispatch({ type: CaseActionTypes.selectedProductFamilyChanged, products: { key: dealRegistraionDealId, value: productFamily } });\r\n }\r\n\r\n checkProductsSelected(productFamily);\r\n }\r\n\r\n const checkProductsSelected = (products: IProductFamily[]) => {\r\n let value = getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText);\r\n if (JavaScriptExtensions.isNullOrUndfinedOrEmpty(products) || products?.length === 0) {\r\n value = '';\r\n }\r\n\r\n const pivotTabsData = [...commonPPContextState?.pivotTabs || []];\r\n setErrorsDataIntoContext(pivotTabsData, value, getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidateProduct\", ErrorMessages.ValidateProduct), StatePropertiesText.ValidateProduct, getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductsText\", UIControlsText.ProductsText));\r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabsData });\r\n }\r\n\r\n //function to remove selected row from grid and update state\r\n const onDeleteCallBack = (deletedRowData: any, refreshedGridData: any) => {\r\n let deletedDataFromDeleteAll: IProductFamily[] = [];\r\n let deletedData: any[] = [];\r\n let selectedPFAMConfig = { ...productSelectionGridConfig };\r\n let selectedBUConfig = { ...businessUnitSelectionGridConfig };\r\n let selectedPFAM = selectedPFAMConfig.kendoGridProps.data;\r\n let selectedBU = selectedBUConfig.kendoGridProps.data;\r\n\r\n if (refreshedGridData.length === 0) {\r\n deletedDataFromDeleteAll = deleteRowFromSelectionGrid([], isSpecialPricingDeal);\r\n if (isSpecialPricingDeal) {\r\n commonPPContextDispatch({ type: CaseActionTypes.selectedProductFamilyChanged, products: { key: specialPricingDealId, value: [] } });\r\n }\r\n if (isDealRegistraionDeal) {\r\n if(commonPPContextState.pageMode === PageMode.Create || commonPPContextState?.opportunityDeals?.find(t => t.name === commonPPContextState.selectedOptyDealCaseNumber)?.isRenewed === false) {\r\n commonPPContextDispatch({ type: CaseActionTypes.selectedProductFamilyChanged, products: { key: dealRegistraionDealId, value: [] } });\r\n }\r\n }\r\n resetSelectionGrid();\r\n }\r\n else if (isSpecialPricingDeal && isDealRegistraionDeal) {\r\n //Check if delete clicked on PFAM Selection Grid\r\n if ((refreshedGridData.length + 1) === selectedPFAMConfig.kendoGridProps.totalRecords) {\r\n let rowsSelectedInSPGrid = selectedPFAM.filter((x: { businessUnitName: any; }) => x.businessUnitName === deletedRowData.businessUnitName);\r\n\r\n if (rowsSelectedInSPGrid.length > 1) {\r\n // One Row deleted from Special Pricing grid but not Deal Registration grid\r\n deletedDataFromDeleteAll = deleteRowFromSelectionGrid(refreshedGridData, true); // delete row from Special Pricing grid\r\n }\r\n else {\r\n // One Row deleted from both grids\r\n let refreshedBUGridData = selectedBU.filter((x: { businessUnitName: any; }) => x.businessUnitName !== deletedRowData.businessUnitName);\r\n deletedDataFromDeleteAll = deleteRowFromSelectionGrid(refreshedBUGridData, false); // delete row from Deal Registration grid\r\n deletedDataFromDeleteAll = deleteRowFromSelectionGrid(refreshedGridData, true); // delete row from Special Pricing grid\r\n }\r\n }\r\n else {\r\n deletedDataFromDeleteAll = deleteRowFromSelectionGrid(refreshedGridData, false); // delete row from Deal Registration grid\r\n refreshedGridData = selectedPFAM.filter((x: { businessUnitName: any; }) => x.businessUnitName !== deletedRowData.businessUnitName);\r\n deletedRowData = selectedPFAM.filter((x: { businessUnitName: any; }) => x.businessUnitName === deletedRowData.businessUnitName);\r\n deletedDataFromDeleteAll = deleteRowFromSelectionGrid(refreshedGridData, true); // delete rows from Special Pricing grid\r\n }\r\n }\r\n else if (isSpecialPricingDeal) {\r\n deletedDataFromDeleteAll = deleteRowFromSelectionGrid(refreshedGridData, true); // delete row from Special Pricing grid\r\n }\r\n else if (isDealRegistraionDeal) {\r\n deletedDataFromDeleteAll = deleteRowFromSelectionGrid(refreshedGridData, false); // delete row from Deal Registration grid\r\n }\r\n\r\n if (deletedRowData.searchId) {\r\n deletedData.push(deletedRowData);\r\n }\r\n else {\r\n deletedData = deletedRowData;\r\n }\r\n resetSearchgrid(deletedData, refreshedGridData, deletedDataFromDeleteAll);\r\n }\r\n\r\n const deleteRowFromSelectionGrid = (refreshedGridData: any, isSelectedProductFamilyConfig: boolean) => {\r\n let deletedSelectedProductConfig;\r\n let deletedDataFromDeleteAll: IProductFamily[] = [];\r\n let selectedProductFamily: any[] = [];\r\n\r\n if (isSelectedProductFamilyConfig) {\r\n deletedSelectedProductConfig = { ...productSelectionGridConfig };\r\n }\r\n else {\r\n deletedSelectedProductConfig = { ...businessUnitSelectionGridConfig };\r\n }\r\n\r\n if (refreshedGridData.length === 0) {\r\n deletedDataFromDeleteAll = deletedSelectedProductConfig.kendoGridProps.data\r\n }\r\n deletedSelectedProductConfig.kendoGridProps.data = refreshedGridData;\r\n deletedSelectedProductConfig.kendoGridProps.totalRecords = refreshedGridData.length;\r\n selectedProductFamily = getProductFamilyModel(refreshedGridData, false);\r\n\r\n if (isSelectedProductFamilyConfig) {\r\n if (commonPPContextState.pageMode === PageMode.Create || (commonPPContextState.pageMode === PageMode.Edit && showSP)) {\r\n setProductSelectionGridConfig(deletedSelectedProductConfig);\r\n commonPPContextDispatch({ type: CaseActionTypes.selectedProductFamilyChanged, products: { key: specialPricingDealId, value: selectedProductFamily } });\r\n }\r\n }\r\n else {\r\n //if (commonPPContextState.pageMode === PageMode.Create || commonPPContextState?.opportunityDeals?.find(t => t.name === commonPPContextState.selectedOptyDealCaseNumber)?.isRenewed === false) {\r\n setBusinessUnitSelectionGridConfig(deletedSelectedProductConfig);\r\n commonPPContextDispatch({ type: CaseActionTypes.selectedProductFamilyChanged, products: { key: dealRegistraionDealId, value: selectedProductFamily } });\r\n //}\r\n }\r\n\r\n checkProductsSelected(selectedProductFamily);\r\n return deletedDataFromDeleteAll;\r\n }\r\n\r\n //reset product search grid selection after adding\r\n const resetSearchgrid = (deletedItem: IProductFamily[], gridData: IProductFamily[], DeletedDataFromDeleteAll: IProductFamily[]): void => {\r\n let productSearchConfig;\r\n\r\n if (isSpecialPricingDeal) {\r\n productSearchConfig = { ...productSearchGridConfig };\r\n }\r\n else {\r\n productSearchConfig = { ...businessUnitGridConfig };\r\n }\r\n\r\n if (gridData.length > 0 && deletedItem[0].searchId) {\r\n deletedItem.map((item: IProductFamily) => {\r\n if (item.searchId) {\r\n selectionState[item.searchId] = false;\r\n }\r\n });\r\n productSearchConfig.kendoGridProps.defaultDetailGridSelectionstate = selectionState;\r\n }\r\n else {\r\n DeletedDataFromDeleteAll.map((item: IProductFamily) => {\r\n if (item.searchId) {\r\n selectionState[item.searchId] = false;\r\n }\r\n });\r\n productSearchConfig.kendoGridProps.defaultDetailGridSelectionstate = selectionState;\r\n }\r\n\r\n if (isSpecialPricingDeal) {\r\n setProductSearchGridConfig({ ...productSearchConfig });\r\n }\r\n else {\r\n setBusinessUnitGridConfig({ ...productSearchConfig });\r\n }\r\n }\r\n\r\n const createFilterString = (selectedValue: any[], facetName: string, specialPricingDeal: boolean, dealRegistrationDeal: boolean, isDefaultSearch: boolean): string => {\r\n let filterStringExpression = \"\";\r\n let selectedCountry = \"\";\r\n if (commonPPContextState?.selectedOptyDealCaseNumber) {\r\n var tempDeal = commonPPContextState.opportunityDeals.filter(x => x.name === commonPPContextState.selectedOptyDealCaseNumber);\r\n if(tempDeal && tempDeal.length > 0 && tempDeal[0].dealCustomers && tempDeal[0].dealCustomers.length > 0){\r\n selectedCountry = tempDeal[0].dealCustomers[0].country || \"\";\r\n }\r\n }\r\n else{\r\n if(commonPPContextState?.opportunityDeals[0].dealCustomers && commonPPContextState?.opportunityDeals[0].dealCustomers.length > 0){\r\n selectedCountry = commonPPContextState?.opportunityDeals[0].dealCustomers[0].country || \"\";\r\n }\r\n }\r\n\r\n let selectedGeoCountries = allCountries.filter(country => country.countryName?.toLowerCase() === selectedCountry.toLowerCase());\r\n\r\n let nonEUCounties: ICountry[] = [];\r\n selectedGeoCountries.forEach(function (country) {\r\n let selectedGeoCountry = allCountries.find(allCountry => allCountry.countryName === country.applicablePriceListGeo);\r\n if (selectedGeoCountry != null) {\r\n nonEUCounties.push(selectedGeoCountry);\r\n }\r\n });\r\n nonEUCounties = _.uniqBy(nonEUCounties, \"countryId\");\r\n\r\n if (specialPricingDeal) {\r\n if (searchBarString.length > 0) {\r\n allFacetNames = ApplicationConstants.ProductSearchFacetNames;\r\n allFacets = [selectedPfamNameValues, selectedBusinessUnitValues, selectedSkuNameValues, selectedSkuPartNumberValues];\r\n }\r\n else {\r\n allFacetNames = ApplicationConstants.DistinctProductSearchFacetNames;\r\n allFacets = [selectedPfamNameValues, selectedBusinessUnitValues];\r\n }\r\n }\r\n else {\r\n allFacetNames = [];\r\n allFacets = [];\r\n }\r\n filterStringExpression = props?.facetProps?.createGlobalFilterExpression([ApplicationConstants.CustomerSearchCountryGlobalIndex, ApplicationConstants.ProductSearchProductType], [[nonEUCounties.map(item => item.countryName)], [commonPPContextState.partnerDetails?.productGroupName || \"\"]], isAnyEUCountrySelected(selectedGeoCountries)) || \"\";\r\n if (!isDefaultSearch) {\r\n filterStringExpression = filterStringExpression + props?.facetProps?.createFilterExpression(allFacetNames, facetName, selectedValue, allFacets);\r\n }\r\n filterStringExpression = createDealTypeFilterString(filterStringExpression, specialPricingDeal, dealRegistrationDeal);\r\n filterStringExpression = removeTrailingCharactersFromFilterString(filterStringExpression);\r\n filterStringExpression += \" \" + ApplicationConstants.AndOperator + \" (\" + ApplicationConstants.ExternalDealVisibility + \" \" + ApplicationConstants.Ne + \" \" + false + \" )\";\r\n\r\n return filterStringExpression;\r\n }\r\n\r\n const removeTrailingCharactersFromFilterString = (filterStringExpression: string): string => {\r\n filterStringExpression = filterStringExpression.trim();\r\n if (filterStringExpression.substring(filterStringExpression.length - ApplicationConstants.AndOperator.length) == ApplicationConstants.AndOperator) {\r\n filterStringExpression = filterStringExpression.slice(0, -ApplicationConstants.AndOperator.length);\r\n }\r\n return filterStringExpression;\r\n }\r\n\r\n const createDealTypeFilterString = (filterStringExpression: string, specialPricingDeal: boolean, dealRegistraionDeal: boolean): string => {\r\n let channelType = isMsStoreUser() ? ChannelType.Direct : ChannelType.Indirect;\r\n if (specialPricingDeal && dealRegistraionDeal) {\r\n filterStringExpression += (\"(\") + ApplicationConstants.ProductSearchApplicableDeals + \"/any(d: d eq \" + ApplicationConstants.SpecialPricingApplicableDeal + \" \" + ApplicationConstants.OrOperator + \" d eq \" + ApplicationConstants.DealRegistrationApplicableDeal + \"))\";\r\n }\r\n else if (specialPricingDeal) {\r\n filterStringExpression += (\"(\") + ApplicationConstants.ProductSearchApplicableDeals + \"/any(d: d eq \" + ApplicationConstants.SpecialPricingApplicableDeal + \"))\";\r\n }\r\n else if (dealRegistraionDeal) {\r\n filterStringExpression += (\"(\") + ApplicationConstants.ProductSearchApplicableDeals + \"/any(d: d eq \" + ApplicationConstants.DealRegistrationApplicableDeal + \"))\";\r\n }\r\n filterStringExpression += \" \" + ApplicationConstants.AndOperator + (\" (\") + ApplicationConstants.ProductSearchChannelType + \" \" + ApplicationConstants.Eq + \" \" + channelType + \")\";\r\n\r\n return filterStringExpression;\r\n }\r\n\r\n // Method called on onChange event of any child combobox (facet)\r\n const selectedValues = (selectedValue: any[], facetName: string): void => {\r\n // create filter expression based on selected facet data\r\n let filterStringExpression = createFilterString(selectedValue, facetName, isSpecialPricingDeal, isDealRegistraionDeal, false);\r\n getProductSearchData(facetName, selectedValue, 0, searchBarString, filterStringExpression, isSpecialPricingDeal);\r\n }\r\n\r\n //Set data source of facets\r\n const setComboBoxDatasource = (values: IFacetData[], facetType: string): void => {\r\n switch (facetType) {\r\n case ApplicationConstants.ProductFamilyNameFacetName:\r\n setPfamName(values);\r\n break;\r\n\r\n case ApplicationConstants.BusinessUnitFacetName:\r\n setBusinessUnit(values);\r\n break;\r\n\r\n case ApplicationConstants.SkuNameFacetName:\r\n setSkuName(values);\r\n break;\r\n\r\n case ApplicationConstants.SkuPartNumberFacetName:\r\n setSkuPartNumber(values);\r\n break;\r\n\r\n default:\r\n console.log(\"Default setSelectedValuesDatasource\");\r\n }\r\n }\r\n\r\n //Set selected values of facets\r\n const setSelectedValuesDatasource = (selectedValue: any[], facetType: string): void => {\r\n switch (facetType) {\r\n case ApplicationConstants.ProductFamilyNameFacetName:\r\n setSelectedPfamNameValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.BusinessUnitFacetName:\r\n setSelectedBusinessUnitValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.SkuNameFacetName:\r\n setSelectedSkuNameValues(selectedValue);\r\n break;\r\n\r\n case ApplicationConstants.SkuPartNumberFacetName:\r\n setSelectedSkuPartNumberValues(selectedValue);\r\n break;\r\n\r\n default:\r\n console.log(\"Default setSelectedValuesDatasource\");\r\n }\r\n }\r\n const onSuggest = (selectedValue: string): string => {\r\n let selectedProductSearchConfig = { ...productSelectionGridConfig };\r\n if (selectedProductSearchConfig.kendoGridProps.data === undefined) {\r\n selectedProductSearchConfig.kendoGridProps.data = [];\r\n }\r\n selectedProductSearchConfig = { ...businessUnitSelectionGridConfig };\r\n if (selectedProductSearchConfig.kendoGridProps.data === undefined) {\r\n selectedProductSearchConfig.kendoGridProps.data = [];\r\n }\r\n return createFilterString([], \"\", isSpecialPricingDeal, isDealRegistraionDeal, true);\r\n\r\n }\r\n const ProductSearchTemplate = [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackValidateProductSubmitError',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'StackItem',\r\n visible: !JavaScriptExtensions.isEmptyOrNullOrUndefined(pivotTab?.errors?.get(StatePropertiesText.ValidateProduct)),\r\n data: {\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n contolType: UIControlType.Label,\r\n id: \"ValidateProductSubmitError\",\r\n value: pivotTab?.errors?.get(StatePropertiesText.ValidateProduct),\r\n className: 'ms-LabelValueInvalid',\r\n styles: DefaultPageStyles.customWidthStyleAuto\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardForProductSearch\",\r\n baseState: commonPPContextState,\r\n name: \"Product Search\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductSearchIcon\", UIControlsText.ProductSearchIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackProductGroupTextField',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n style: DefaultPageStyles.paddingBottom16,\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n horizontal: \"true\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n\r\n data: {\r\n contolType: UIControlType.Label,\r\n id: \"ProductGroupTextField\",\r\n value: \"Product Group:\",\r\n styles: DefaultPageStyles.ProductSearchWidthStyles,\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n styles: DefaultPageStyles.ProductSearchWidthStyles,\r\n data: {\r\n contolType: UIControlType.Label,\r\n id: \"ProductGroupValueField\",\r\n value: productType,\r\n styles: DefaultPageStyles.ProductSearchWidthStyles,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"SearchBar\",\r\n data: {\r\n ...{\r\n store: isSpecialPricingDeal ? pfamSearchstore : buSearchstore, onSubmit, placeHolderText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Search\", UIControlsText.Search), onClear, onShowFacets, onSuggest,\r\n searchID: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerSearchID\", UIControlsText.CustomerSearchID),\r\n showFacetsText: searchFilterButtonText,\r\n hideFacetsButton: isSpecialPricingDeal ? false : true,\r\n showDistinctSuggestions: true,\r\n hideSlashFormatter: true,\r\n visible: issearchBarVisible\r\n }\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n contolType: UIControlType.MessageWithDialog,\r\n id: \"InactiveProductMessage\",\r\n listdata: showDR ? inactiveBUs : inactivePFAMs,\r\n message: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"InActiveProductErrorMessage\", ErrorMessages.InActiveProductErrorMessage),\r\n hidden: showProductDialog,\r\n isBlocking: true,\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"InactiveProducts\", UIControlsText.InactiveProducts),\r\n subText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"InactiveProductsSubTitle\", UIControlsText.InactiveProductsSubTitle),\r\n productType: showDR ? \"Business Unit\" : \"Product Family\",\r\n }\r\n },\r\n {\r\n type: 'DialogComponent',\r\n data: {\r\n id: 'productcasecadeDialog',\r\n hidden: hideCasecadeMessageDialog,\r\n isBlocking: true,\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"CaseCadeProductTitle\", ErrorMessages.ProductsCascadeMessageHeaderText),\r\n DialogContent: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ProductsCascadeMessage\", ErrorMessages.ProductsCascadeMessage),\r\n onDismiss: () => {\r\n setHideCasecadeMessageDialog(true);\r\n },\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n }\r\n ],\r\n },\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n horizontal: true,\r\n wrap: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"GuidanceTextInformation\",\r\n visible: !hideCasecadeMessageNotes,\r\n data: {\r\n id: \"ProductsCascadeMessage\",\r\n messageHeader: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ProductsCascadeMessageHeaderText\", ErrorMessages.ProductsCascadeMessageHeaderText),\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ProductsCascadeMessage\", ErrorMessages.ProductsCascadeMessage),\r\n }\r\n }\r\n\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n\r\n {\r\n type: 'Row',\r\n data: {\r\n horizontal: true,\r\n disableShrink: true,\r\n components: [\r\n {\r\n type: 'Stack',\r\n id: 'facetFilters',\r\n visible: showProductSearchFilters,\r\n data: {\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n className: CssClassConstants.customerFilter,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"SearchableComboBoxComponent\",\r\n data: {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.ProductFamilyNameFacetName,\r\n facetLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductFamilyNameFacetText\", UIControlsText.ProductFamilyNameFacetText),\r\n facetData: pfamName,\r\n selectedData: selectedPfamNameValues,\r\n showFacetCount: false\r\n },\r\n selectedValues,\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n className: CssClassConstants.customerFilter,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"SearchableComboBoxComponent\",\r\n data: {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.BusinessUnitFacetName,\r\n facetLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BusinessUnitFacetText\", UIControlsText.BusinessUnitFacetText),\r\n facetData: businessUnit,\r\n selectedData: selectedBusinessUnitValues,\r\n showFacetCount: false\r\n },\r\n selectedValues,\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n className: CssClassConstants.customerFilter,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"SearchableComboBoxComponent\",\r\n data: {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.SkuNameFacetName,\r\n facetLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SkuNameFacetText\", UIControlsText.SkuNameFacetText),\r\n facetData: skuName,\r\n selectedData: selectedSkuNameValues,\r\n showFacetCount: false\r\n },\r\n selectedValues,\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n className: CssClassConstants.customerFilter,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"SearchableComboBoxComponent\",\r\n data: {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.SkuPartNumberFacetName,\r\n facetLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SkuPartNumberFacetText\", UIControlsText.SkuPartNumberFacetText),\r\n facetData: skuPartNumber,\r\n selectedData: selectedSkuPartNumberValues,\r\n showFacetCount: false\r\n },\r\n selectedValues,\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n\r\n\r\n\r\n {\r\n type: 'Col',\r\n data: {\r\n type: 'Row',\r\n components: [\r\n {\r\n type: 'Col',\r\n data: {\r\n id: 'BUProductSearchGrid',\r\n 'data-nextgen-parent-group': \"Create - BU Product Search\",\r\n 'data-nextgen-parentid': \"Create - BU Product Search\",\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n visible: isSpecialPricingDeal ? false : true,\r\n components: [\r\n {\r\n type: \"NextGenKendoGrid\",\r\n data: {\r\n ...{\r\n kendoGridProps: { ...businessUnitGridConfig.kendoGridProps }, onRowSelectionCallBack\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Col',\r\n data: {\r\n id: 'PFAMProductSearchGrid',\r\n 'data-nextgen-parent-group': \"Create - PFAM Product Search\",\r\n 'data-nextgen-parentid': \"Create - PFAM Product Search\",\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n visible: isSpecialPricingDeal,\r\n components: [\r\n {\r\n type: \"NextGenKendoGrid\",\r\n data: {\r\n ...{\r\n kendoGridProps: { ...productSearchGridConfig.kendoGridProps }, onDetailRowSelectionCallBack\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Col',\r\n data: {\r\n type: 'Row',\r\n components: [\r\n {\r\n type: 'Col',\r\n data: {\r\n id: 'BUProductSelectionGrid',\r\n style: DefaultPageStyles.paddingBottom16,\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n visible: commonPPContextState.pageMode === PageMode.Create ? isDealRegistraionDeal : showDR,\r\n components: [\r\n {\r\n type: \"NextGenKendoGrid\",\r\n data: {\r\n ...{\r\n kendoGridProps: { ...businessUnitSelectionGridConfig.kendoGridProps }, onDeleteCallBack\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'InnerHTMLContainer',\r\n data: {\r\n id: 'InfoMessage',\r\n visible:showMessageBar,\r\n contolType: UIControlType.MessageBar,\r\n message: getMessage(invalidPfams),\r\n messageBarType: MessageBarType.info,\r\n handleDismiss: handleDismiss,\r\n styles:DefaultPageStyles.UserPromptBackground\r\n }\r\n },\r\n {\r\n type: 'Col',\r\n data: {\r\n id: 'PFAMProductSelectionGrid',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n visible: commonPPContextState.pageMode === PageMode.Create ? isSpecialPricingDeal : showSP,\r\n components: [\r\n {\r\n type: \"NextGenKendoGrid\",\r\n data: {\r\n ...{\r\n kendoGridProps: { ...productSelectionGridConfig.kendoGridProps }, onDeleteCallBack\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n }\r\n ];\r\n\r\n return ProductSearchTemplate;\r\n}","import { AzSearchStore } from \"azsearchstore\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { countriesFilter, getCountryObjByName, getEntityDataFromSession, isNullOrEmpty, readGridConfig, getRuleValidationMessage } from \"../../../../components/shared/common/util\";\r\nimport { UIControlsText } from \"../../../../content/UIControlsText\";\r\nimport { GridType } from \"../../../../models/GridType\";\r\nimport { IGridProps } from \"../../../../components/shared/grid/IGridProps\";\r\nimport { DealDetailsStyles, PageStyles } from \"../../common/content/Page.Styles\";\r\nimport { ApplicationConstants } from \"../../../../models/ApplicationConstants\";\r\nimport { nextGenService } from \"../../../../services/NextGenService\";\r\nimport _, { cloneDeep } from \"lodash\";\r\nimport { IDropdownOption, IHoverCard, IPlainCardProps, IStyle } from \"office-ui-fabric-react\";\r\nimport { stackItemStyles } from \"../PricingProgramFormUtils\";\r\nimport { DefaultPageStyles, _Styles } from \"../../../../content/styles/Page.styles\";\r\nimport { RadioGridCell } from \"../../../../components/shared/grid/radioGridCell\";\r\nimport { useCommonPPContext } from '../../common/context/common-pp-context';\r\nimport { ILegalEntity } from \"../../../../models/ILegalEntity\";\r\nimport { CssClassConstants } from \"../../../../content/CssClassConstants\";\r\nimport { IDealType } from \"../../../../models/IDealType\";\r\nimport { SessionStorageConsts } from \"../../../../models/SessionStorageConsts\";\r\nimport { DealType } from \"../../../../models/DealType\";\r\nimport { Guid } from \"../../../../infrastructure/Guid\";\r\nimport { CaseActionTypes } from \"../../common/reducer/CaseActionTypes\";\r\nimport { OpportunityDealStatusCodes } from \"../../../../models/OpportunityDealStatusCodes\";\r\nimport { IDealState } from \"../../common/state/IDealState\";\r\nimport { ActionType } from \"../../../../models/ActionType\";\r\nimport { CustomerType } from \"../../../../models/CustomerType\";\r\nimport { CustomerStatusCodes } from \"../../../../models/CustomerStatusCodes\";\r\nimport CreateUnmanagedCustomer from \"../../Customer/createUnmanagedCustomer\";\r\nimport { UIControlType } from \"../../../../models/UIControlType\";\r\nimport { PanelType } from \"@fluentui/react\";\r\nimport { PageMode } from \"../../../../models/PageMode\";\r\nimport { ErrorMessages } from \"../../../../content/ErrorMessages\";\r\nimport { GetCustomerViewJson } from \"../customerDetail\";\r\nimport { IFacetData } from \"../../../../models/IFacetData\";\r\nimport { ChannelSubType } from \"../../../../models/ChannelSubType\";\r\nimport { IPivotTab } from \"../../../../models/IPivotTab\";\r\nimport { GridPageChangeEvent } from \"@progress/kendo-react-grid\";\r\nimport { IPageState } from \"../../../../components/shared/grid/IPageState\";\r\nimport { backToDashboard } from \"../../../../components/shared/common/util\";\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\n\r\nexport function CustomerSearch() {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [searchFilterButtonText, setSearchFilterButtonText] = useState<string>(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ShowSearchFilter\", UIControlsText.ShowSearchFilter));\r\n const { commonPPContextState, commonPPContextDispatch } = useCommonPPContext();\r\n const [customerSearchGridConfig, setCustomerSearchGridConfig] = useState<IGridProps>(readGridConfig(GridType.CustomerSearch));\r\n const [selectedCustomer, setSelectedCustomer] = useState<ILegalEntity>();\r\n const [selectedCountries, setSelectedCountries] = useState<IDropdownOption[]>([]);\r\n const [selectedSearchValue, setSelectedSearchValue] = useState<string>(\"\");\r\n const [countriesDropDownData, setCountriesDropdownData] = useState(countriesFilter());\r\n const [isOpenCasePanel, setIsOpenCasePanel] = useState<boolean>(false);\r\n const [selectedCountry, setSelectedCountry] = useState<string | undefined>();\r\n const [loadingData, setLoadingData] = useState(false);\r\n const [hideCustomerDialog, setHideCustomerDialog] = useState(true);\r\n const [customerMessage, setCustomerMessage] = useState<string>(\"\");\r\n const [customerName, setCustomerName] = useState<string>(\"\");\r\n var customerJson = [{}];\r\n const [customerOption, setCustomerOption] = useState<string>(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Search\", UIControlsText.Search));\r\n const [customerDetail, SetCustomerDetail] = useState<ILegalEntity>();\r\n const [hideUnManagedCustomerEdit, SetHideUnManagedCustomerEdit] = useState<boolean>(true);\r\n const [customerGridData, setCustomerGridData] = useState<ILegalEntity[]>([]);\r\n let allFacetNames = ApplicationConstants.CustomerSearchFilterFacetNames;\r\n const [dunsid, setDunsid] = useState<IFacetData[]>([]);\r\n const [selectedDunsidValues, setSelectedDunsidValues] = useState<IFacetData[]>([]);\r\n const [selectedPricingPrograms, setselectedPricingPrograms] = useState<IDealType[]>([]);\r\n const [resetPaginationToDefault, setResetPaginationToDefault] = useState<IPageState>();\r\n const [showCustomerGrid, setShowCustomerGrid] = useState(false);\r\n const [hideCustomerSearchFilterBtn, setHideCustomerSearchFilterBtn] = useState(true);\r\n const [isCountryDisabled, setIsCountryDisabled] = useState(false);\r\n \r\n useEffect(() => {\r\n if (commonPPContextState.pageMode !== PageMode.Create) {\r\n setLoadingData(true);\r\n }\r\n const oppDealNumber = commonPPContextState.selectedOptyDealCaseNumber;\r\n if (commonPPContextState.name && oppDealNumber && oppDealNumber.length > 0) {\r\n var oppDeal = commonPPContextState.opportunityDeals.filter(d => d.name === oppDealNumber)[0];\r\n if (oppDeal) {\r\n if (oppDeal.statusCode === OpportunityDealStatusCodes.Draft && commonPPContextState.pageMode === PageMode.Edit) {\r\n //validate customer status on edit and draft status, else if page mode is edit and no customer exists disable country\r\n var customers = oppDeal.dealCustomers;\r\n if (customers && customers?.length > 0) {\r\n var isCustomerActive = commonPPContextState.isCustomerActive;\r\n var customerDecision = commonPPContextState.isUnManagedCustomerDecisionMade;\r\n if (customers && customers?.length > 0) {\r\n if (!customers[0].isManaged && !customerDecision) {\r\n SetHideUnManagedCustomerEdit(false);\r\n }\r\n }\r\n if (!isCustomerActive) {\r\n setHideCustomerDialog(false);\r\n if (customers) {\r\n setCustomerName(customers[0].legalEntityName);\r\n if (customers[0].isManaged) {\r\n setCustomerMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"InActiveManagedCustomerMessage\", ErrorMessages.InActiveManagedCustomerMessage))\r\n }\r\n else {\r\n setCustomerMessage(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"InActiveUnManagedCustomerMessage\", ErrorMessages.InActiveUnManagedCustomerMessage))\r\n }\r\n }\r\n // to show customer tab on error \r\n }\r\n }\r\n }\r\n else if (oppDeal.statusCode !== OpportunityDealStatusCodes.Draft && commonPPContextState.pageMode === PageMode.Edit) {\r\n if (oppDeal.dealCustomers && oppDeal.dealCustomers.length > 0) {\r\n var dealCustomer = oppDeal.dealCustomers[0];\r\n if (dealCustomer) {\r\n SetCustomerDetail(dealCustomer);\r\n }\r\n }\r\n setCustomerOption(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDetails\", UIControlsText.CustomerDetails));\r\n }\r\n setLoadingData(false);\r\n if (oppDeal.dealCustomers && oppDeal.dealCustomers?.length > 0) {\r\n setSelectedCustomer(oppDeal.dealCustomers[0]);\r\n }\r\n else {\r\n setSelectedCustomer(undefined);\r\n }\r\n }\r\n // to populate selected deal from api input\r\n if (commonPPContextState.opportunityDeals) {\r\n var selectedDeals: IDealType[] = [];\r\n var allDeals = getEntityDataFromSession<IDealType>(SessionStorageConsts.dealTypes);\r\n if (commonPPContextState.opportunityDeals.length > 1) {\r\n selectedDeals = allDeals.filter(t => t?.name?.toLowerCase() === DealType.DealRegistration.toLowerCase() || t?.name?.toLowerCase() === DealType.SpecialPricing.toLowerCase());\r\n }\r\n else {\r\n var oppDeal = commonPPContextState.opportunityDeals.filter(d => d.name === oppDealNumber)[0];\r\n selectedDeals = allDeals.filter(t => t?.name?.toLowerCase() === oppDeal.dealType?.name?.toLowerCase());\r\n }\r\n setselectedPricingPrograms(selectedDeals);\r\n }\r\n\r\n if(commonPPContextState.pageMode === PageMode.Edit) {\r\n setIsCountryDisabled(true);\r\n }\r\n }\r\n }, [commonPPContextState.name, commonPPContextState.selectedOptyDealCaseNumber]);\r\n\r\n //#region Azure store config settings\r\n const store = new AzSearchStore();\r\n store.setConfig({\r\n index: ApplicationConstants.PricingProgramCustomerSearchIndex,\r\n queryKey: process.env.REACT_APP_SEARCH_API_KEY || \"\",\r\n service: process.env.REACT_APP_SEARCH_API_ENV || \"\"\r\n });\r\n\r\n store.updateSuggestionsParameters({\r\n suggesterName: ApplicationConstants.PricingProgramCustomerCustomerSuggesterName,\r\n select: ApplicationConstants.CustomerSearchSelectColumn,\r\n top: ApplicationConstants.TopSearchSuggesstions,\r\n fuzzy: ApplicationConstants.IsFuzzy,\r\n filter: \"\",\r\n });\r\n const suggestionsProcessor = function (results: any) {\r\n return results.map(function (result: any) {\r\n result.searchText = result[\"@search.text\"];\r\n return result;\r\n });\r\n };\r\n store.setSuggestionsProcessor(suggestionsProcessor);\r\n //#endregion\r\n\r\n //#region Get/Set Customer Data \r\n const onSubmit = (selectedValue: string) => {\r\n setResetPaginationToDefault({ ...{ skip: 0, take: customerSearchGridConfig.kendoGridProps.noOfRecords } as IPageState });\r\n setSelectedSearchValue(selectedValue);\r\n setSearchFilterButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ShowSearchFilter\", UIControlsText.ShowSearchFilter))\r\n getCustomerSearchData(selectedValue, 0, selectedDunsidValues);\r\n };\r\n //create filter experssion for Search API for customer search Index\r\n const createFilterExpression = (filterNames: string[], filterValues: any[], euFilter: boolean): string => {\r\n let filterStringExpression = \"\";\r\n for (let i = 0; i < filterValues.length; i++) {\r\n if (filterStringExpression.length > 0) {\r\n filterStringExpression = filterStringExpression + \" \" + ApplicationConstants.AndOperator + \" \";\r\n }\r\n if (!isNullOrEmpty(filterValues[i])) {\r\n filterStringExpression = filterStringExpression + \"(\" + filterValues[i].map((item: string) => \" \" + filterNames[i] + \" \" + ApplicationConstants.Eq + \" '\" + item + \"' \").join(\" \" + ApplicationConstants.OrOperator + \" \") + \") \";\r\n }\r\n }\r\n\r\n return filterStringExpression;\r\n }\r\n // Gets the customer Data and binds with unique records\r\n const getCustomerSearchData = async (selectedValue: string, skip: number, selectedFacetValues: any[]): Promise<void> => {\r\n try {\r\n setLoadingData(true);\r\n let filterStringExpression = \"\";\r\n if (selectedCountries.length > 0) {\r\n store.setGlobalFilter(ApplicationConstants.CustomerSearchCountryGlobalIndex, selectedCountries.map(item => ApplicationConstants.CustomerSearchCountryGlobalIndex + \" \" + ApplicationConstants.Eq + \" '\" + item.text + \"'\").join(\" \" + ApplicationConstants.OrOperator + \" \"));\r\n if (filterStringExpression.length == 0) {\r\n filterStringExpression = createFilterExpression([ApplicationConstants.CustomerSearchCountryGlobalIndex], [selectedCountries.map(item => item.text)], false);\r\n }\r\n }\r\n if (!isNullOrEmpty(selectedFacetValues) && selectedFacetValues?.length > 0) {\r\n filterStringExpression = filterStringExpression.length > 0 ? filterStringExpression + \" \" + ApplicationConstants.AndOperator + \" \" : \"\";\r\n filterStringExpression = filterStringExpression + createFilterExpression([ApplicationConstants.DunsNumberFacetName], [selectedFacetValues?.map(item => item.value)], false);\r\n }\r\n let facetExpression = facetList(allFacetNames);\r\n let legalEntities: ILegalEntity[] = [];\r\n let apiResults: any = [];\r\n let searchConfig = { ...customerSearchGridConfig };\r\n searchConfig.kendoGridProps.defaultMainGridSelectionstate = {};\r\n if (isNullOrEmpty(selectedValue)) { // if Search value is empty and user fetching based on country get distinct results\r\n let apiReturnedData = await Promise.resolve(nextGenService.getPricingProgramAllDistinctCustomerSearchResults(filterStringExpression, selectedValue, skip, ApplicationConstants.CognitiveSearchMode));\r\n if (apiReturnedData.status === 200) {\r\n let customerSearchResultsData = [...(apiReturnedData.data as { [key: string]: any })[\"value\"] as string];\r\n let customerCount = (apiReturnedData.data as { [key: string]: any })[\"@odata.count\"] as number;\r\n apiResults = [...customerSearchResultsData]\r\n searchConfig.kendoGridProps.totalRecords = customerCount;\r\n searchConfig.kendoGridProps.isServerSideGrid = true;\r\n setHideCustomerSearchFilterBtn(true);\r\n }\r\n } else {\r\n selectedValue = selectedValue.concat(\"*\"); // first time search the selected value with contains options\r\n let apiReturnedData = await Promise.resolve(nextGenService.getPricingProgramCustomerSearchResults(filterStringExpression, selectedValue, skip, facetExpression, ApplicationConstants.CognitiveSearchMode, ApplicationConstants.CustomerSearchTopThreshold));\r\n if (apiReturnedData.status === 200) {\r\n let customerCount = (apiReturnedData.data as { [key: string]: any })[\"@odata.count\"] as number;\r\n if (customerCount === 0) {\r\n selectedValue = selectedValue.slice(0, -1); // if first call results 0 results then second time search the selected value with exact options\r\n apiReturnedData = await Promise.resolve(nextGenService.getPricingProgramCustomerSearchResults(filterStringExpression, selectedValue, skip, facetExpression, ApplicationConstants.CognitiveSearchMode, ApplicationConstants.CustomerSearchTopThreshold));\r\n customerCount = (apiReturnedData.data as { [key: string]: any })[\"@odata.count\"] as number;\r\n }\r\n\r\n let customerSearchResultsData = [...(apiReturnedData.data as { [key: string]: any })[\"value\"] as string];\r\n if (customerCount > customerSearchResultsData.length) {\r\n for (\r\n let i = 1;\r\n i < Math.ceil(customerCount / ApplicationConstants.CustomerSearchTopThreshold);\r\n i++\r\n ) {\r\n apiReturnedData = await Promise.resolve(nextGenService.getPricingProgramCustomerSearchResults(filterStringExpression, selectedValue, i * ApplicationConstants.CustomerSearchTopThreshold, facetExpression, ApplicationConstants.CognitiveSearchMode, ApplicationConstants.CustomerSearchTopThreshold));\r\n customerSearchResultsData.push(...(apiReturnedData.data as { [key: string]: any })[\"value\"] as string);\r\n }\r\n }\r\n //Managed Records get distinct records based on Org Name and TPID\r\n let managedRecords = customerSearchResultsData.filter((x: any) => x.IsManagedAccount === true);\r\n apiResults.push(\r\n ...new Map(managedRecords.map((item: any) => [item[ApplicationConstants.CustomerSearchSelectColumn] || item[ApplicationConstants.TPIDFacetName], item])).values(),\r\n );\r\n //Un Managed Records get distinct records based on Org Name \r\n let unManagedRecords = customerSearchResultsData.filter((x: any) => x.IsManagedAccount === false);\r\n apiResults.push(\r\n ...new Map(unManagedRecords.map((item: any) => [item[ApplicationConstants.CustomerSearchSelectColumn], item])).values(),\r\n );\r\n\r\n if (selectedFacetValues?.length === 0) {\r\n for (var i = 0; i < allFacetNames.length; i++) {\r\n setFilterDatasource((apiReturnedData.data as { [key: string]: any })[\"@search.facets\"][allFacetNames[i]] as string[], allFacetNames[i]);\r\n }\r\n }\r\n }\r\n searchConfig.kendoGridProps.totalRecords = apiResults.length;\r\n searchConfig.kendoGridProps.isServerSideGrid = false;\r\n apiResults.length > 0 ? setHideCustomerSearchFilterBtn(false) : setHideCustomerSearchFilterBtn(true);\r\n }\r\n legalEntities = apiResults.map((item: any) => {\r\n return {\r\n id: item.id,\r\n customerId: item.id,\r\n country: item.Country,\r\n crmAccountId: item.ChildCRMID,\r\n legalEntityName: item.OrganizationName,\r\n tpid: item.TPID === null ? 0 : item.TPID,\r\n segment: item.Segment,\r\n vertical: item.Vertical,\r\n verticalCategory: item.VerticalCategory,\r\n unitsCommitted: item.unitsCommitted === undefined ? 0 : item.unitsCommitted,\r\n isManaged: item.IsManagedAccount,\r\n customerType: CustomerType.Primary,\r\n reviewDecision: item.ReviewDecision != null ? item.ReviewDecision : CustomerStatusCodes.Approved,\r\n dunsNumber: item.DunsNumber,\r\n action: ActionType.Add\r\n } as ILegalEntity\r\n });\r\n searchConfig.kendoGridProps.data = [...legalEntities.sort((a, b) => {\r\n return (a.legalEntityName.toLowerCase() > b.legalEntityName.toLowerCase()) ? 1 : -1;\r\n })];\r\n setSelectedCustomer(undefined);\r\n setCustomerGridData([...legalEntities.sort()]);\r\n if (searchConfig.kendoGridProps.actionTypes?.showAddNewPanelGridAction != null) {\r\n searchConfig.kendoGridProps.actionTypes.showAddNewPanelGridAction = true;\r\n }\r\n setCustomerSearchGridConfig({ ...searchConfig });\r\n if (!isNullOrEmpty(selectedCustomer)) {\r\n setSelectedCustomer(selectedCustomer);\r\n }\r\n setCustomerSearchGridConfig({ ...searchConfig });\r\n setLoadingData(false);\r\n setShowCustomerGrid(true);\r\n\r\n } catch (error) {\r\n setLoadingData(false);\r\n setShowCustomerGrid(true);\r\n console.log(error);\r\n }\r\n }\r\n const onPageChange = (event: GridPageChangeEvent): void => {\r\n store.setInput(selectedSearchValue);\r\n setResetPaginationToDefault({ ...{ skip: event.page.skip, take: customerSearchGridConfig.kendoGridProps.noOfRecords } as IPageState });\r\n if (selectedSearchValue === \"\" && selectedSearchValue.length === 0) {\r\n getCustomerSearchData(selectedSearchValue, event.page.skip, selectedDunsidValues);\r\n }\r\n\r\n };\r\n\r\n //Set data source of facets\r\n const setFilterDatasource = (values: any[], facetType: string): void => {\r\n switch (facetType) {\r\n case ApplicationConstants.DunsNumberFacetName:\r\n setDunsid(values);\r\n break;\r\n default: console.log(\"Default setSelectedValuesDatasource\");\r\n }\r\n }\r\n const facetList = (facetNames: string[]): string[] => {\r\n let facetCount = ApplicationConstants.FacetCount;\r\n let facetString: string[] = [];\r\n\r\n for (let i = 0; i < facetNames.length; i++) {\r\n facetString.push(facetNames[i] + \",count:\" + facetCount);\r\n }\r\n\r\n return facetString;\r\n }\r\n const onClear = () => {\r\n if (customerSearchGridConfig.kendoGridProps.actionTypes?.showAddNewPanelGridAction != null) {\r\n customerSearchGridConfig.kendoGridProps.actionTypes.showAddNewPanelGridAction = false;\r\n }\r\n customerSearchGridConfig.kendoGridProps.data = [];\r\n customerSearchGridConfig.kendoGridProps.totalRecords = 0;\r\n setCustomerSearchGridConfig({ ...customerSearchGridConfig });\r\n setSelectedCustomer(undefined);\r\n setSelectedDunsidValues([]);\r\n setselectedPricingPrograms([]);\r\n setShowCustomerSearchFilters(false);\r\n setHideCustomerSearchFilterBtn(true);\r\n commonPPContextDispatch({ type: CaseActionTypes.pricingProgramSelectionChanged, opportunityDeals: [] });\r\n };\r\n //#endregion\r\n\r\n //#region Render customer search grid with single selection\r\n const onCustomCellRenderCallBack = (selectedRowData: any) => {\r\n let option = [{ key: selectedRowData.dataItem.id, text: \"\", ariaLabel: \"pick one\" }];\r\n return (\r\n <RadioGridCell\r\n cellId={selectedRowData.dataItem.id}\r\n options={option}\r\n selectedOption={selectedCustomer?.id}\r\n itemSelectionUpdate={onCustomerSelectionHandler}\r\n />\r\n );\r\n }\r\n //#endregion\r\n\r\n //#region set context on selection of customer\r\n\r\n const onCustomerSelectionHandler = (cellId: string, selectedValue: any): void => {\r\n let searchConfig = { ...customerSearchGridConfig };\r\n let customerData: ILegalEntity = searchConfig.kendoGridProps.data.filter((x: { id: Guid; }) => x.id === selectedValue)[0];\r\n setSelectedCustomer({ ...customerData });\r\n setDealCustomerData();\r\n\r\n if (commonPPContextState.opportunityDeals[0].statusCode === OpportunityDealStatusCodes.Draft && commonPPContextState.pageMode === PageMode.Edit && commonPPContextState.opportunityDeals[0].dealType != undefined) {\r\n customerEdit(customerData);\r\n }\r\n else {\r\n setIsOpenCasePanel(true);\r\n }\r\n }\r\n\r\n const setDealCustomerData = () => {\r\n if (!isNullOrEmpty(selectedCustomer) && selectedCustomer != undefined && !isNullOrEmpty(commonPPContextState)) {\r\n commonPPContextState.opportunityDeals.forEach(x => {\r\n x.customerName = selectedCustomer.legalEntityName;\r\n x.customerCountry = selectedCustomer.country;\r\n });\r\n }\r\n }\r\n\r\n const openPricingProgram = () => {\r\n if (commonPPContextState.pageMode !== PageMode.Edit) {\r\n setIsOpenCasePanel(true);\r\n }\r\n else {\r\n commonPPContextDispatch({ type: CaseActionTypes.casePivotChanged, selectedPivot: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInformationText\", UIControlsText.DealInformationText) });\r\n }\r\n }\r\n\r\n const onAddNewCustomerSelectionHandler = (customerEntity: ILegalEntity) => {\r\n customerEntity.reviewDecision = CustomerStatusCodes.Draft;\r\n customerEntity.action = ActionType.Add;\r\n customerEntity.customerType = CustomerType.Primary;\r\n setSelectedCustomer({ ...customerEntity });\r\n setSelectedDunsidValues([]);\r\n \r\n if (commonPPContextState.pageMode !== PageMode.Edit) {\r\n setselectedPricingPrograms([]);\r\n setIsOpenCasePanel(true);\r\n }\r\n else {\r\n customerEdit(customerEntity);\r\n }\r\n closePanel();\r\n }\r\n\r\n const customerEdit = (customer: ILegalEntity) => { \r\n let opportunityDeal = commonPPContextState.opportunityDeals[0];\r\n let selectedCustomerCountry = getCountryObjByName(customer?.country || '');\r\n\r\n setSelectedCustomer(customer);\r\n if (selectedCustomer != undefined) {\r\n selectedCustomer.legalEntityName = customer.legalEntityName;\r\n }\r\n\r\n let domain = opportunityDeal.dealCustomers && opportunityDeal.dealCustomers.length ? opportunityDeal.dealCustomers[0].dealCustomerDomain : \"\";\r\n opportunityDeal.dealCustomers = customer != undefined ? [{ ...customer, ...{ dealCustomerDomain: domain } }] : [];\r\n opportunityDeal.customerName = customer?.legalEntityName;\r\n opportunityDeal.dealCustomerCountry = selectedCustomerCountry?.countryId;\r\n opportunityDeal.geoCountries = selectedCustomerCountry !== undefined ? [{ ...selectedCustomerCountry, action: ActionType.Add }] : [];\r\n setSelectedCustomer(opportunityDeal.dealCustomers[0]);\r\n\r\n if (opportunityDeal.dealCustomers[0].isManaged === true) {\r\n SetHideUnManagedCustomerEdit(true);\r\n }\r\n }\r\n\r\n const handlePricingProgramSelection = (pricingPrograms: IDealType[]) => {\r\n commonPPContextDispatch({ type: CaseActionTypes.pricingProgramSelectionChanged, opportunityDeals: [{}] });\r\n const opportunityDeals: IDealState[] = [];\r\n let selectedCustomerCountry = getCountryObjByName(selectedCustomer?.country || '');\r\n pricingPrograms.forEach(dealType => {\r\n let opportunityDeal: IDealState = commonPPContextState.opportunityDeals.filter(x => x.dealType?.id == dealType.id)[0];\r\n if (!isNullOrEmpty(opportunityDeal)) { //modify customer details\r\n let domain = opportunityDeal.dealCustomers && opportunityDeal.dealCustomers.length ? opportunityDeal.dealCustomers[0].dealCustomerDomain : \"\";\r\n opportunityDeal.dealCustomers = selectedCustomer != undefined ? [{ ...selectedCustomer, ...{ dealCustomerDomain: domain } }] : [];\r\n opportunityDeal.customerName = selectedCustomer?.legalEntityName;\r\n opportunityDeal.dealCustomerCountry = selectedCustomerCountry?.countryId;\r\n opportunityDeal.dealType = { ...dealType };\r\n opportunityDeal.geoCountries = selectedCustomerCountry !== undefined ? [{ ...selectedCustomerCountry, action: ActionType.Add }] : [];\r\n opportunityDeals.push(opportunityDeal);\r\n }\r\n\r\n else { // add new opportunity\r\n let newoppDeal: IDealState = {\r\n id: Guid.newGuid(),\r\n dealType: dealType,\r\n statusCode: OpportunityDealStatusCodes.Draft,\r\n submitterDetails: commonPPContextState.submitterDetails,\r\n geoCountries: selectedCustomerCountry !== undefined ? [{ ...selectedCustomerCountry, action: ActionType.Add }] : [],\r\n dealCustomers: selectedCustomer != undefined ? [{ ...selectedCustomer }] : []\r\n };\r\n\r\n opportunityDeal = commonPPContextState.opportunityDeals[0];\r\n if (!!opportunityDeal) {\r\n let domain = opportunityDeal.dealCustomers && opportunityDeal.dealCustomers.length ? opportunityDeal.dealCustomers[0].dealCustomerDomain : \"\";\r\n newoppDeal.dealAddress = opportunityDeal.dealAddress;\r\n newoppDeal.dealVertical = opportunityDeal.dealVertical;\r\n newoppDeal.dealName = opportunityDeal.dealName;\r\n newoppDeal.dealOverview = opportunityDeal.dealOverview;\r\n newoppDeal.dealVolume = opportunityDeal.dealVolume;\r\n newoppDeal.dealCustomers?.forEach(x => x.dealCustomerDomain = domain); \r\n newoppDeal.customerName = selectedCustomer?.legalEntityName;\r\n newoppDeal.dealCustomerCountry = selectedCustomerCountry?.countryId;\r\n }\r\n\r\n opportunityDeals.push(newoppDeal);\r\n }\r\n });\r\n commonPPContextDispatch({ type: CaseActionTypes.pricingProgramSelectionChanged, opportunityDeals: opportunityDeals });\r\n commonPPContextDispatch({ type: CaseActionTypes.casePivotChanged, selectedPivot: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInformationText\", UIControlsText.DealInformationText) });\r\n commonPPContextDispatch({ type: CaseActionTypes.pricingProgramDealType, applicableDealTypes: pricingPrograms });\r\n if (commonPPContextState.opportunityDeals.filter(x => x.name === commonPPContextState.selectedOptyDealCaseNumber)?.length === 0) {\r\n commonPPContextDispatch({ type: CaseActionTypes.SelectedDealChanged, selectedDealNumber: (commonPPContextState.opportunityDeals.length > 0 && commonPPContextState.opportunityDeals[0].name) });\r\n }\r\n\r\n setselectedPricingPrograms(pricingPrograms);\r\n setIsOpenCasePanel(false);\r\n }\r\n const handlePricingProgramSelectionCancel = () => {\r\n let existingCustomer = commonPPContextState.opportunityDeals.filter(x => x.dealCustomers)[0];\r\n if (!isNullOrEmpty(existingCustomer)) {\r\n setSelectedCustomer(existingCustomer?.dealCustomers != undefined ? existingCustomer.dealCustomers[0] : undefined);\r\n }\r\n else {\r\n setSelectedCustomer(undefined);\r\n }\r\n setIsOpenCasePanel(false);\r\n }\r\n //#endregion\r\n\r\n //#region on counrty selection reset customer grid.\r\n const onCountrySelectionHandler = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n setSelectedCountry(item?.key.toString());\r\n if (!isNullOrEmpty(item)) {\r\n setSelectedCountries([item as IDropdownOption]);\r\n if (customerSearchGridConfig.kendoGridProps.actionTypes?.showAddNewPanelGridAction != null) {\r\n customerSearchGridConfig.kendoGridProps.actionTypes.showAddNewPanelGridAction = false;\r\n }\r\n customerSearchGridConfig.kendoGridProps.data = [];\r\n customerSearchGridConfig.kendoGridProps.totalRecords = 0;\r\n setCustomerSearchGridConfig({ ...customerSearchGridConfig });\r\n let pivotTabs: IPivotTab[] = cloneDeep(commonPPContextState.pivotTabs) || [];\r\n commonPPContextState.pivotTabs?.slice(1).forEach((item) => (item.isDisabled = true));\r\n pivotTabs.slice(1).forEach((item) => (item.isDisabled = true));\r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabs });\r\n } else {\r\n setSelectedCountries([]);\r\n }\r\n }\r\n //#endregion\r\n\r\n const [showCustomerSearchFilters, setShowCustomerSearchFilters] = useState<boolean>(false)\r\n //hide or show facets on click of button will be included\r\n const onShowFacets = () => {\r\n if (!showCustomerSearchFilters) {\r\n setSearchFilterButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"HideSearchFilter\", UIControlsText.HideSearchFilter));\r\n setShowCustomerSearchFilters(true);\r\n }\r\n else {\r\n setSearchFilterButtonText(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ShowSearchFilter\", UIControlsText.ShowSearchFilter));\r\n setShowCustomerSearchFilters(false);\r\n }\r\n }\r\n\r\n const [showAddCustomer, setShowAddCustomer] = useState<boolean>(false)\r\n //add new customer component panel will be added here\r\n const onAddNewPanelCallBack = () => {\r\n setShowAddCustomer(true);\r\n }\r\n const closePanel = () => {\r\n setShowAddCustomer(false);\r\n }\r\n\r\n\r\n /* On partner location change countries dropdown will be reset */\r\n useEffect(() => {\r\n let countries = countriesFilter(commonPPContextState.partnerDetails?.countryId);\r\n setCountriesDropdownData(countries);\r\n var countryId = \"\";\r\n\r\n if (commonPPContextState.pageMode === PageMode.Create) {\r\n countryId = commonPPContextState.partnerDetails?.countryId || \"\";\r\n }\r\n else {\r\n var requester = commonPPContextState.opportunityAccounts?.filter(acc => acc.channelSubType === ChannelSubType.Requester)[0];\r\n if (requester) {\r\n countryId = requester.countryId || \"\";\r\n }\r\n }\r\n let selectedPartnerCustomerCountry = countries?.filter(x => x.countryId === countryId)\r\n if (!isNullOrEmpty(selectedPartnerCustomerCountry) && selectedPartnerCustomerCountry.length > 0) {\r\n setSelectedCountries([{ key: selectedPartnerCustomerCountry[0]?.countryId, text: selectedPartnerCustomerCountry[0]?.countryName } as IDropdownOption])\r\n }\r\n setSelectedCountry(countryId);\r\n }, [commonPPContextState.partnerDetails?.countryId, commonPPContextState.selectedOptyDealCaseNumber]);\r\n\r\n // Method called on onChange event of any child combobox (facet)\r\n const selectedValues = async (selectedValue: any[], facetName: string): Promise<void> => {\r\n try {\r\n setSelectedDunsidValues(selectedValue)\r\n getCustomerSearchData(selectedSearchValue, 0, selectedValue);\r\n }\r\n catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // open dialog to edit un-managed customer \r\n const triggerEditCustomer = () => {\r\n setShowAddCustomer(true);\r\n }\r\n const onSuggest = (selectedValue: string): string => {\r\n let filterStringExpression = \"\";\r\n if (selectedCountries.length > 0) {\r\n store.setGlobalFilter(ApplicationConstants.CustomerSearchCountryGlobalIndex, selectedCountries.map(item => ApplicationConstants.CustomerSearchCountryGlobalIndex + \" \" + ApplicationConstants.Eq + \" '\" + item.text + \"'\").join(\" \" + ApplicationConstants.OrOperator + \" \"));\r\n if (filterStringExpression.length == 0) {\r\n filterStringExpression = createFilterExpression([ApplicationConstants.CustomerSearchCountryGlobalIndex], [selectedCountries.map(item => item.text)], false);\r\n }\r\n }\r\n return filterStringExpression;\r\n\r\n }\r\n const CustomerSearchJson = [\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"StackForCustomerSearch\",\r\n components: [\r\n {\r\n type: \"CustomTileCardComponent\",\r\n data: {\r\n id: \"ViewCardCustomer\",\r\n baseState: commonPPContextState,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDetails\", UIControlsText.CustomerDetails),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDetailsIcon\", UIControlsText.CustomerDetailsIcon),\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n horizontal: true,\r\n wrap: true,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n //style: DefaultPageStyles.padding8,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"GuidanceTextInformation\",\r\n visible: commonPPContextState.pageMode === PageMode.Create || commonPPContextState.pageMode === PageMode.Edit,\r\n data: {\r\n id: \"CustomerSearchGuidance\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CustomerSearchGuidance\", UIControlsText.CustomerSearchGuidance),\r\n }\r\n }\r\n\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n type: 'Row',\r\n data: {\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'Col',\r\n data: {\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n visible: selectedCustomer != undefined ? true : false,\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"SelectedCustomerInfo\",\r\n contolType: UIControlType.CustomerTable,\r\n selectedCustomer: selectedCustomer,\r\n showEdit: hideUnManagedCustomerEdit,\r\n editEvent: triggerEditCustomer\r\n }\r\n },\r\n {\r\n type: 'DialogComponent',\r\n data: {\r\n id: 'invalidCustomerDialog',\r\n hidden: hideCustomerDialog,\r\n isBlocking: true,\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"InactiveCustomer\", UIControlsText.InactiveCustomer),\r\n subText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SelectedCustomer\", UIControlsText.SelectedCustomer) + customerName,\r\n DialogContent: customerMessage,\r\n onDismiss: () => {\r\n setHideCustomerDialog(true);\r\n },\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n\r\n },\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Paper',\r\n visible: (commonPPContextState.pageMode === PageMode.Create || commonPPContextState.pageMode === PageMode.Edit),\r\n data: {\r\n id: 'CustomerSearchPaper',\r\n components: [\r\n {\r\n type: 'Row',\r\n data: {\r\n id: 'CustomerSearchTab',\r\n style: DefaultPageStyles.padding8,\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'Col',\r\n data: {\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"Dropdown\",\r\n data: {\r\n id: \"CustomerCountryDropdown\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerCountryText\", UIControlsText.CustomerCountryText),\r\n options: (countriesDropDownData && countriesDropDownData.map((pt) => ({ key: pt.countryId, text: pt.countryName } as IDropdownOption))) || [],\r\n styles: PageStyles.dropdownStyles,\r\n className: _Styles.dropdown,\r\n placeholder: \"Select the Customer Country\",\r\n onChange: onCountrySelectionHandler,\r\n selectedKey: selectedCountry,\r\n disabled: isCountryDisabled\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Col',\r\n data: {\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"SearchBar\",\r\n data: {\r\n ...{\r\n store: store, onSubmit, placeHolderText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Search\", UIControlsText.Search), onClear, onShowFacets, onSuggest,\r\n searchID: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerSearchID\", UIControlsText.CustomerSearchID),\r\n showFacetsText: searchFilterButtonText,\r\n hideFacetsButton: hideCustomerSearchFilterBtn,\r\n overrideCss: CssClassConstants.CustomerSearchBoxContainer,\r\n hideSearchBtn: selectedCountries.length > 0 ? false : true,\r\n showDistinctSuggestions: true,\r\n hideSlashFormatter: true\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Col',\r\n data: {\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n //type: \"PrimaryButton\", // will be enabled after partner screen is ready\r\n //data: {\r\n // text: UIControlsText.PartnerDetails,\r\n // className: \"mt-4\"\r\n //}\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Row',\r\n visible: commonPPContextState.pageMode === PageMode.Create || commonPPContextState.pageMode === PageMode.Edit,\r\n data: {\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'Col',\r\n data: {\r\n style: DefaultPageStyles.padding8,\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"GuidanceTextInformation\",\r\n visible: commonPPContextState.pageMode === PageMode.Create || commonPPContextState.pageMode === PageMode.Edit,\r\n data: {\r\n id: \"CustomerSearchResultsGuidance\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"CustomerSearchResultsGuidance\", UIControlsText.CustomerSearchResultsGuidance),\r\n styles: PageStyles.textFieldStylesTwoColumn,\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n\r\n ]\r\n\r\n },\r\n },\r\n {\r\n type: 'Stack',\r\n visible: showCustomerSearchFilters && (commonPPContextState.pageMode === PageMode.Create || commonPPContextState.pageMode === PageMode.Edit),\r\n data: {\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n styles: PageStyles.dropdownStyles,\r\n className: CssClassConstants.customerFilter,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"SearchableComboBoxComponent\",\r\n data: {\r\n ...{\r\n facetProps: {\r\n facetName: ApplicationConstants.DunsNumberFacetName,\r\n facetLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DunsNumberFacetText\", UIControlsText.DunsNumberFacetText),\r\n facetData: dunsid,\r\n selectedData: selectedDunsidValues,\r\n showFacetCount: false\r\n },\r\n selectedValues\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n\r\n ]\r\n\r\n },\r\n },\r\n {\r\n type: 'Row',\r\n visible: (commonPPContextState.pageMode === PageMode.Create || commonPPContextState.pageMode === PageMode.Edit),\r\n data: {\r\n horizontal: \"true\",\r\n style: DefaultPageStyles.padding8,\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'Col',\r\n\r\n data: {\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n id: 'customersearch',\r\n 'data-nextgen-parent-group': \"Create - Customer Search Details\",\r\n 'data-nextgen-parentid': \"Create - Customer Search Details\",\r\n components: [\r\n {\r\n type: 'Spinner',\r\n visible: loadingData,\r\n data: {\r\n id: 'SpinnerCusomerSearchSection',\r\n label: 'Loading...',\r\n role: 'alert',\r\n 'aria-live': 'assertive',\r\n 'aria-busy':'true'\r\n }\r\n },\r\n {\r\n type: \"NextGenKendoGrid\",\r\n visible: showCustomerGrid,\r\n id: 'CustomerSearchResultsGrid',\r\n data: {\r\n ...{\r\n kendoGridProps: { ...customerSearchGridConfig.kendoGridProps }, onPageChange, onCustomCellRenderCallBack, onAddNewPanelCallBack, resetPaginationToDefault: resetPaginationToDefault\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n\r\n ]\r\n\r\n },\r\n },\r\n {\r\n type: 'Row',\r\n visible: (commonPPContextState.pageMode === PageMode.Create || commonPPContextState.pageMode === PageMode.Edit),\r\n data: {\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'Col',\r\n data: {\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: 'PrimaryButton',\r\n data: {\r\n id: 'PricingProgBtn',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContinueText\", UIControlsText.ContinueText),\r\n styles: PageStyles.commandButtonPadding,\r\n title: UIControlsText.ContinueText,\r\n onClick: openPricingProgram,\r\n visible: selectedCustomer != undefined ? true : false\r\n }\r\n },\r\n {\r\n type: 'PrimaryButton',\r\n data: {\r\n id: 'PricingProgCancelBtn',\r\n text: UIControlsText.CancelText,\r\n styles: PageStyles.commandButtonPadding,\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText),\r\n onClick: backToDashboard\r\n }\r\n },\r\n ]\r\n },\r\n }\r\n ]\r\n\r\n },\r\n },\r\n {\r\n type: 'Stack',\r\n visible: (selectedCustomer != undefined ? true : false) && (commonPPContextState.pageMode === PageMode.Create || commonPPContextState.pageMode === PageMode.Edit),\r\n data: {\r\n id: 'PricingProgromSelection',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: 'StackItemPricingProgromSelection',\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"PricingProgramSelector\",\r\n data: {\r\n dealTypes: getEntityDataFromSession<IDealType>(SessionStorageConsts.dealTypes).filter(t => t?.name?.toLowerCase() === DealType.DealRegistration.toLowerCase() || t?.name?.toLowerCase() === DealType.SpecialPricing.toLowerCase()),\r\n selectedDealTypes: selectedPricingPrograms,\r\n isManaged: selectedCustomer?.isManaged,\r\n organizationName: selectedCustomer?.legalEntityName,\r\n productTypeName: commonPPContextState?.partnerDetails?.productGroupName,\r\n dealTypeName: DealType.DealRegistration,\r\n handlePricingProgramSelection,\r\n isOpenPanel: isOpenCasePanel,\r\n handlePricingProgramSelectionCancel,\r\n partnerDetails: commonPPContextState?.partnerDetails\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n type: \"Row\",\r\n visible: (commonPPContextState.pageMode === PageMode.Create || commonPPContextState.pageMode === PageMode.Edit),\r\n data: {\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"addCustomer\",\r\n contolType: UIControlType.Panel,\r\n isOpen: showAddCustomer,\r\n dismissPanel: closePanel,\r\n headerText: hideUnManagedCustomerEdit ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddNewCustomerText\", UIControlsText.AddNewCustomerText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EditCustomerText\", UIControlsText.EditCustomerText),\r\n content: <CreateUnmanagedCustomer {...{ onSubmitToPricingProgramCallBack: onAddNewCustomerSelectionHandler, onCloseCallBack: closePanel, savedCustomer: commonPPContextState?.opportunityDeals[0]?.dealCustomers ? commonPPContextState?.opportunityDeals[0]?.dealCustomers[0] : undefined }} />,\r\n type: PanelType.custom,\r\n customWidth: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PanelCustomerWidth55Percent\", UIControlsText.PanelCustomerWidth55Percent)\r\n }\r\n }]\r\n }\r\n },\r\n\r\n ];\r\n // show search json by default\r\n if (customerOption === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Search\", UIControlsText.Search)) {\r\n customerJson = CustomerSearchJson\r\n }\r\n //when case is approved / need more information and edit mode show details json\r\n else if (customerOption === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerDetails\", UIControlsText.CustomerDetails)) {\r\n customerJson = GetCustomerViewJson(customerDetail);\r\n }\r\n return customerJson;\r\n}","import { IComponent } from '../../../shared/Components/DynamicFormRendering';\r\nimport { DealDetails } from './DealDetails';\r\nimport { IPricingProgramProps } from '../props/IPricingProgramProps';\r\nimport { UIControlsText, UIConfigIdentifierConstants } from '../../../../content/UIControlsText';\r\nimport { Channel } from './Channel';\r\nimport { PageStyles } from '../../common/content/Page.Styles';\r\nimport { useCommonPPContext } from '../../common/context/common-pp-context';\r\nimport { PageMode } from '../../../../models/PageMode';\r\nimport { backToDashboard, getFieldConfig, getStatusNameByCode, getRequestorsChannelFunctionalities, isNullOrEmpty, isValidEmailWithSeperator, getRuleValidationMessage, getEntityDataFromSession, getUserDetails, isRequestorViewing, getLoggedinUserRoleDetails } from '../../../../components/shared/common/util';\r\nimport { useEffect, useState } from 'react';\r\nimport { OpportunityDealStatusCodes } from '../../../../models/OpportunityDealStatusCodes';\r\nimport { PartnerType } from '../../../../models/PartnerType';\r\nimport { CaseActionTypes } from '../../common/reducer/CaseActionTypes';\r\nimport { IAccount } from '../../../../models/IAccount';\r\nimport { ErrorMessages } from '../../../../content/ErrorMessages';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { IDropdown, IHoverCard, IPlainCardProps, mergeStyleSets } from '@fluentui/react';\r\nimport React from 'react';\r\nimport { HoverCardStyles, DefaultPageStyles, BreadCrumbStyles, separatorStyles } from '../../../../content/styles/Page.styles';\r\nimport { JavaScriptExtensions } from '../../../../infrastructure/JavaScriptExtensions';\r\nimport { nextGenService } from '../../../../services/NextGenService';\r\nimport { ProductSearch } from './ProductSearch';\r\nimport { ChannelSubType } from '../../../../models/ChannelSubType';\r\nimport { PartnerTypeLabel, PartnerTypeName } from '../../../../models/PartnerTypeLabel';\r\nimport { FieldMapMode } from '../../../../models/FieldMapMode';\r\nimport { CustomerSearch } from './CustomerSearch';\r\nimport { IPivotTab } from '../../../../models/IPivotTab';\r\nimport { StatePropertiesText } from '../../common/state/StatePropertiesText';\r\nimport { ApplicationConstants } from '../../../../models/ApplicationConstants';\r\nimport { CssClassConstants } from '../../../../content/CssClassConstants';\r\nimport { IFacetData } from '../../../../models/IFacetData';\r\nimport { getDealQuantityThreshold, isCaseContainsDealType, getSelectedDealDetails, initialChannelDisplayOnEdit, setPartnerDetails, showActionMenuHelper, validateMSStoreEmailErrorMessage } from '../PricingProgramFormUtils';\r\nimport { IActionMenuProps } from '../../../../components/shared/action-menu/IActionMenuProps';\r\nimport { IOpportunityDealDetails } from '../../../../models/IOpportunityDealDetails';\r\nimport { enableActionMenu } from '../../../../components/shared/action-menu/actionMenuUtil';\r\nimport { IDealState } from '../../common/state/IDealState';\r\nimport { IOpportunityAccount } from '../../../../models/IOpportunityAccount';\r\nimport { cloneDeep, isEmpty } from 'lodash';\r\nimport { DealType } from '../../../../models/DealType';\r\nimport { Guid } from '../../../../infrastructure/Guid';\r\nimport { IBreadcrumbItem } from '@fluentui/react/lib/Breadcrumb';\r\nimport { OpportunityDealClosureDecisionType } from '../../../../models/OpportunityDealClosureDecisionType';\r\nimport { ActionType } from '../../../../models/ActionType';\r\nimport { PageSubMode } from '../../../../models/PageSubMode';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { IUserRoleDetail } from \"../../../../models/IUserRoleDetail\";\r\nimport _ from 'lodash';\r\n\r\nexport function CreateForm(props: IPricingProgramProps) {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const { commonPPContextState, commonPPContextDispatch } = useCommonPPContext();\r\n const [showSuccessMessage, setShowSuccessMessage] = useState<boolean>(false);\r\n const [oppNumber, setOppNumber] = useState<string>(\"\");\r\n const [showContinueButton, setShowContinueButton] = useState<boolean>(true);\r\n const [showSubmitButton, setShowSubmitButton] = useState<boolean>(true);\r\n const [showCommandButtons, setShowCommandButtons] = useState<boolean>(commonPPContextState.selectedPivot !== getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerText\", UIControlsText.CustomerText));\r\n const [isCaseSaving, setIsCaseSaving] = useState(false);\r\n const [isDraftSaving, setIsDraftSaving] = useState(false);\r\n const [isSaveDraftButtonClicked, setIsSaveDraftButtonClicked] = useState(false);\r\n const [isFormLoading, setIsFormLoading] = useState<boolean>(false);\r\n const [MPNOrgID, setMPNOrgID] = useState<string>(\"\");\r\n const [MPNLocationID, setMPNLocationID] = useState<string>(\"\");\r\n const [productGroup, setProductGroup] = useState<string>(\"\");\r\n const [partnerRole, setPartnerRole] = useState<string>(\"\");\r\n const [dealNameAction, setdealNameAction] = useState<string>(\"\");\r\n const [isPartnerDetailHidden, setisPartnerDetailHidden] = useState(false);\r\n const [caseStatus, setcaseStatus] = useState<string>(\"\");\r\n const [actionMenuConfig, setActionMenuConfig] = useState<IActionMenuProps>();\r\n const tabNames: string[] = [getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerText\", UIControlsText.CustomerText), getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInformationText\", UIControlsText.DealInformationText), getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText), getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductsText\", UIControlsText.ProductsText)];\r\n const [country, setCountry] = useState<string>(\"\");\r\n const [isRequestor, setIsRequestor] = useState<boolean>(true);\r\n useEffect(() => {\r\n let pivotTabs: IPivotTab[] = [];\r\n tabNames.forEach(t => pivotTabs.push({ tabName: t, errors: new Map<string, string>(), isDisabled: t === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerText\", UIControlsText.CustomerText) ? false : true }))\r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabs })\r\n\r\n }, [])\r\n\r\n /**\r\n * Submit button click event handler.\r\n * @method\r\n */\r\n const onSubmit = () => {\r\n if (isCaseComplete()) {\r\n setIsSaveDraftButtonClicked(false);\r\n setOpportunityDealProductsGuidToEmpty();\r\n dispatchBDReviewNeeded();\r\n commonPPContextDispatch({ type: CaseActionTypes.submitCaseAsync, boolValue: true });\r\n }\r\n }\r\n\r\n const dispatchBDReviewNeeded = (): void => {\r\n if (commonPPContextState.pageMode?.toLowerCase() === PageMode.Edit.toLowerCase()) {\r\n commonPPContextState.opportunityDeals?.forEach(t => {\r\n if(t.statusCode || \"\" === OpportunityDealStatusCodes.Approved.toString()) {\r\n if ((t?.dealVolume?.toString() !== t?.savedDealVolume?.toString()) || \r\n ((t.products?.filter(p => p.action?.toLowerCase() === ActionType.Add.toLowerCase()).length || 0) > 0)) {\r\n commonPPContextDispatch({ type: CaseActionTypes.closureDecisionChanged, closureDecision: { key: t?.id, value: OpportunityDealClosureDecisionType.EditPendingReview } });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n //onSaveDraft click event\r\n const onSaveDraft = () => {\r\n setIsSaveDraftButtonClicked(true);\r\n setOpportunityDealProductsGuidToEmpty();\r\n commonPPContextDispatch({ type: CaseActionTypes.saveDraft, boolValue: true });\r\n }\r\n\r\n const setOpportunityDealProductsGuidToEmpty = () => {\r\n for (let i = 0; i < commonPPContextState.opportunityDeals.length; i++) {\r\n let opportunityDeal = cloneDeep(commonPPContextState.opportunityDeals[i]);\r\n if (opportunityDeal.products) {\r\n let products = [...opportunityDeal.products];\r\n let deal = opportunityDeal?.dealType?.name || \"\";\r\n if (deal === DealType.SpecialPricing) {\r\n products.forEach((item) => (item.businessUnitId = Guid.emptyGuid()));\r\n }\r\n else if (deal === DealType.DealRegistration) {\r\n products.forEach((item) => (item.productFamilyId = Guid.emptyGuid(), item.name = item.businessUnitName || \"\"));\r\n }\r\n commonPPContextState.opportunityDeals[i].products = [...products];\r\n }\r\n }\r\n }\r\n\r\n //onContinue click event\r\n const onContinue = () => {\r\n let tabName = commonPPContextState.selectedPivot;\r\n if (tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealInformationText\", UIControlsText.DealInformationText)) {\r\n tabName = getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText);\r\n }\r\n else if (tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)) {\r\n tabName = getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductsText\", UIControlsText.ProductsText);\r\n }\r\n\r\n commonPPContextDispatch({ type: CaseActionTypes.casePivotChanged, selectedPivot: tabName });\r\n }\r\n\r\n //Note : Need to add the Validations\r\n const isCaseComplete = (): boolean | undefined => {\r\n let validationErrors: string[] = [];\r\n isDealInformationTabIncomplete(validationErrors);\r\n isChannelTabIncomplete(validationErrors);\r\n isCutomerTabIncomplete(validationErrors);\r\n isProductTabIncomplete(validationErrors);\r\n\r\n validationErrors = _.uniq(validationErrors);\r\n if (validationErrors.filter(t => t !== \"\").length === 0) {\r\n return true\r\n }\r\n else {\r\n const pivotTab = commonPPContextState?.pivotTabs?.find(t => t.isValid === false);\r\n commonPPContextDispatch({ type: CaseActionTypes.casePivotChanged, selectedPivot: pivotTab?.tabName });\r\n return false;\r\n }\r\n }\r\n\r\n const isProductTabIncomplete = (errors: string[]): boolean | undefined => {\r\n let productTabErrors: string[] = [];\r\n let optyDeals : IDealState[] = [];\r\n if(commonPPContextState && !JavaScriptExtensions.isEmptyOrNullOrUndefined(commonPPContextState?.selectedOptyDealCaseNumber)) {\r\n optyDeals = commonPPContextState.opportunityDeals.filter(t => t.name === (commonPPContextState.selectedOptyDealCaseNumber)) || [];\r\n }\r\n else {\r\n optyDeals = commonPPContextState.opportunityDeals;\r\n }\r\n\r\n const pivotTabsData = commonPPContextState.pivotTabs;\r\n let pivotTab = pivotTabsData?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductsText\", UIControlsText.ProductsText));\r\n let message = getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText);\r\n\r\n optyDeals?.forEach(t => {\r\n if(message === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) && (JavaScriptExtensions.isNullOrUndfinedOrEmpty(t?.products) || t?.products?.length === 0)) {\r\n message = '';\r\n }\r\n });\r\n\r\n productTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidateProduct\", ErrorMessages.ValidateProduct), StatePropertiesText.ValidateProduct, message, pivotTab));\r\n productTabErrors = productTabErrors.filter(t => !JavaScriptExtensions.isEmptyOrNullOrUndefined(t));\r\n if (pivotTab) {\r\n pivotTab.isValid = productTabErrors.length === 0;\r\n }\r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabsData });\r\n errors.push(...productTabErrors);\r\n return errors.length > 0\r\n }\r\n\r\n const isCutomerTabIncomplete = (errors: string[]): boolean | undefined => {\r\n let customerTabErrors: string[] = [];\r\n let optyDeals : IDealState[] = [];\r\n if(commonPPContextState && !JavaScriptExtensions.isEmptyOrNullOrUndefined(commonPPContextState?.selectedOptyDealCaseNumber)) {\r\n optyDeals = commonPPContextState.opportunityDeals.filter(t => t.name === (commonPPContextState.selectedOptyDealCaseNumber)) || [];\r\n }\r\n else {\r\n optyDeals = commonPPContextState.opportunityDeals;\r\n }\r\n const pivotTabsData = commonPPContextState.pivotTabs;\r\n let pivotTab = pivotTabsData?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerText\", UIControlsText.CustomerText));\r\n let message = getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText);\r\n\r\n optyDeals?.forEach(t => {\r\n if(message === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) && (JavaScriptExtensions.isNullOrUndfinedOrEmpty(t?.dealCustomers) || t?.dealCustomers?.length === 0)) {\r\n message = '';\r\n }\r\n });\r\n\r\n customerTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidateCustomer\", ErrorMessages.ValidateCustomer), StatePropertiesText.ValidateCustomer, message, pivotTab));\r\n customerTabErrors = customerTabErrors.filter(t => !JavaScriptExtensions.isEmptyOrNullOrUndefined(t));\r\n if (pivotTab) {\r\n pivotTab.isValid = customerTabErrors.length === 0;\r\n }\r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabsData });\r\n errors.push(...customerTabErrors);\r\n return errors.length > 0\r\n }\r\n\r\n const isDealInformationTabIncomplete = (errors: string[]): boolean | undefined => {\r\n let dealInfoTabErrors: string[] = [];\r\n let optyDeals: IDealState[] = [];\r\n const pivotTabsData = commonPPContextState.pivotTabs;\r\n var pivotTab = pivotTabsData?.find(t => t.tabName === UIControlsText.DealInformationText);\r\n const dealData = commonPPContextState?.opportunityDeals.find((t: IDealState) => t.statusCode !== OpportunityDealStatusCodes.Draft);\r\n if(commonPPContextState && dealData && !_.isEmpty(dealData) && !JavaScriptExtensions.isEmptyOrNullOrUndefined(commonPPContextState?.selectedOptyDealCaseNumber)) {\r\n optyDeals = commonPPContextState.opportunityDeals.filter(t => t.name === (commonPPContextState.selectedOptyDealCaseNumber));\r\n optyDeals?.forEach((t: IDealState) => {\r\n if(t?.dealType?.name === DealType.DealRegistration) {\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoPreSalesRequired\", ErrorMessages.DealInfoPreSalesRequired), StatePropertiesText.PreSalesActivitiesText, t?.preSalesActivity, pivotTab));\r\n }\r\n });\r\n }\r\n else {\r\n optyDeals = commonPPContextState.opportunityDeals;\r\n optyDeals?.forEach((t: IDealState) => {\r\n if(commonPPContextState.opportunityDeals?.length > 0 && isCaseContainsDealType(commonPPContextState, DealType.DealRegistration)) {\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoPreSalesRequired\", ErrorMessages.DealInfoPreSalesRequired), StatePropertiesText.PreSalesActivitiesText, t?.preSalesActivity, pivotTab));\r\n }\r\n });\r\n }\r\n \r\n const selectedDealMinimumThreshold = getDealQuantityThreshold(commonPPContextState?.opportunityDeals, commonPPContextState?.partnerDetails?.productGroupName || \"\", commonPPContextState?.selectedOptyDealCaseNumber || \"\", commonPPContextState?.pageMode || \"\") || -1;\r\n optyDeals?.forEach((t: IDealState) => {\r\n const dealCustomer = t?.dealCustomers && t?.dealCustomers[0];\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoDealNameRequired\", ErrorMessages.DealInfoDealNameRequired), StatePropertiesText.DealNameText, t?.dealName, pivotTab));\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoDealVerticalRequired\", ErrorMessages.DealInfoDealVerticalRequired), StatePropertiesText.DealVerticalText, t?.dealVertical, pivotTab));\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoCustomerDomainRequired\", ErrorMessages.DealInfoCustomerDomainRequired), StatePropertiesText.CustomerDomain, dealCustomer?.dealCustomerDomain, pivotTab));\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoDeviceShipToAddressRequired\", ErrorMessages.DealInfoDeviceShipToAddressRequired), StatePropertiesText.DeviceShipToAddressText, t?.dealAddress?.address1, pivotTab));\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoCityRequired\", ErrorMessages.DealInfoCityRequired), StatePropertiesText.DeviceShipToCityText, t?.dealAddress?.city, pivotTab));\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoStateRequired\", ErrorMessages.DealInfoStateRequired), StatePropertiesText.DeviceShipToStateProvinceText, t?.dealAddress?.stateOrProvince, pivotTab));\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoPostalCodeRequired\", ErrorMessages.DealInfoPostalCodeRequired), StatePropertiesText.DeviceShipToPostalCodeText, t?.dealAddress?.postalCode, pivotTab));\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoDealOverviewRequired\", ErrorMessages.DealInfoDealOverviewRequired), StatePropertiesText.DealOverviewText, t?.dealOverview, pivotTab));\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoCommittedBlankDealVolume\", ErrorMessages.DealInfoCommittedBlankDealVolume), StatePropertiesText.DealVolumeText, t?.dealVolume?.toString(), pivotTab));\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(t?.dealVolume?.toString())) {\r\n const dealVolume = t?.dealVolume?.toString() || \"0\";\r\n if (parseInt(dealVolume) === 0) {\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoCommittedZeroDealVolume\", ErrorMessages.DealInfoCommittedZeroDealVolume), StatePropertiesText.DealVolumeText, \"\", pivotTab));\r\n }\r\n else if (parseInt(dealVolume) < selectedDealMinimumThreshold && selectedDealMinimumThreshold !== -1) {\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoCommittedMinimumThreshold\", ErrorMessages.DealInfoCommittedMinimumThreshold), StatePropertiesText.DealVolumeText, \"\", pivotTab));\r\n }\r\n }\r\n });\r\n\r\n if (commonPPContextState.opportunityRfp) {\r\n const dealInfoAttachments = commonPPContextState.attachments?.filter(x => x?.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText)) || [];\r\n if (JavaScriptExtensions.isNullOrUndfinedOrEmpty(dealInfoAttachments) || dealInfoAttachments?.length === 0) {\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"DealInfoRfpJustificationRequired\", ErrorMessages.DealInfoRfpJustificationRequired), StatePropertiesText.RfpJustification, commonPPContextState?.rfpJustification, pivotTab));\r\n }\r\n }\r\n\r\n const emailCC = commonPPContextState?.opportunityChannelContacts && commonPPContextState?.opportunityChannelContacts.find(t => t.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealDetailsText\", UIControlsText.DealDetailsText))?.channelContactEmails;\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(emailCC)) {\r\n const isComplete = isValidEmailWithSeperator(emailCC || \"\", ';');\r\n if (!isComplete) {\r\n dealInfoTabErrors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidEmailError\", ErrorMessages.ValidEmailError), StatePropertiesText.EmailCCNotificationRecipients, '', pivotTab));\r\n }\r\n }\r\n\r\n dealInfoTabErrors = dealInfoTabErrors.filter(t => !JavaScriptExtensions.isEmptyOrNullOrUndefined(t));\r\n if (pivotTab) {\r\n pivotTab.isValid = dealInfoTabErrors.length === 0;\r\n }\r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabsData });\r\n errors.push(...dealInfoTabErrors);\r\n return errors.length > 0\r\n }\r\n\r\n const isChannelTabIncomplete = (errors: string[]): boolean | undefined => {\r\n let requestorsChannelFunctionality = getRequestorsChannelFunctionalities(commonPPContextState.partnerDetails?.userRole || \"\", commonPPContextState?.partnerDetails?.countryName || \"\")\r\n initialChannelDisplayOnEdit(commonPPContextState, requestorsChannelFunctionality);\r\n const pivotTabsData = commonPPContextState.pivotTabs;\r\n let pivotTab = pivotTabsData?.find(t => t.tabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText)) || {};\r\n let channelTabErrors: string[] = [];\r\n if (requestorsChannelFunctionality.MSStore) {\r\n validateChannelMsStore(channelTabErrors, pivotTab);\r\n }\r\n\r\n else if (requestorsChannelFunctionality.FinalTierAndDistributors) {\r\n if (commonPPContextState.isFinalOrAdditionalReseller) {\r\n validatePartner(channelTabErrors, [PartnerType.FinalTierReseller], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidateFinalReseller\", ErrorMessages.ValidateFinalReseller), StatePropertiesText.ValidateFinalOrAdditionalReseller, pivotTab)\r\n }\r\n validatePartner(channelTabErrors, [PartnerType.ADD], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryDistributorOnly\", ErrorMessages.ValidatePrimaryDistributorOnly), StatePropertiesText.ValidateMultipleDistributors, pivotTab);\r\n validatePartner(channelTabErrors, [PartnerType.ADR, PartnerType.DMP], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryResellersOnly\", ErrorMessages.ValidatePrimaryResellersOnly), StatePropertiesText.ValidatePrimaryResellers, pivotTab);\r\n }\r\n\r\n else if (requestorsChannelFunctionality.AdditionalAndDistributors) {\r\n if (commonPPContextState.isFinalOrAdditionalReseller) {\r\n validatePartner(channelTabErrors, [PartnerType.AdditionalTierReseller], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidateAdditionalReseller\", ErrorMessages.ValidateAdditionalReseller), StatePropertiesText.ValidateFinalOrAdditionalReseller, pivotTab)\r\n }\r\n validatePartner(channelTabErrors, [PartnerType.ADD], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryDistributorOnly\", ErrorMessages.ValidatePrimaryDistributorOnly), StatePropertiesText.ValidateMultipleDistributors, pivotTab);\r\n validatePartner(channelTabErrors, [PartnerType.ADR, PartnerType.DMP], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryResellersOnly\", ErrorMessages.ValidatePrimaryResellersOnly), StatePropertiesText.ValidatePrimaryResellers, pivotTab);\r\n }\r\n\r\n else if (requestorsChannelFunctionality.PrimaryandAdditionalResellers) {\r\n if (commonPPContextState.isFinalOrAdditionalReseller) {\r\n validatePartner(channelTabErrors, [PartnerType.AdditionalTierReseller], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidateAdditionalReseller\", ErrorMessages.ValidateAdditionalReseller), StatePropertiesText.ValidateFinalOrAdditionalReseller, pivotTab)\r\n }\r\n validatePartner(channelTabErrors, [PartnerType.ADR, PartnerType.DMP], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryResellersOnly\", ErrorMessages.ValidatePrimaryResellersOnly), StatePropertiesText.ValidatePrimaryResellers, pivotTab)\r\n validatePartner(channelTabErrors, [PartnerType.ADD], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryDistributorOnly\", ErrorMessages.ValidatePrimaryDistributorOnly), StatePropertiesText.ValidateMultipleDistributors, pivotTab);\r\n }\r\n\r\n else if (requestorsChannelFunctionality.PrimaryAndFinalTierResellers) {\r\n if (commonPPContextState.isFinalOrAdditionalReseller) {\r\n validatePartner(channelTabErrors, [PartnerType.FinalTierReseller], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidateFinalReseller\", ErrorMessages.ValidateFinalReseller), StatePropertiesText.ValidateFinalOrAdditionalReseller, pivotTab)\r\n }\r\n validatePartner(channelTabErrors, [PartnerType.ADR, PartnerType.DMP], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryResellersOnly\", ErrorMessages.ValidatePrimaryResellersOnly), StatePropertiesText.ValidatePrimaryResellers, pivotTab);\r\n validatePartner(channelTabErrors, [PartnerType.ADD], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryDistributorOnly\", ErrorMessages.ValidatePrimaryDistributorOnly), StatePropertiesText.ValidateMultipleDistributors, pivotTab);\r\n }\r\n\r\n else if (requestorsChannelFunctionality.PrimaryResellersOnly) {\r\n validatePartner(channelTabErrors, [PartnerType.ADR, PartnerType.DMP], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryResellersOnly\", ErrorMessages.ValidatePrimaryResellersOnly), StatePropertiesText.ValidatePrimaryResellers, pivotTab);\r\n validatePartner(channelTabErrors, [PartnerType.ADD], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryDistributorOnly\", ErrorMessages.ValidatePrimaryDistributorOnly), StatePropertiesText.ValidateMultipleDistributors, pivotTab);\r\n }\r\n\r\n else if (requestorsChannelFunctionality.MultipleDistributorsOnly) {\r\n validatePartner(channelTabErrors, [PartnerType.ADD], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryDistributorOnly\", ErrorMessages.ValidatePrimaryDistributorOnly), StatePropertiesText.ValidateMultipleDistributors, pivotTab)\r\n validatePartner(channelTabErrors, [PartnerType.ADR, PartnerType.DMP], getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidatePrimaryResellersOnly\", ErrorMessages.ValidatePrimaryResellersOnly), StatePropertiesText.ValidatePrimaryResellers, pivotTab)\r\n }\r\n\r\n if (!requestorsChannelFunctionality.MSStore) {\r\n const requesterAccount = commonPPContextState.opportunityAccounts?.find(t => t.channelSubType === ChannelSubType.Requester);\r\n const optyChannelContact = commonPPContextState?.opportunityChannelContacts?.filter(t => t.source === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelText\", UIControlsText.ChannelText) && requesterAccount?.id !== t.opportunityAccountId);\r\n optyChannelContact?.forEach(t => validateChannelContactEmails(t?.channelContactEmails || \"\", t?.opportunityAccountId, channelTabErrors, pivotTab));\r\n }\r\n\r\n channelTabErrors = channelTabErrors.filter(t => !JavaScriptExtensions.isEmptyOrNullOrUndefined(t));\r\n if (pivotTab) {\r\n pivotTab.isValid = channelTabErrors.length === 0;\r\n }\r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabDetails: pivotTabsData });\r\n errors.push(...channelTabErrors);\r\n return errors.length > 0\r\n }\r\n\r\n const validatePartner = (errors: string[], partnerTypes: PartnerType[], errorMessage: string, targetProperty: string, pivotTab: IPivotTab) => {\r\n const optyAccounts = commonPPContextState?.opportunityAccounts?.filter(t => partnerTypes.find(x => t.partnerType === x) != null) || [];\r\n /** Name validation for Distributor and Reseller addressing bug - 10132737,370957598 Reseller Name is blank during Case Submission **/\r\n let validAccount = partnerTypes.find(x => PartnerType.AdditionalTierReseller === x || PartnerType.FinalTierReseller === x) != null ? optyAccounts?.filter(item => item && item.accountCompanyName) : \r\n optyAccounts?.filter(item=>item.accounts != null && item.accounts.length && (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.accounts[0].accountId)));\r\n let message = getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText);\r\n if (JavaScriptExtensions.isNullOrUndfinedOrEmpty(optyAccounts) || optyAccounts.length <= 0 || validAccount.length <= 0) {\r\n message = '';\r\n }\r\n \r\n errors.push(validateData(errorMessage, targetProperty, message, pivotTab));\r\n }\r\n\r\n const validateChannelMsStore = (errors: string[], pivotTab: IPivotTab) => {\r\n const optyAccounts = commonPPContextState.opportunityAccounts;\r\n var msStoreAccount = optyAccounts?.find(t => t.channelSubType === ChannelSubType.DigitalStore || t.channelSubType === ChannelSubType.DSS);\r\n var channelContactEmail = commonPPContextState?.opportunityChannelContacts?.find(c => c.opportunityAccountId === msStoreAccount?.id)?.channelContactEmails || \"\";\r\n const hubErrorMessage = msStoreAccount?.channelSubType === ChannelSubType.DSS ? getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredMSStoreHub\", ErrorMessages.RequiredMSStoreHub) : getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredMSStoreDigitalStore\", ErrorMessages.RequiredMSStoreDigitalStore);\r\n errors.push(validateData(hubErrorMessage, StatePropertiesText.PartnerAddress, msStoreAccount?.address, pivotTab));\r\n errors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredCity\", ErrorMessages.RequiredCity), StatePropertiesText.PartnerCity, msStoreAccount?.city, pivotTab));\r\n if (msStoreAccount?.channelSubType === ChannelSubType.DigitalStore) {\r\n errors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredState\", ErrorMessages.RequiredState), StatePropertiesText.PartnerState, msStoreAccount?.stateProvince, pivotTab));\r\n }\r\n errors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredMSStoreSellerEmail\", ErrorMessages.RequiredMSStoreSellerEmail), StatePropertiesText.PartnerSellerName, msStoreAccount?.accountCompanyName, pivotTab));\r\n errors.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"RequiredMSStoreSellerEmail\", ErrorMessages.RequiredMSStoreSellerEmail), StatePropertiesText.ValidateEmailText + msStoreAccount?.id, channelContactEmail, pivotTab));\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(channelContactEmail)) {\r\n const errorMessage = validateMSStoreEmailErrorMessage(channelContactEmail);\r\n const message = JavaScriptExtensions.isEmptyOrNullOrUndefined(errorMessage) ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText) : '';\r\n errors.push(validateData(errorMessage, StatePropertiesText.ValidateEmailText + msStoreAccount?.id, message, pivotTab));\r\n }\r\n\r\n }\r\n\r\n const validateChannelContactEmails = (email: string, optyAccountId?: string, errors?: string[], pivotTab?: IPivotTab) => {\r\n let message = getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"YesText\", UIControlsText.YesText));\r\n if (JavaScriptExtensions.isEmptyOrNullOrUndefined(email) || !isValidEmailWithSeperator(email || \"\", ';')) {\r\n message = '';\r\n }\r\n errors?.push(validateData(getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"ValidEmailError\", ErrorMessages.ValidEmailError), StatePropertiesText.ValidateEmailText + optyAccountId, message, pivotTab));\r\n }\r\n\r\n const validateData = (errorMessage: string, targetPropertyId: string, value: string | undefined, pivotTab?: IPivotTab): string => {\r\n if (JavaScriptExtensions.isEmptyOrNullOrUndefined(value)) {\r\n pivotTab?.errors?.set(targetPropertyId, errorMessage);\r\n return errorMessage;\r\n }\r\n else {\r\n pivotTab?.errors?.delete(targetPropertyId);\r\n return '';\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (commonPPContextState.submitCaseAsync) {\r\n (async () => {\r\n // don't save again while we are saving\r\n if (isCaseSaving) {\r\n return\r\n }\r\n\r\n try {\r\n setIsCaseSaving(true);\r\n setIsFormLoading(true);\r\n const userRoleDetails: IUserRoleDetail[] = getLoggedinUserRoleDetails();\r\n let opportunityData = {...commonPPContextState};\r\n opportunityData.opportunityDeals?.forEach(deal => {\r\n if(deal.statusCode === OpportunityDealStatusCodes.DraftRenew || (deal.statusCode === OpportunityDealStatusCodes.Unassigned && deal.isRenewed)){\r\n deal?.dealCustomers?.forEach(c => {\r\n c.action = \"\";\r\n });\r\n deal?.geoCountries?.forEach(g => {\r\n g.action = \"\";\r\n });\r\n deal?.products?.forEach(g => {\r\n g.action = \"\";\r\n });\r\n }\r\n })\r\n let optyDeal: IDealState = {};\r\n if(commonPPContextState && !JavaScriptExtensions.isEmptyOrNullOrUndefined(commonPPContextState?.selectedOptyDealCaseNumber)) {\r\n optyDeal = commonPPContextState.opportunityDeals.find(t => t.name === (commonPPContextState.selectedOptyDealCaseNumber)) || {};\r\n }\r\n else {\r\n optyDeal = commonPPContextState.opportunityDeals && commonPPContextState.opportunityDeals[0];\r\n }\r\n \r\n if(optyDeal.statusCode === OpportunityDealStatusCodes.DraftRenew) {\r\n optyDeal.statusCode = OpportunityDealStatusCodes.Draft;\r\n optyDeal.geoCountries?.forEach(g => {\r\n g.action = ActionType.Add;\r\n });\r\n optyDeal?.dealCustomers?.forEach(c => {\r\n c.action = ActionType.Add;\r\n });\r\n optyDeal?.products?.forEach(p => {\r\n p.action = ActionType.Add;;\r\n });\r\n }\r\n \r\n if (userRoleDetails !== undefined && userRoleDetails.length > 0 && opportunityData.submitterDetails !== undefined) {\r\n opportunityData.submitterDetails.userRoleDetails = userRoleDetails;\r\n }\r\n\r\n var isSaved = await nextGenService.submitOpportunityAsync(opportunityData);\r\n if (isSaved.status === 200) {\r\n sessionStorage.setItem(SessionStorageConsts.pageMode, PageMode.View);\r\n setOppNumber(isSaved.data);\r\n if (opportunityData?.pageMode === PageMode.Create || opportunityData?.opportunityDeals?.filter(t => t.statusCode === OpportunityDealStatusCodes.Draft)?.length > 0) {\r\n setIsFormLoading(false);\r\n setShowSuccessMessage(true);\r\n }\r\n else {\r\n backToDashboard()\r\n }\r\n }\r\n }\r\n catch (error: any) {\r\n setIsFormLoading(false);\r\n if (error && error.response.status === 422) {\r\n //resetLegalEntities(error.response);\r\n alert('Error' + error);\r\n }\r\n else {\r\n alert('Error' + error);\r\n }\r\n }\r\n finally {\r\n setIsCaseSaving(false);\r\n commonPPContextDispatch({ type: CaseActionTypes.submitCaseAsync, boolValue: false });\r\n }\r\n })();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [commonPPContextState.submitCaseAsync])\r\n\r\n useEffect(() => {\r\n (async () => {\r\n if (commonPPContextState.saveDraft) {\r\n // don't save again while we are saving\r\n if (isDraftSaving) {\r\n return\r\n }\r\n\r\n try {\r\n setIsDraftSaving(true);\r\n setIsFormLoading(true);\r\n var isSaved = await nextGenService.saveDraftOpportunity(commonPPContextState);\r\n if (isSaved.status === 200) {\r\n sessionStorage.setItem(SessionStorageConsts.pageMode, PageMode.View);\r\n setIsFormLoading(false);\r\n setOppNumber(isSaved.data);\r\n setShowSuccessMessage(true);\r\n }\r\n }\r\n catch (error: any) {\r\n if (error && error.response.status === 422) {\r\n setIsFormLoading(false);\r\n alert('Error' + error);\r\n //resetLegalEntities(error.response);\r\n }\r\n else {\r\n alert(error);\r\n }\r\n }\r\n finally {\r\n setIsDraftSaving(false);\r\n commonPPContextDispatch({ type: CaseActionTypes.saveDraft, boolValue: false });\r\n }\r\n }\r\n })();\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [commonPPContextState.saveDraft])\r\n\r\n useEffect(() => {\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(commonPPContextState.opportunityDeals)\r\n && commonPPContextState.opportunityDeals.length > 0\r\n && !JavaScriptExtensions.isEmptyOrNullOrUndefined(commonPPContextState.opportunityDeals[0].dealType?.name)) {\r\n const pivotTabsData = commonPPContextState.pivotTabs;\r\n pivotTabsData?.forEach(t => t.isDisabled = false);\r\n commonPPContextDispatch({ type: CaseActionTypes.pivotTabData, pivotTabsData: pivotTabsData });\r\n\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [commonPPContextState.opportunityDeals && commonPPContextState.opportunityDeals[0] && commonPPContextState.opportunityDeals[0].dealType])\r\n\r\n const [resellers, setResellers] = useState<IAccount[]>([]);\r\n\r\n const distributorItems = {\r\n current: JSON.parse(sessionStorage.distributors)\r\n }\r\n\r\n const onResellers = (resellers: IAccount[]) => {\r\n setResellers(resellers);\r\n }\r\n\r\n useEffect(() => {\r\n //to read partner details in ui\r\n if (props.pageContext?.pageMode === PageMode.Edit) {\r\n const oppDealNumber = commonPPContextState.selectedOptyDealCaseNumber;\r\n if (commonPPContextState.name && oppDealNumber && oppDealNumber.length > 0) {\r\n var oppDeal = commonPPContextState.opportunityDeals.filter(d => d.name === oppDealNumber)[0];\r\n if (oppDeal) {\r\n let partnerdetails = setPartnerDetails(commonPPContextState, props.productTypes, props.countries);\r\n var requester = commonPPContextState.opportunityAccounts?.find(acc => acc.channelSubType === ChannelSubType.Requester);\r\n if (requester && requester.accounts) {\r\n setMPNOrgID(requester.accounts[0].organizationId || \"\");\r\n var MPNLocAndCountry = (requester.accounts[0].locationId || \"\").concat(requester.accounts[0].locationId ? \" / \" : \"\").concat(partnerdetails.countryName || \"\")\r\n setMPNLocationID(MPNLocAndCountry);\r\n setCountry(requester.accounts[0].countryName || \"\");\r\n var RoleName = PartnerTypeName.get(requester?.partnerType || 0) || \"\";\r\n var RoleValue = PartnerTypeLabel.get(requester?.partnerType || 0) || \"\";\r\n setPartnerRole(RoleName.concat(\" (\", RoleValue, \")\"));\r\n }\r\n setIsRequestor(isRequestorViewing(commonPPContextState.submitterDetails?.email));\r\n commonPPContextDispatch({ type: CaseActionTypes.partnerDetailsChanged, partnerDetails: partnerdetails })\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(requester)) {\r\n const oppDealdetails = showActionMenuHelper(commonPPContextState, oppDeal, requester);\r\n const actionMenuConfig = enableActionMenu(oppDealdetails);\r\n actionMenuConfig.showCPStrategicLetters = false // hiding manufacturers confirmation letter action when viewing DR/SP case\r\n setActionMenuConfig({ actionConfig: actionMenuConfig, selectedData: getSelectedDealDetails(oppDealdetails, oppDeal)});\r\n }\r\n\r\n //to read case status from context\r\n var caseStatus = \"Case Status - \" + getStatusNameByCode(oppDeal.statusCode);\r\n setcaseStatus(caseStatus);\r\n\r\n // to read case name with action from context and show in ui\r\n var dealNameAndAction = ''\r\n if (props.pageContext?.pageSubMode === PageSubMode.Copy || props.pageContext?.pageSubMode === PageSubMode.Renew) {\r\n dealNameAndAction = commonPPContextState.name ? commonPPContextState.name + \" | \" + oppDeal.dealType?.name : \"\";\r\n } else {\r\n dealNameAndAction = commonPPContextState.name ? commonPPContextState.name + \" | \" + getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"EditCaseText\", UIControlsText.EditCaseText) + \" | \" + oppDeal.dealType?.name : \"\";\r\n }\r\n \r\n setdealNameAction(dealNameAndAction);\r\n\r\n //to show partner details only for Partners\r\n var ispartnerHidden = getFieldConfig(\"commonPP\", commonPPContextState.pageMode || \"\", oppDeal.statusCode || 0, oppDeal.dealType || {}, getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerInformation\", UIControlsText.PartnerInformation), FieldMapMode.Hidden) || false;\r\n\r\n setisPartnerDetailHidden(ispartnerHidden);\r\n }\r\n }\r\n }\r\n }, [commonPPContextState.opportunityAccounts, resellers, commonPPContextState.pageMode, commonPPContextState.selectedOptyDealCaseNumber]);\r\n\r\n useEffect(() => {\r\n if (!isNullOrEmpty(props?.partnerDetails)) {\r\n commonPPContextDispatch({ type: CaseActionTypes.productGroupChanged, productGroupValue: props?.partnerDetails?.productGroupId })\r\n commonPPContextDispatch({ type: CaseActionTypes.partnerDetailsChanged, partnerDetails: props?.partnerDetails })\r\n }\r\n }, [props?.partnerDetails]);\r\n\r\n // to show action menu on edit screen\r\n const showActionMenu = (oppDeal: IDealState, requester?: IOpportunityAccount) => {\r\n //start: show action menu in view form object\r\n let oppDealdetails: IOpportunityDealDetails = {} as IOpportunityDealDetails\r\n oppDealdetails.id = oppDeal.id || \"\";\r\n if (commonPPContextState.opportunityAccounts) {\r\n oppDealdetails.opportunityAccounts = commonPPContextState.opportunityAccounts;\r\n oppDealdetails.dealContacts = oppDeal.dealContacts;\r\n oppDealdetails.submitterDetails = commonPPContextState.submitterDetails;\r\n }\r\n oppDealdetails.dealName = oppDeal.dealName || \"\";\r\n oppDealdetails.dealType = oppDeal.dealType || {};\r\n oppDealdetails.statusCodeName = getStatusNameByCode(oppDeal?.statusCode);\r\n if (oppDeal?.statusCode) {\r\n oppDealdetails.statusCode = oppDeal?.statusCode;\r\n }\r\n if (requester) {\r\n var usertype: Array<string> = [];\r\n usertype.push(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Requester\", UIControlsText.Requester))\r\n oppDealdetails.userType = usertype;\r\n }\r\n oppDealdetails.opportunityName = commonPPContextState.name || \"\";\r\n oppDealdetails.dealExtensionCount = oppDeal.dealExtensionCount || 0\r\n oppDealdetails.unitsTransacted = oppDeal.unitsTransacted || 0\r\n oppDealdetails.unitsCommitted = oppDeal.dealVolume || 0\r\n oppDealdetails.expirationDate = oppDeal.expirationDate\r\n var selectedData: any = oppDealdetails;\r\n selectedData.name = oppDeal.name;\r\n var ISToffSet = 330;\r\n var offset = ISToffSet * 60 * 1000;\r\n var casestartDate = new Date(oppDeal.caseStartDate || \"\" + offset);\r\n if (casestartDate) {\r\n selectedData.caseStartDate = casestartDate;\r\n }\r\n const actionMenuConfig = enableActionMenu(oppDealdetails);\r\n actionMenuConfig.showCPStrategicLetters = false // hiding manufacturers confirmation letter action when editing DR/SP case\r\n\r\n setActionMenuConfig({ actionConfig: actionMenuConfig, selectedData: selectedData });\r\n //end: show action menu in view form object\r\n }\r\n\r\n /**\r\n * gets partner details tool tip \r\n * @returns partner details template\r\n */\r\n const renderPartnerDetails = () => {\r\n if (isNullOrEmpty(props?.partnerDetails)) {\r\n return (\r\n <div className=\"table-content\">\r\n </div>\r\n );\r\n }\r\n else {\r\n return (\r\n <div className=\"table-content\">\r\n {props?.partnerDetails?.organizationId && props?.partnerDetails?.organizationId.length > 0 && <div className=\"table-row\">\r\n <span className=\"table-cell\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MPNOrgID\", UIControlsText.MPNOrgID)}</span> <span className=\"table-cell\"> {props?.partnerDetails?.organizationId} </span></div>\r\n }\r\n {props?.partnerDetails?.mpnLocation && props?.partnerDetails?.mpnLocation.length > 0 && <div className=\"table-row\">\r\n <span className=\"table-cell\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MPNLocationID\", UIControlsText.MPNLocationID)}</span> <span className=\"table-cell\">{props?.partnerDetails?.mpnLocation}</span> </div>\r\n }\r\n {props?.partnerDetails?.productGroupName && props?.partnerDetails?.productGroupName.length > 0 && <div className=\"table-row\">\r\n <span className=\"table-cell\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText)}:</span> <span className=\"table-cell\"> {props?.partnerDetails?.productGroupName}</span></div>\r\n }\r\n {props?.partnerDetails?.userRole && props?.partnerDetails?.userRole.length > 0 && <div className=\"table-row\">\r\n <span className=\"table-cell\">{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerRole\", UIControlsText.PartnerRole)}:</span> <span className=\"table-cell\">{props?.partnerDetails?.userRole}</span></div>\r\n }\r\n </div>\r\n );\r\n }\r\n\r\n }\r\n\r\n const hoverCard = React.useRef<IHoverCard>(null);\r\n /**\r\n * hover card props\r\n */\r\n const plainCardProps: IPlainCardProps = {\r\n onRenderPlainCard: renderPartnerDetails,\r\n };\r\n\r\n /**\r\n * tooltip icon styles\r\n */\r\n const iconStyles = mergeStyleSets({\r\n blue: [DefaultPageStyles.marginRight, DefaultPageStyles.iconBlueColor],\r\n })\r\n\r\n useEffect(() => {\r\n showButtonsBasedonTabChange(commonPPContextState.selectedPivot || \"\");\r\n }, [commonPPContextState.selectedPivot])\r\n\r\n const handleTabSelectionChanges = (selectedTabName: string) => {\r\n showButtonsBasedonTabChange(selectedTabName);\r\n commonPPContextDispatch({ type: CaseActionTypes.casePivotChanged, selectedPivot: selectedTabName });\r\n }\r\n\r\n const showButtonsBasedonTabChange = (selectedTabName: string) => {\r\n const selectedDeal = commonPPContextState?.opportunityDeals.find(t => t.name === commonPPContextState.selectedOptyDealCaseNumber);\r\n setShowContinueButton(selectedTabName !== getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductsText\", UIControlsText.ProductsText));\r\n setShowCommandButtons(selectedTabName !== getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CustomerText\", UIControlsText.CustomerText));\r\n if((commonPPContextState.pageMode === PageMode.Create && selectedTabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductsText\", UIControlsText.ProductsText)) \r\n || (commonPPContextState.pageMode === PageMode.Edit && (selectedDeal?.statusCode === OpportunityDealStatusCodes.Draft || selectedDeal?.statusCode === OpportunityDealStatusCodes.DraftRenew) && selectedTabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductsText\", UIControlsText.ProductsText)) \r\n || (commonPPContextState.pageMode === PageMode.Edit && selectedDeal?.statusCode === OpportunityDealStatusCodes.Incomplete && selectedTabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductsText\", UIControlsText.ProductsText) && selectedDeal.closureDecision === OpportunityDealClosureDecisionType.InsufficientInformation) \r\n || (commonPPContextState.pageMode === PageMode.Edit && selectedDeal?.statusCode === OpportunityDealStatusCodes.PendingSecondaryReview && selectedTabName === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductsText\", UIControlsText.ProductsText) && selectedDeal.closureDecision === OpportunityDealClosureDecisionType.RequireAdditionalInformation) \r\n || (commonPPContextState.pageMode === PageMode.Edit && selectedDeal?.statusCode === OpportunityDealStatusCodes.Approved)) {\r\n setShowSubmitButton(true);\r\n }\r\n else {\r\n setShowSubmitButton(false);\r\n }\r\n }\r\n\r\n const facetList = (facetNames: string[]): string[] => {\r\n let facetCount = ApplicationConstants.FacetCount;\r\n let facetString: string[] = [];\r\n\r\n for (let i = 0; i < facetNames.length; i++) {\r\n facetString.push(facetNames[i] + \",count:\" + facetCount);\r\n }\r\n\r\n return facetString;\r\n }\r\n\r\n const createFilterExpression = (facetNames: string[], facetName: string, selectedValue: any[], allSelectedFacets: any[]): string => {\r\n let filterStringExpression = \"\";\r\n for (var i = 0; i < facetNames.length; i++) {\r\n if (facetNames[i] !== facetName) {\r\n if (allSelectedFacets[i].length > 0) {\r\n filterStringExpression = filterStringExpression + \"(\" + allSelectedFacets[i].map((item: IFacetData) => {\r\n if (item.value.indexOf(\"'\") > -1) {\r\n return \" \" + facetNames[i] + \" \" + ApplicationConstants.Eq + \" '\" + item.value.replace(/'/g, \"''\") + \"' \"\r\n }\r\n else {\r\n return \" \" + facetNames[i] + \" \" + ApplicationConstants.Eq + \" '\" + item.value + \"' \"\r\n }\r\n }).join(\" \" + ApplicationConstants.OrOperator + \" '\") + \") \" + ApplicationConstants.AndOperator + \" \";\r\n }\r\n }\r\n else {\r\n if (selectedValue.length > 0) {\r\n filterStringExpression = filterStringExpression + \"(\" + selectedValue.map(item => {\r\n if (item.value.indexOf(\"'\") > -1) {\r\n return \" \" + facetName + \" \" + ApplicationConstants.Eq + \" '\" + item.value.replace(/'/g, \"''\") + \"' \"\r\n }\r\n else {\r\n return \" \" + facetName + \" \" + ApplicationConstants.Eq + \" '\" + item.value + \"' \"\r\n }\r\n }).join(\" \" + ApplicationConstants.OrOperator + \" '\") + \") \" + ApplicationConstants.AndOperator + \" \";\r\n }\r\n }\r\n }\r\n\r\n return filterStringExpression;\r\n\r\n }\r\n\r\n const createGlobalFilterExpression = (filterNames: string[], filterValues: any[], euFilter: boolean): string => {\r\n let filterStringExpression = \"\";\r\n for (let i = 0; i < filterValues.length; i++) {\r\n if (filterValues[i].length > 0) {\r\n if (euFilter && filterNames[i] === ApplicationConstants.CustomerSearchCountryGlobalIndex) {\r\n filterStringExpression = filterStringExpression + \"(\" + ApplicationConstants.CustomerSearchCascadeCountryGlobalIndex + \" \" + ApplicationConstants.Eq + \" 'EU' \" + ApplicationConstants.OrOperator + \" \" + filterValues[i].map((item: string) => \" \" + filterNames[i] + \" eq '\" + item + \"' \").join(\" \" + ApplicationConstants.OrOperator + \" '\") + \") \" + ApplicationConstants.AndOperator + \" \";\r\n }\r\n else {\r\n filterStringExpression = filterStringExpression + \"(\" + filterValues[i].map((item: string) => \" \" + filterNames[i] + \" \" + ApplicationConstants.Eq + \" '\" + item + \"' \").join(\" \" + ApplicationConstants.OrOperator + \" '\") + \") \" + ApplicationConstants.AndOperator + \" \";\r\n }\r\n }\r\n else if (euFilter) {\r\n filterStringExpression = filterStringExpression + \"(\" + ApplicationConstants.CustomerSearchCascadeCountryGlobalIndex + \" \" + ApplicationConstants.Eq + \" 'EU' )\" + ApplicationConstants.AndOperator + \" \";\r\n }\r\n }\r\n\r\n return filterStringExpression;\r\n }\r\n\r\n const createFormJson: IComponent = {\r\n type: 'FormGroup',\r\n data: {\r\n id: 'RootContainer',\r\n components: [\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'CreateFormLoading',\r\n visible: isFormLoading,\r\n components: [\r\n {\r\n type: 'Spinner',\r\n data: {\r\n id: \"CreateFormLoadingSpinner\",\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProcessingText\", UIControlsText.ProcessingText),\r\n styles: PageStyles.spinnerLoadingIcon\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"action-menu-details\",\r\n visible: props.pageContext?.pageMode === PageMode.Edit,\r\n components: [{\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"partnerDetailsTooltip\",\r\n contolType: UIControlType.ActionMenu,\r\n actionMenuConfig\r\n }\r\n }]\r\n }\r\n },\r\n {\r\n type: 'CaseDetails',\r\n visible: props.pageContext?.pageMode === PageMode.Edit,\r\n data: {\r\n id: 'CaseDetailsSection',\r\n caseName: dealNameAction,\r\n caseStatus: caseStatus,\r\n orgID: MPNOrgID,\r\n locationID: MPNLocationID,\r\n productGroup: commonPPContextState?.partnerDetails?.productGroupName,\r\n partnerRole: partnerRole,\r\n isPartner: isPartnerDetailHidden,\r\n isRequestor: isRequestor,\r\n country: country,\r\n labelText: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerDetailsForCaseText\", UIControlsText.PartnerDetailsForCaseText),\r\n }\r\n },\r\n /*{\r\n type: \"Stack\",\r\n className: CssClassConstants.partnerDetailCase,\r\n visible: !showSuccessMessage,\r\n data: {\r\n id: \"partnerDetails\",\r\n visible: props.pageContext?.pageMode === PageMode.Create,\r\n components: [{\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"partnerDetailsTooltip\",\r\n contolType: UIControlType.HoverCardPlain,\r\n plainCardProps: plainCardProps,\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerDetailsForCaseText\", UIControlsText.PartnerDetailsForCaseText),\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactInfoIconName\", UIControlsText.ContactInfoIconName),\r\n hoverTextStyles: HoverCardStyles.hoverText,\r\n componentRef: hoverCard,\r\n cardDismissDelay: 300,\r\n iconClassName: iconStyles\r\n }\r\n }]\r\n }\r\n },*/\r\n {\r\n type: \"PivotContainer\",\r\n visible: !showSuccessMessage,\r\n data: {\r\n id: 'RootPivotContainerForAllTabs',\r\n baseState: props.pageContext,\r\n selectedTabName: commonPPContextState.selectedPivot || \"\",\r\n handleTabSelectionChanges,\r\n tabNames: commonPPContextState.pivotTabs,\r\n items: [\r\n CustomerSearch(),\r\n DealDetails({ verticals: props.verticals, dealTypes: props.dealTypes, countries: props.countries }),\r\n Channel({ verticals: props.verticals, dealTypes: props.dealTypes, countries: props.countries }, onResellers), //replace with Channel Tab \r\n ProductSearch({ verticals: props.verticals, dealTypes: props.dealTypes, countries: props.countries, facetProps: { facetList, createFilterExpression, createGlobalFilterExpression } }),\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n visible: !showSuccessMessage && showCommandButtons,\r\n data: {\r\n id: 'StackCommondButtons',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n components: [\r\n \r\n {\r\n type: \"StackItem\",\r\n visible: showContinueButton,\r\n data: {\r\n id: \"StackItemContinueButton\",\r\n components: [\r\n {\r\n type: 'PrimaryButton',\r\n data: {\r\n id: 'ContinueButton',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContinueText\", UIControlsText.ContinueText),\r\n styles: PageStyles.commandButtonPadding,\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContinueText\", UIControlsText.ContinueText),\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContinueText\", UIControlsText.ContinueText),\r\n onClick: onContinue\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n visible: showSubmitButton,\r\n data: {\r\n id: \"StackItemSubmitButton\",\r\n components: [\r\n {\r\n type: 'PrimaryButton',\r\n data: {\r\n id: 'SubmitButton',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitText\", UIControlsText.SubmitText),\r\n styles: PageStyles.commandButtonPadding,\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitText\", UIControlsText.SubmitText),\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitText\", UIControlsText.SubmitText),\r\n onClick: onSubmit\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: UIConfigIdentifierConstants.StackItemSaveDraftButtonId,\r\n components: [\r\n {\r\n type: 'DefaultButton',\r\n data: {\r\n id: 'SaveDraftButton',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SaveDraftText\", UIControlsText.SaveDraftText),\r\n styles: PageStyles.commandButtonPadding,\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SaveDraftText\", UIControlsText.SaveDraftText),\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SaveDraftText\", UIControlsText.SaveDraftText),\r\n onClick: onSaveDraft\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackItemCancelButton\",\r\n components: [\r\n {\r\n type: 'DefaultButton',\r\n data: {\r\n id: 'CancelButton',\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText),\r\n styles: PageStyles.commandButtonPadding,\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText),\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText),\r\n onClick: backToDashboard\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n type: 'Stack',\r\n visible: showSuccessMessage,\r\n data: {\r\n id: 'StackSuccessPage',\r\n disableshrink: 'true',\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"StackItemSuccessPage\",\r\n components: [\r\n {\r\n type: 'SuccessPage',\r\n data: {\r\n id: \"SuccessPage\",\r\n caseNumber: oppNumber,\r\n isSavingDraft: isSaveDraftButtonClicked,\r\n opportunityId: commonPPContextState.id,\r\n navigateTo: \"/partnerdetail\",\r\n dealType: commonPPContextState.opportunityDeals[0].dealType?.name\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'footerPadding',\r\n components: [\r\n ]\r\n },\r\n },\r\n ]\r\n }\r\n }\r\n\r\n return createFormJson;\r\n}","import GenericForm from '../../shared/Components/GenericFormComponent';\r\nimport { PageMode } from '../../../models/PageMode';\r\nimport { useForm } from 'react-hook-form';\r\nimport { ViewForm } from './ViewForm/ViewFormObject'\r\nimport { CreateForm } from './CreateForm/CreateFormObject';\r\nimport { useCommonPPContext } from '../common/context/common-pp-context';\r\nimport { IVertical } from '../../../models/IVertical';\r\nimport { IDealType } from '../../../models/IDealType';\r\nimport { ICountry } from '../../../models/ICountry';\r\nimport { IProductType } from '../../../models/IProductType';\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\nimport { getEntityDataFromSession, getRuleValidationMessage, getSelectedDeal, isNullOrEmpty } from '../../../components/shared/common/util';\r\nimport { IPartnerDetails } from '../../../models/IPartnerDetails';\r\nimport { CaseActionTypes } from '../common/reducer/CaseActionTypes';\r\nimport { useLocation } from 'react-router';\r\nimport { useEffect, useState } from 'react';\r\nimport { OpportunityDealStatusCodes } from '../../../models/OpportunityDealStatusCodes';\r\nimport { ChannelSubType } from '../../../models/ChannelSubType';\r\nimport { PartnerType } from '../../../models/PartnerType';\r\nimport { ErrorMessages } from '../../../content/ErrorMessages';\r\nimport { JavaScriptExtensions } from '../../../infrastructure/JavaScriptExtensions';\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { _Styles, expireDialog, extendDialogButtonStyles, stackButtonStyles, stackStyles } from '../../../content/styles/Page.styles';\r\nimport { DefaultButton, IStackTokens, Stack } from '@fluentui/react';\r\nimport { Label } from 'office-ui-fabric-react';\r\nimport { UIControlsText } from '../../../content/UIControlsText';\r\n\r\nfunction PricingProgramFormMain(props?: IPartnerDetails) {\r\n const location = useLocation();\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [invalidResellers, setInvalidResellers] = useState<string>(\"\");\r\n const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\r\n const partnerProps: any = location?.state;\r\n const { formState: { errors, isDirty } } = useForm();\r\n const { commonPPContextState, commonPPContextDispatch } = useCommonPPContext();\r\n const verticals = getEntityDataFromSession<IVertical>(SessionStorageConsts.verticals);\r\n const dealTypes = getEntityDataFromSession<IDealType>(SessionStorageConsts.dealTypes);\r\n const countries = getEntityDataFromSession<ICountry>(SessionStorageConsts.countries);\r\n const productTypes = getEntityDataFromSession<IProductType>(SessionStorageConsts.productTypes);\r\n const stackButtonTokens: IStackTokens = { childrenGap: 16 };\r\n const stackTokens: IStackTokens = { childrenGap: 24 };\r\n \r\n useEffect(() => {\r\n if (commonPPContextState.opportunityAccounts?.length && commonPPContextState.opportunityAccounts?.length > 0) {\r\n\r\n //Validate if selected account is still valid when editing Draft case\r\n if (commonPPContextState.pageMode === PageMode.Edit && getSelectedDeal(commonPPContextState)?.statusCode === OpportunityDealStatusCodes.Draft) {\r\n //Reseller account validation\r\n const invalidResellers = commonPPContextState.opportunityAccounts.filter(a => a.channelSubType !== ChannelSubType.Requester && (a.partnerType === PartnerType.ADR || a.partnerType === PartnerType.DMP) && a.accounts?.some(x => JavaScriptExtensions.isDefined(x.isActive) && !x.isActive));\r\n \r\n //Distributor account validation\r\n const invalidDistributors = commonPPContextState.opportunityAccounts.filter(a => a.channelSubType !== ChannelSubType.Requester && a.partnerType === PartnerType.ADD && a.accounts?.some(x => JavaScriptExtensions.isDefined(x.isActive) && !x.isActive));\r\n \r\n let updatedAccounts = [...commonPPContextState.opportunityAccounts];\r\n let invalidPartners: string = \"\";\r\n \r\n if (invalidResellers && invalidResellers.length > 0) {\r\n //Remove the invalid reseller & Show message\r\n updatedAccounts = updatedAccounts.filter(a => !invalidResellers.map(inv => inv?.id).includes(a.id));\r\n invalidPartners = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"UnavailablePartner\", ErrorMessages.UnavailablePartner) + invalidResellers.map(r => r?.accounts?.map(a => a.companyName)).join(', ');\r\n }\r\n if (invalidDistributors && invalidDistributors.length > 0) {\r\n //Remove the invalid reseller & Show message\r\n updatedAccounts = updatedAccounts.filter(a => !invalidDistributors.map(inv => inv?.id).includes(a.id));\r\n invalidPartners = invalidPartners === \"\" ? getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"UnavailablePartner\", ErrorMessages.UnavailablePartner) : invalidPartners + ', ';\r\n invalidPartners = invalidPartners + invalidDistributors.map(r => r?.accounts?.map(a => a.companyName)).join(', ')\r\n }\r\n \r\n if (invalidPartners != \"\") {\r\n setInvalidResellers(invalidPartners);\r\n setIsDialogOpen(true);\r\n commonPPContextDispatch({ type: CaseActionTypes.channelAccountChanged, opportunityAccounts: updatedAccounts });\r\n }\r\n }\r\n }\r\n }, [commonPPContextState.opportunityAccounts, commonPPContextState.pageMode, commonPPContextState.selectedOptyDealCaseNumber])\r\n\r\n const closeDialog = () => {\r\n setIsDialogOpen(false);\r\n };\r\n\r\n return (\r\n <>\r\n { isDialogOpen && <Dialog style={_Styles} onClose={closeDialog}>\r\n <Stack horizontal={false} tokens={stackTokens} styles={stackStyles}>\r\n <Stack>\r\n <h4> {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"UnavailableChannelPartner\", ErrorMessages.UnavailableChannelPartner)}</h4>\r\n </Stack>\r\n\r\n <Stack>\r\n <Label style={expireDialog} className={_Styles.DialogueCheckBox}>\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"InvalidResellerAccounts\", ErrorMessages.InvalidResellerAccounts)}\r\n <div>\r\n {invalidResellers}\r\n </div>\r\n </Label>\r\n </Stack>\r\n </Stack>\r\n <DialogActionsBar>\r\n <Stack horizontal horizontalAlign=\"end\" tokens={stackButtonTokens} styles={stackButtonStyles}>\r\n <DefaultButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"OkText\", UIControlsText.OkText)}\r\n onClick={closeDialog}\r\n styles={extendDialogButtonStyles}\r\n />\r\n </Stack>\r\n </DialogActionsBar>\r\n </Dialog>\r\n }\r\n\r\n <GenericForm\r\n errors={errors}\r\n formJsonTemplate={commonPPContextState.pageMode?.toLowerCase() === PageMode.View.toLowerCase()\r\n ? ViewForm({ verticals, dealTypes, countries, productTypes, pageContext: commonPPContextState }) :\r\n CreateForm({ verticals, dealTypes, countries, productTypes, pageContext: commonPPContextState, partnerDetails: partnerProps?.partnerDetails })}\r\n baseState={commonPPContextState} >\r\n </GenericForm>\r\n </>\r\n );\r\n}\r\n\r\nexport default PricingProgramFormMain;\r\n","import { IDropdown, MessageBarType } from '@fluentui/react';\r\nimport { IDropdownOption, IStackItemStyles, IStackTokens } from \"office-ui-fabric-react\";\r\nimport React, { useState } from \"react\";\r\nimport { useHistory } from \"react-router\";\r\nimport { getUserSession, isMsStoreUser, isNullOrEmpty, getRuleValidationMessage, getEntityDataFromSession } from \"../../../../components/shared/common/util\";\r\nimport { BreadCrumbStyles, DefaultPageStyles, PartnerSearchStyles, separatorStyles, _Styles } from \"../../../../content/styles/Page.styles\";\r\nimport { UIControlsText } from \"../../../../content/UIControlsText\";\r\nimport { DealDetailsStyles, PageStyles } from \"../../common/content/Page.Styles\";\r\nimport { IPartnerDetails } from '../../../../models/IPartnerDetails';\r\nimport { IComponent } from '../../../shared/Components/DynamicFormRendering';\r\nimport { stackItemStyles } from '../PricingProgramFormUtils';\r\nimport { IPricingProgramProps } from '../props/IPricingProgramProps';\r\nimport { DisplayMode } from '../../../../models/DisplayMode';\r\nimport { UIControlType } from '../../../../models/UIControlType';\r\nimport { GuidanceText } from '../../../../models/GuidanceText';\r\nimport { UserRole } from '../../../../models/UserRole';\r\nimport { trim } from 'lodash';\r\nimport { MessageTypeText } from '../../../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from '../../../../models/SessionStorageConsts';\r\nimport { UserSubRole } from '../../../../models/UserSubRole';\r\nimport { useToSetPageTitle as mdppAccessibilitySetPageTitle } from '../../../../hooks/accessiblity-hooks';\r\nimport { PageNames } from '../../../../hooks/accessiblity-hooks';\r\n\r\nexport function CasePartnerDetailForm(props: IPricingProgramProps) {\r\n const [partnerRole, setPartnerRole] = useState(\"\");\r\n const [mpnLocationProductTypes, setMPNLocationProductTypes] = useState<any[]>([]);\r\n const [organizationId, setOrganizationId] = useState<string>();\r\n const [locationId, setLocationId] = useState<string>();\r\n const [accountId, setAccountId] = useState<string>();\r\n const [locationDropdown, setLocationDropdown] = useState<IDropdownOption[]>([])\r\n const [productDropdown, setProductDropdown] = useState<IDropdownOption[]>([])\r\n const [mpnCountryName, setMPNCountryName] = useState<string>();\r\n const [mpnCountryId, setMPNCountryId] = useState<string>(); \r\n const [mpnLocationCountry, setMPNLocationCountry] = useState<string | undefined>();\r\n const [productGroupValue, setProductGroupValue] = useState<string | undefined>();\r\n const [productGroup, setProductGroup] = useState<string | undefined>();\r\n const [disableContinue, setDisableContinue] = useState<boolean>(true);\r\n const [displayMessageText, setDisplayMessageText] = useState<boolean>(true);\r\n const [displayMessageNote, setDisplayMessageNote] = useState<boolean>(true);\r\n const [productRoles, setProductRoles] = useState<any[]>([]);\r\n const history = useHistory();\r\n const dropdownRef = React.createRef<IDropdown>();\r\n const [isInternalUser, setIsInternalUser] = useState<boolean>(false);\r\n const partnerPaddingStyle: IStackTokens = { padding : \"8px\" };\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n mdppAccessibilitySetPageTitle(PageNames.NewCaseSubmission);\r\n \r\n React.useEffect(() => {\r\n getUserDetails();\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (dropdownRef.current?.selectedOptions?.length != undefined && dropdownRef.current?.selectedOptions?.length < 1)\r\n dropdownRef.current?.focus(true);\r\n }, [dropdownRef]);\r\n\r\n\r\n /**\r\n * Get user details and add locations and products groups to dropdowns\r\n */\r\n const getUserDetails = () => {\r\n let data = JSON.parse(getUserSession());\r\n let userRoleDetails: any[] = data.userRoleDetails;\r\n let organizationLocationIds: any[] = [];\r\n let locationProductTypes: any[] = [];\r\n userRoleDetails.map(x => {\r\n let countryName = props.countries.find(ele => ele.countryId == x.countryId)?.countryName;\r\n let mpnOrganizationLocation = `${x.organizationName} / ${countryName}`\r\n\r\n if (!isNullOrEmpty(x.locationId) && organizationLocationIds.findIndex(y => y.locationId == x.locationId) === -1) {\r\n organizationLocationIds.push({organizationId: x.organizationId, organizationName: x.organizationName, locationId: x.locationId, countryId: x.countryId,\r\n location: countryName, mpnOrganizationLocation: mpnOrganizationLocation})\r\n } \r\n\r\n locationProductTypes.push({\r\n location: mpnOrganizationLocation,\r\n productType: x.productType,\r\n userRole: x.userSubRole,\r\n countryId: x.countryId,\r\n countryName: countryName,\r\n organizationId: x.organizationId,\r\n locationId: x.locationId,\r\n accountId: x.accountId\r\n });\r\n }\r\n );\r\n\r\n let locDropdown: IDropdownOption[] = [];\r\n let locArray = Array.from(organizationLocationIds);\r\n for (let i = 0; i < locArray.length; i++) {\r\n locDropdown.push({ key: locArray[i].locationId || locArray[i].mpnOrganizationLocation, text: locArray[i].mpnOrganizationLocation});\r\n }\r\n\r\n setLocationDropdown(locDropdown); \r\n setMPNLocationProductTypes(locationProductTypes);\r\n setProductsAndRoles(locDropdown, locationProductTypes);\r\n if (isMsStoreUser()) {\r\n setIsInternalUser(true);\r\n }\r\n }\r\n\r\n /**\r\n * sets product types and roles if only one location exits\r\n * @param locDropdown \r\n * @param mpnLocationProductTypes \r\n */\r\n const setProductsAndRoles = (locDropdown: IDropdownOption[], mpnLocationProductTypes: any[]) => {\r\n let prodDropdown: IDropdownOption[] = [];\r\n let productRole: any[] = [];\r\n if (locDropdown.length === 1) {\r\n setMPNLocationCountry(locDropdown[0].key.toString());\r\n let products: any[] = mpnLocationProductTypes.filter(x => x.locationId == locDropdown[0].key.toString());\r\n setOrganizationId(products[0].organizationId);\r\n setLocationId(products[0].locationId); \r\n setMPNCountryId(products[0].countryId);\r\n setMPNCountryName(products[0].countryName);\r\n setAccountId(products[0].accountId);\r\n products.map(prod => {\r\n if (prodDropdown.findIndex(x => x.key == prod.productType.productId) === -1) {\r\n prodDropdown.push({ key: prod.productType.productId, text: prod.productType.productName });\r\n }\r\n productRole.push({ product: prod.productType.productId, role: prod.userRole });\r\n });\r\n\r\n var excludeUserRole = process.env.REACT_APP_EXCLUDE_USERROLE || UserSubRole.ClaimOnlyADD;\r\n productRole = productRole.filter(x => !excludeUserRole.split(',').includes(x.role));\r\n setProductRoles(productRole);\r\n }\r\n else {\r\n props?.productTypes.map(eachProduct => {\r\n prodDropdown.push({ key: eachProduct?.productId, text: eachProduct?.productName });\r\n });\r\n }\r\n setProductDropdown(prodDropdown);\r\n if (prodDropdown.length === 1) {\r\n setProductGroupValue(prodDropdown[0].key.toString());\r\n setProductGroup(prodDropdown[0].text);\r\n if (productRole.length === 1) {\r\n setPartnerRole(productRole[0].role);\r\n setDisableContinue(false);\r\n }\r\n }\r\n\r\n }\r\n\r\n /**\r\n * on location change assign selected location to local variable and get product Groups for the location\r\n * @param event \r\n * @param option \r\n * @param index \r\n */\r\n const onLocationChange = (event: React.FormEvent<HTMLDivElement>, option?: IDropdownOption, index?: number) => {\r\n setMPNLocationCountry(option?.key?.toString());\r\n getProductGroups(option?.key.toString())\r\n dropdownRef.current?.focus(false);\r\n }\r\n\r\n /**\r\n * Get product groups for given location id\r\n * @param locId \r\n */\r\n const getProductGroups = (locId: string | undefined) => {\r\n if (locId) {\r\n let products: any[] = mpnLocationProductTypes.filter(x => x.locationId == locId);\r\n setOrganizationId(products[0].organizationId);\r\n setLocationId(products[0].locationId); \r\n setMPNCountryId(products[0].countryId);\r\n setMPNCountryName(products[0].countryName);\r\n setAccountId(products[0].accountId);\r\n let prodDropdown: IDropdownOption[] = [];\r\n let productRole: any[] = [];\r\n products.map(prod => {\r\n if (prodDropdown.findIndex(x => x.key == prod.productType.productId) === -1) {\r\n prodDropdown.push({ key: prod.productType.productId, text: prod.productType.productName });\r\n }\r\n productRole.push({ product: prod.productType.productId, role: prod.userRole });\r\n });\r\n setProductDropdown(prodDropdown);\r\n setProductRoles(productRole);\r\n if (prodDropdown.length === 1) {\r\n setProductGroupValue(prodDropdown[0].key.toString());\r\n setProductGroup(prodDropdown[0].text);\r\n let roles = productRole.filter(x => x.product === prodDropdown[0].key.toString());\r\n if (roles.length > 1) {\r\n setDisableContinue(true);\r\n }\r\n else {\r\n setPartnerRole(roles[0].role);\r\n setDisableContinue(false);\r\n }\r\n }\r\n else if (prodDropdown.length > 1) {\r\n setProductGroupValue(\"\");\r\n setPartnerRole(\"\");\r\n setDisableContinue(true);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * on continue button click set context and show customer search\r\n */\r\n const onContinueClick = () => {\r\n let partnerDetails: IPartnerDetails = {\r\n mpnLocation: mpnLocationCountry,\r\n countryId: mpnCountryId,\r\n countryName: mpnCountryName,\r\n userRole: partnerRole,\r\n organizationId: organizationId,\r\n productGroupId: productGroupValue,\r\n productGroupName: productGroup,\r\n mpnLocationId: locationId,\r\n accountId: accountId\r\n }\r\n history.push({\r\n pathname: '/managecase/pricingprogram',\r\n state: { ...{ partnerDetails } }\r\n })\r\n }\r\n\r\n /**\r\n * on product group change assign selected product group to local variable and set roles\r\n * @param event \r\n * @param option \r\n * @param index \r\n */\r\n const onProductGroupSelect = (event: React.FormEvent<HTMLDivElement>, option?: IDropdownOption, index?: number) => {\r\n setProductGroupValue(option?.key.toString());\r\n setProductGroup(option?.text);\r\n if (productRoles.length > 0) {\r\n let roles = productRoles.filter(x => x.product === option?.key.toString());\r\n var excludeUserRole = process.env.REACT_APP_EXCLUDE_USERROLE || UserSubRole.ClaimOnlyADD;\r\n roles = roles.filter(x => !excludeUserRole.split(',').includes(x.role));\r\n if (roles.length > 1) {\r\n setDisableContinue(true);\r\n }\r\n else {\r\n setPartnerRole(roles[0].role);\r\n setDisableContinue(false);\r\n }\r\n if (locationDropdown.length === 1) {\r\n dropdownRef.current?.focus(false);\r\n }\r\n }\r\n else {\r\n setDisableContinue(false);\r\n }\r\n if (locationDropdown.length === 1) {\r\n dropdownRef.current?.focus(false);\r\n }\r\n if (isInternalUser) {\r\n setDisableContinue(false);\r\n }\r\n }\r\n\r\n /**\r\n * on click of cancel button navigate user to home page\r\n */\r\n const onCancelClick = () => {\r\n history.push(\"/homePage\");\r\n }\r\n\r\n /**\r\n * casePartnerDetailForm template\r\n */\r\n const casePartnerDetailForm: IComponent = {\r\n type: 'FormGroup',\r\n data: {\r\n id: 'RootContainer',\r\n baseState: props.pageContext, \r\n components: [\r\n {\r\n type: 'Breadcrumb',\r\n data: {\r\n id: 'Breadcrumb',\r\n title: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseSubmissionText\", UIControlsText.CaseSubmissionText),\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseSubmissionText\", UIControlsText.CaseSubmissionText),\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseSubmissionText\", UIControlsText.CaseSubmissionText),\r\n styles: BreadCrumbStyles,\r\n items: [\r\n \r\n { text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"HomeText\", UIControlsText.HomeText), key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"HomeText\", UIControlsText.HomeText), href: \"/homepage\" },\r\n { text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"NewCaseSubmissionText\", UIControlsText.NewCaseSubmissionText), key: \"NCS\", href: \"/partnerdetail\" }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Separator',\r\n data: {\r\n id: 'Separator',\r\n styles: separatorStyles\r\n }\r\n },\r\n {\r\n type: 'FormGroup',\r\n data: {\r\n id: 'PartnerSearch',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n visible: true,\r\n 'data-nextgen-parent-group': \"Create - Partner Detail\",\r\n 'data-nextgen-parentid': \"Create - Partner Detail\",\r\n components: [\r\n {\r\n type: 'Stack',\r\n visible: true,\r\n data: {\r\n id: 'StackItemPartnerSearchHeader',\r\n align: \"auto\",\r\n visible: true,\r\n tokens: partnerPaddingStyle,\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n\r\n id: \"verifyDetailsHeader\",\r\n visible: true,\r\n components: [{\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"PartnerSearchHeader\",\r\n contolType: UIControlType.Text,\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"VerifyDetailsHeader\", UIControlsText.VerifyDetailsHeader),\r\n textSize: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"TextSizeXLarge\", UIControlsText.TextSizeXLarge)\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: 'StackItemPartnerSearchText',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n visible: displayMessageText,\r\n tokens: partnerPaddingStyle,\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"PartnerSearchTextMsgBar\",\r\n visible: displayMessageText,\r\n components: [{\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"PartnerSearchText\",\r\n contolType: UIControlType.MessageBar,\r\n message: isInternalUser ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"InternalUserSearchCaseSubmissionText\", GuidanceText.InternalUserSearchCaseSubmissionText) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"PartnerSearchCaseSubmissionText\", GuidanceText.PartnerSearchCaseSubmissionText),\r\n messageBarType: MessageBarType.info,\r\n styles: DealDetailsStyles.customerWarningMessageWidth\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n visible: !isInternalUser,\r\n data: {\r\n id: 'StackItemPartnerSearchNote',\r\n horizontal: \"true\",\r\n disableshrink: 'true',\r\n visible: displayMessageNote,\r\n tokens: partnerPaddingStyle,\r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"partnerSearchNote\",\r\n components: [{\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"PartnerSearchNote\",\r\n contolType: UIControlType.MessageBar,\r\n message: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldGuidanceText, \"PartnerSearchCaseSubmissionNote\", GuidanceText.PartnerSearchCaseSubmissionNote),\r\n messageBarType: MessageBarType.info,\r\n styles: DealDetailsStyles.customerWarningMessageWidth\r\n }\r\n }]\r\n }\r\n\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type : \"Paper\",\r\n data :{\r\n id :\"PatnerDetailsPaper\",\r\n components : [ \r\n {\r\n type: 'Stack',\r\n visible: true,\r\n data: {\r\n id: \"mpn-location\",\r\n visible: !isInternalUser,\r\n horizontal: true,\r\n align: \"auto\",\r\n components: [ \r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"locationIcon\",\r\n styles: stackItemStyles,\r\n components: [{\r\n type: \"FontIcon\",\r\n data: {\r\n id: \"locIcon\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"POIIconName\", UIControlsText.POIIconName),\r\n className: PartnerSearchStyles.locationIconClass,\r\n }\r\n }]\r\n }\r\n }, \r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"locationId\",\r\n styles: stackItemStyles,\r\n components: [\r\n {\r\n type: \"Dropdown\",\r\n visible: locationDropdown.length > 1,\r\n data: {\r\n id: \"mpnLocationID\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MPNLocationIdCountry\", UIControlsText.MPNLocationIdCountry),\r\n options: locationDropdown,\r\n styles: PageStyles.dropdownStyles,\r\n className: _Styles.dropdown,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"MPNLocationIdCountryPlaceHolder\", UIControlsText.MPNLocationIdCountryPlaceHolder),\r\n onChange: onLocationChange,\r\n selectedKey: mpnLocationCountry,\r\n componentRef: locationDropdown.length > 1 ? dropdownRef : null\r\n }\r\n },\r\n {\r\n type: \"InnerHTMLContainer\",\r\n visible: locationDropdown.length <= 1,\r\n data: {\r\n id: \"partnerMPNCountryForView\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MPNLocationIdCountry\", UIControlsText.MPNLocationIdCountry),\r\n styles: PageStyles.dropdownStyles,\r\n value: mpnLocationCountry,\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"MPNLocationIdCountry\", UIControlsText.MPNLocationIdCountry), \r\n contolType: UIControlType.LabelValueView,\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: \"productTypes\",\r\n visible: true,\r\n horizontal: true,\r\n align: \"auto\",\r\n \r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"productIcon\",\r\n styles: stackItemStyles,\r\n components: [{\r\n type: \"FontIcon\",\r\n data: {\r\n id: \"productGroupIcon\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductVariantIConName\", UIControlsText.ProductVariantIConName),\r\n className: PartnerSearchStyles.productGroupIconClass,\r\n }\r\n }]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"productTypeForEdit\",\r\n visible: productDropdown.length > 1,\r\n components: [\r\n {\r\n type: \"Dropdown\",\r\n data: {\r\n id: \"productTypeDropdown\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText),\r\n options: productDropdown,\r\n styles: PageStyles.dropdownStyles,\r\n className: _Styles.dropdown,\r\n placeholder: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupPlaceHolderText\", UIControlsText.DealProductGroupPlaceHolderText),\r\n onChange: onProductGroupSelect,\r\n selectedKey: productGroupValue,\r\n componentRef: ((locationDropdown.length === 1 && productDropdown.length > 1) || isInternalUser) ? dropdownRef : null\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"productTypeForView\",\r\n visible: productDropdown.length <= 1,\r\n components: [ \r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"productTypeTextbox\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n value: props?.productTypes?.find(t => productGroupValue === t.productId)?.productName,\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"DealProductGroupText\", UIControlsText.DealProductGroupText), \r\n contolType: UIControlType.LabelValueView,\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'Stack',\r\n data: {\r\n id: \"partnerRole\",\r\n visible: !isInternalUser,\r\n horizontal: true,\r\n align: \"auto\",\r\n \r\n components: [\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"productIcon\",\r\n styles: stackItemStyles,\r\n components: [{\r\n type: \"FontIcon\",\r\n data: {\r\n id: \"productGroupIcon\",\r\n iconName: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContactIconName\", UIControlsText.ContactIconName),\r\n className: PartnerSearchStyles.partnerRoleIconClass,\r\n }\r\n }]\r\n }\r\n },\r\n {\r\n type: \"StackItem\",\r\n data: {\r\n id: \"role\",\r\n components: [\r\n {\r\n type: \"InnerHTMLContainer\",\r\n data: {\r\n id: \"partnerRoleTextbox\",\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerRole\", UIControlsText.PartnerRole),\r\n styles: PageStyles.textFieldStylesOneColumn,\r\n value: partnerRole,\r\n ariaLabel: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PartnerRole\", UIControlsText.PartnerRole), \r\n contolType: UIControlType.LabelValueView,\r\n }\r\n }\r\n ]\r\n }\r\n \r\n }\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n },\r\n {\r\n type: \"Stack\",\r\n data: {\r\n id: \"buttonGroup\",\r\n horizontal: \"true\",\r\n tokens: partnerPaddingStyle,\r\n components: [\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: \"continue\",\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"PrimaryButton\",\r\n data: {\r\n id: \"continueBtn\",\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ContinueText\", UIControlsText.ContinueText),\r\n disabled: disableContinue,\r\n styles: PageStyles.commandButtonPadding,\r\n onClick: onContinueClick\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'StackItem',\r\n data: {\r\n id: \"cancel\",\r\n styles: stackItemStyles,\r\n align: \"auto\",\r\n components: [\r\n {\r\n type: \"DefaultButton\",\r\n data: {\r\n id: \"cancelBtn\",\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText),\r\n styles: PageStyles.commandButtonPadding,\r\n onClick: onCancelClick\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n return casePartnerDetailForm;\r\n}","import GenericForm from '../../shared/Components/GenericFormComponent';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useCommonPPContext } from '../common/context/common-pp-context';\r\nimport { IVertical } from '../../../models/IVertical';\r\nimport { IDealType } from '../../../models/IDealType';\r\nimport { ICountry } from '../../../models/ICountry';\r\nimport { IProductType } from '../../../models/IProductType';\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\nimport { getEntityDataFromSession } from '../../../components/shared/common/util';\r\nimport { CasePartnerDetailForm } from './CreateForm/CasePartnerDetailForm';\r\n\r\nfunction CasePartnerDetail() {\r\n const onSubmit = (values: any) => console.log(JSON.stringify(values));\r\n const { formState: { errors, isDirty } } = useForm();\r\n const { commonPPContextState, commonPPContextDispatch } = useCommonPPContext();\r\n const verticals = getEntityDataFromSession<IVertical>(SessionStorageConsts.verticals)\r\n const dealTypes = getEntityDataFromSession<IDealType>(SessionStorageConsts.dealTypes)\r\n const countries = getEntityDataFromSession<ICountry>(SessionStorageConsts.countries)\r\n const productTypes = getEntityDataFromSession<IProductType>(SessionStorageConsts.productTypes)\r\n\r\n return (\r\n <GenericForm\r\n onSubmit={onSubmit}\r\n errors={errors}\r\n formJsonTemplate={CasePartnerDetailForm({ verticals, dealTypes, countries, productTypes, pageContext: commonPPContextState })}\r\n baseState={commonPPContextState} >\r\n </GenericForm>\r\n );\r\n}\r\n\r\nexport default CasePartnerDetail;\r\n","import LinkCustomKendoGridCell from \"./linkcustomkendogridcell\";\r\nimport { IGridCustomCellDictionary } from \"./IGridCustomCellDictionary\";\r\nimport { GridCellProps } from \"@progress/kendo-react-grid\";\r\nimport { ComponentType } from \"react\";\r\n\r\n/**\r\n * Common Props for Shared components.\r\n * @Constant\r\n */\r\nexport const CustomKendoGridCellConstants: IGridCustomCellDictionary<ComponentType<GridCellProps>> = {\r\n 'link': LinkCustomKendoGridCell\r\n}","import { FC, Fragment, useEffect } from \"react\";\r\nimport { GridCellProps, GRID_COL_INDEX_ATTRIBUTE, } from \"@progress/kendo-react-grid\";\r\nimport { useTableKeyboardNavigation } from \"@progress/kendo-react-data-tools\";\r\nimport { ApplicationConstants } from \"../../models/ApplicationConstants\";\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { PageMode } from \"../../models/PageMode\";\r\n\r\n\r\nconst LinkCustomKendoGridCell: FC<GridCellProps> = (props: GridCellProps) => {\r\n const navigationAttributes = useTableKeyboardNavigation(props.id);\r\n const navigatetoViewforDRSP = (opportunityName?: string, opportunityDealName?: string) => {\r\n sessionStorage.setItem(SessionStorageConsts.pageMode, PageMode.View);\r\n window.location.href = \"/managecase/pricingprogram?oppNumber=\" + opportunityName + \"&oppDealNumber=\" + opportunityDealName\r\n }\r\n const navigatetoViewforCPS = (opportunityName?: string) => {\r\n sessionStorage.setItem(SessionStorageConsts.pageMode, PageMode.View);\r\n window.location.href = \"/managecase/cpstrategic?oppNumber=\" + opportunityName\r\n }\r\n \r\n const navigatetoViewforOTLE = (opportunityName?: string) => {\r\n sessionStorage.setItem(SessionStorageConsts.pageMode, PageMode.View);\r\n window.location.href = \"/managecase/otle?oppNumber=\" + opportunityName\r\n }\r\n\r\n return (\r\n <Fragment>\r\n <td style={props.style} // this applies styles that lock the column at a specific position\r\n className={props.className} // this adds classes needed for locked columns\r\n colSpan={props.colSpan}\r\n role={\"gridcell\"}\r\n aria-colindex={props.ariaColumnIndex}\r\n aria-selected={props.isSelected}\r\n {...{ [GRID_COL_INDEX_ATTRIBUTE]: props.columnIndex }}\r\n {...navigationAttributes}\r\n >\r\n {(props.dataItem.dealType.name === ApplicationConstants.OTLE) &&\r\n (<a className=\"custom-kendo-grid-link\" onClick={() => navigatetoViewforOTLE(props.dataItem.opportunityName)} >\r\n {props.dataItem.opportunityName}\r\n </a>)\r\n }\r\n {(props.dataItem.dealType.name === ApplicationConstants.CPStrategic) &&\r\n (<a className=\"custom-kendo-grid-link\" onClick={() => navigatetoViewforCPS(props.dataItem.opportunityName)} >\r\n {props.dataItem.opportunityName}\r\n </a>)\r\n }\r\n {((props.dataItem.dealType.name === ApplicationConstants.DealRegistration) || (props.dataItem.dealType.name === ApplicationConstants.SpecialPricing)) &&\r\n (<a className=\"custom-kendo-grid-link\" onClick={() => navigatetoViewforDRSP(props.dataItem.opportunityName, props.dataItem.name)} >\r\n {props.dataItem.opportunityName}\r\n </a>)\r\n }\r\n </td>\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default LinkCustomKendoGridCell","import React, { useEffect, useState } from 'react';\r\nimport { IOverflowSetItemProps, OverflowSet, Checkbox, ContextualMenuItemType, IIconProps } from '@fluentui/react';\r\nimport { CommandBarButton, CommandButton } from '@fluentui/react/lib/Button';\r\nimport { IMultiSelectDropDownProps } from './IMultiSelectDropDownProps';\r\nimport { IKendoGridColumnProps } from '../grid/IKendoGridColumnProps';\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\nimport { UIControlsText } from '../../../content/UIControlsText';\r\nimport { getUserRole, LoadDefaultGridData, readGridConfig } from '../common/util';\r\nimport { buttonStyles, chooseColumnStyles } from \"../../../content/styles/Page.styles\";\r\nimport { CssClassConstants } from '../../../content/CssClassConstants';\r\nimport { IMultiSelectDropDownSessionProps } from '../props/IMultiSelectSessionProps';\r\nimport { SpecialPricing } from '../../../pages/dashboard/special-pricing-view';\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"../../../components/shared/common/util\";\r\n\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings)\r\n\r\nconst onRenderItem = (item: IOverflowSetItemProps): JSX.Element => {\r\n if (item.onRender) {\r\n return item.onRender(item);\r\n }\r\n return (\r\n <CommandBarButton\r\n iconProps={{ iconName: item.icon }}\r\n menuProps={item.subMenuProps}\r\n text={item.name}\r\n />\r\n );\r\n};\r\n\r\nconst resetIcon: IIconProps = { iconName: CssClassConstants.ResetIconName };\r\n\r\nconst onRenderOverflowButton = (overflowItems: any[] | undefined): JSX.Element => {\r\n return (\r\n <CommandBarButton\r\n styles={buttonStyles}\r\n menuProps={{ items: overflowItems! }}\r\n />\r\n );\r\n};\r\n\r\nexport const MultiSelectDropDown: React.FunctionComponent<IMultiSelectDropDownProps> = (props: IMultiSelectDropDownProps) => {\r\n const [menuItems, setMenuItems] = useState<IOverflowSetItemProps[]>([])\r\n const [selectedKeys, setSelectedKeys] = useState<string[]>([]);\r\n var columns: IKendoGridColumnProps[] = []\r\n\r\n let selectedColumns = sessionStorage.getItem(SessionStorageConsts.selectedColumns);\r\n\r\n useEffect(() => {\r\n if (selectedColumns) {\r\n let pricingGridColumns = JSON.parse(selectedColumns).filter((col: IMultiSelectDropDownSessionProps) => col.gridName === props.gridName)\r\n if (pricingGridColumns.length !== 0) {\r\n setSelectedKeys(pricingGridColumns[0].selectedColumns.filter((col: IKendoGridColumnProps) => col.isDefaultSelected === true).map((c: { key: any; }) => c.key))\r\n } else {\r\n if (props.dashBoardData) {\r\n setSelectedKeys(props.dashBoardData.filter((col: IKendoGridColumnProps) => col.isDefaultSelected === true).map((c) => c.key))\r\n }\r\n }\r\n } else {\r\n if (props.dashBoardData) {\r\n setSelectedKeys(props.dashBoardData.filter((col: IKendoGridColumnProps) => col.isDefaultSelected === true).map((c) => c.key))\r\n }\r\n }\r\n bindGridColumns();\r\n\r\n }, []);\r\n\r\n\r\n useEffect(() => {\r\n bindGridColumns();\r\n }, [props]);\r\n\r\n // Method to add grid columns and default selected and disabled checkboxes\r\n const bindGridColumns = () => {\r\n var userRole = getUserRole();\r\n var userSubRole = userRole.split(\",\");\r\n let tempMenuItems: any = []\r\n props.dashBoardData?.map((col: IKendoGridColumnProps) => {\r\n if(col.allowColumnView.some(item => userSubRole.includes(item))){\r\n tempMenuItems.push({\r\n key: col.key,\r\n onRender: () => {\r\n return <Checkbox name={col.key} inputProps={{role :\"menuitemcheckbox\"}} styles={chooseColumnStyles.checkboxStyles} label={col.columnTitle} checked={col.isDefaultSelected} disabled={col.isDisabled} onChange={e => onCheckBoxChange(e)} />\r\n }\r\n })\r\n }\r\n })\r\n setMenuItems(tempMenuItems)\r\n }\r\n\r\n // Method to handle the the onChange event of checkbox\r\n const onCheckBoxChange = (e: any) => {\r\n var selecteditems: string[] = [];\r\n selecteditems = e.target.checked ? [...selectedKeys, e.target.name as string] : selectedKeys.filter(key => key !== e.target.name)\r\n setSelectedKeys(selecteditems)\r\n populateColumnsOnGrid(selecteditems)\r\n }\r\n\r\n // Method to add selectedColumns data to session.\r\n const populateColumnsOnGrid = (selectedKeys: string[]) => {\r\n let updatedGridColumns: IKendoGridColumnProps[] = []\r\n if (props.dashBoardData) {\r\n updatedGridColumns = updateDashboardGridConfig(selectedKeys, props.dashBoardData)\r\n }\r\n updateSessionDataConfig(updatedGridColumns)\r\n\r\n }\r\n\r\n const updateSessionDataConfig = (gridColumns: IKendoGridColumnProps[]) => {\r\n if (selectedColumns) {\r\n let sessionGridConfigData = JSON.parse(selectedColumns)\r\n let pricingGridColumns = sessionGridConfigData.filter((col: IMultiSelectDropDownSessionProps) => col.gridName === props.gridName)\r\n if (pricingGridColumns.length !== 0) {\r\n pricingGridColumns[0].selectedColumns = gridColumns\r\n sessionStorage.setItem(SessionStorageConsts.selectedColumns, JSON.stringify(sessionGridConfigData))\r\n }\r\n }\r\n }\r\n\r\n const updateDashboardGridConfig = (selectedKeys: string[], gridData: IKendoGridColumnProps[]): IKendoGridColumnProps[] => {\r\n gridData.forEach((element) => {\r\n if (selectedKeys.includes(element.key)) {\r\n element.isDefaultSelected = true\r\n element.isVisible = true\r\n } else {\r\n element.isDefaultSelected = false\r\n element.isVisible = false\r\n }\r\n columns.push(element)\r\n })\r\n props.updateDashboardGridColumnsData?.(columns)\r\n return columns;\r\n }\r\n\r\n // Method to remove selectedColumns data from session storage \r\n const onReset = () => {\r\n let defaultGridState = readGridConfig(props.gridName)\r\n let defaultSelectedColumns = LoadDefaultGridData(defaultGridState.kendoGridProps)\r\n updateSessionDataConfig(defaultSelectedColumns.columns)\r\n props.updateDashboardGridColumnsData?.(defaultSelectedColumns.columns)\r\n setSelectedKeys(defaultSelectedColumns.columns.filter((col) => col.isDefaultSelected === true).map((col) => col.key))\r\n }\r\n\r\n return (\r\n <OverflowSet\r\n className='choosecolumns'\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChooseColumnsLabel\", UIControlsText.ChooseColumnsLabel)}\r\n items={[\r\n {\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChooseColumnsLabel\", UIControlsText.ChooseColumnsLabel),\r\n icon: CssClassConstants.ChooseColumnIconName,\r\n name: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChooseColumnsLabel\", UIControlsText.ChooseColumnsLabel),\r\n subMenuProps: {\r\n items: [\r\n {\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Resetbtn\", UIControlsText.Resetbtn),\r\n onRender: () => {\r\n return (\r\n <CommandButton iconProps={resetIcon} id=\"resetBtn\" text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Resetbtn\", UIControlsText.Resetbtn)} onClick={onReset} />\r\n\r\n )\r\n }\r\n },\r\n {\r\n key: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ColumnsHeader\", UIControlsText.ColumnsHeader),\r\n text: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ColumnsHeader\", UIControlsText.ColumnsHeader),\r\n itemType: ContextualMenuItemType.Header,\r\n\r\n },\r\n ...menuItems,\r\n\r\n ],\r\n calloutProps: {\r\n calloutMaxHeight: 400,\r\n },\r\n },\r\n },\r\n ]}\r\n onRenderOverflowButton={onRenderOverflowButton}\r\n onRenderItem={onRenderItem}\r\n />\r\n )\r\n};\r\n","import { GridDetailRowProps } from \"@progress/kendo-react-grid\";\r\nimport { Stack } from \"office-ui-fabric-react\";\r\nimport { Fragment, useEffect } from \"react\";\r\nimport { PageStyles } from \"../../pages/pricingprogram/common/content/Page.Styles\";\r\nimport Highlighter from \"react-highlight-words\";\r\nimport { SKUGridProps } from \"./props/ISkuCustomKendogridDetailProps\";\r\n\r\nconst SkuComponent = (props: SKUGridProps) => {\r\n const { dataItem } = props;\r\n useEffect(() => {\r\n }, [props.filterValue])\r\n return (\r\n <Fragment>\r\n <Stack id=\"BGskuList\">\r\n <tr style={PageStyles.bgSKUStyles.paddingLeft250}>\r\n <td style={PageStyles.bgSKUStyles.header1}><span>SKU Number</span></td>\r\n <td style={PageStyles.bgSKUStyles.header2}><span>SKU Name</span></td>\r\n </tr>\r\n {dataItem.productSku.map((skuData: any) => {\r\n return <tr style={PageStyles.bgSKUStyles.paddingLeft250}>\r\n {skuData.partNumber && <td style={PageStyles.bgSKUStyles.header1}><Highlighter\r\n highlightClassName=\"mark\"\r\n searchWords={[props.filterValue]}\r\n autoEscape={true}\r\n textToHighlight={skuData.partNumber}\r\n /></td>}\r\n <td style={PageStyles.bgSKUStyles.productNames}><span>{skuData.name}</span></td>\r\n </tr>\r\n })}\r\n </Stack>\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default SkuComponent;","export const messages = {\r\n en_more_records: {\r\n \"grid.pagerInfo\": \"{0} - {1} of {2}+ items\",\r\n },\r\n en: {\r\n \"grid.pagerInfo\": \"{0} - {1} of {2} items\",\r\n }\r\n };","import { useState, useCallback, useEffect } from \"react\";\r\nimport {\r\n Grid, GridColumn, GridItemChangeEvent, GridCellProps, GridSelectionChangeEvent, GridHeaderSelectionChangeEvent,\r\n getSelectedState, GridPageChangeEvent, GridRowProps, GridFooterCellProps, GridSortChangeEvent, GridExpandChangeEvent,\r\n GridColumnMenuCheckboxFilter, GridColumnMenuProps\r\n , GridHeaderCellProps, GridToolbar, GridColumnMenuFilter, GridFilterChangeEvent, GridPagerSettings, GridNoRecords, GridDetailRowProps\r\n} from \"@progress/kendo-react-grid\";\r\nimport { SortDescriptor, CompositeFilterDescriptor, orderBy, filterBy, isCompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\nimport { getter } from \"@progress/kendo-react-common\";\r\nimport { CellRender, RowRender } from \"./gridrenderers\";\r\nimport { IGridProps } from \"./IGridProps\"\r\nimport * as React from \"react\";\r\nimport { IPageState } from \"./IPageState\"\r\nimport { GridSelectionType } from \"./SelectionType\";\r\nimport { ChoiceGroup, CommandBarButton, FontIcon, IChoiceGroupOption, IIconProps, PrimaryButton, Stack } from \"@fluentui/react\";\r\nimport { ActionButtonStyles, _Styles } from \"../../../content/styles/Page.styles\";\r\nimport { IKendoGridColumnProps } from \"./IKendoGridColumnProps\";\r\nimport { ApplicationConstants } from \"../../../models/ApplicationConstants\";\r\nimport { MenuItems } from \"../verticalmenu/menuItems\";\r\nimport { JavaScriptExtensions } from \"../../../infrastructure/JavaScriptExtensions\";\r\nimport { FilterMenu, FilterMenuCheckboxFilter, IsFilterActive } from \"./gridfilter\";\r\nimport { CssClassConstants } from \"../../../content/CssClassConstants\";\r\nimport { UIControlsText } from \"../../../content/UIControlsText\";\r\nimport { getLoggedinUserRoleDetails, getUserRole, getUserSession, getValuesForCheckboxList, intializeSessionConstants, isNullOrEmpty, readGridConfig, updateDefaultPageSizesInSession, gridAccessibilityFix } from \"../common/util\";\r\nimport { ExcelExport, ExcelExportColumn } from \"@progress/kendo-react-excel-export\";\r\nimport moment from \"moment\";\r\nimport { CustomKendoGridCellConstants } from \"../customkendogridcellcontants\";\r\n\r\nimport { MultiSelectDropDown } from \"../multiSelectDropDown/multiSelectDropDown\";\r\nimport { ActionMenu } from \"../action-menu/action-menu\";\r\nimport { manufactureConfirmatonLetterVisible, enableActionMenu } from \"../action-menu/actionMenuUtil\";\r\nimport { IActionMenuProps } from \"../action-menu/IActionMenuProps\";\r\nimport NextGenKendoChildGrid from \"./nextgenkendochildgrid\";\r\nimport { IGridChildProps } from \"./IGridChildProps\";\r\nimport { DropdownFilterCell } from \"./dropDownFilterCell\";\r\nimport { IActionButtonConfig } from \"../action-menu/IActionButtonConfig\";\r\nimport { IDashboardDataRequest } from \"../../../models/IDashboardDataRequest\";\r\nimport { nextGenService } from \"../../../services/NextGenService\";\r\nimport { GRID_COL_INDEX_ATTRIBUTE, } from \"@progress/kendo-react-grid\";\r\nimport { useTableKeyboardNavigation } from \"@progress/kendo-react-data-tools\";\r\nimport SkuComponent from \"../skucustomkendogriddetail\";\r\nimport { DealType } from \"../../../models/DealType\";\r\nimport { GridType } from \"../../../models/GridType\";\r\nimport { loadMessages, LocalizationProvider } from \"@progress/kendo-react-intl\"; \r\nimport { messages } from \"./gridLocaleMessages\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { MessageTypeText } from '../../../models/MessageTypeText';\r\nimport { getRuleValidationMessage, getEntityDataFromSession } from \"../../../components/shared/common/util\";\r\nimport { SessionStorageConsts } from '../../../models/SessionStorageConsts';\r\nimport { getUserMainRole } from \"../../../components/shared/common/util\";\r\nimport { UserRole } from \"../../../models/UserRole\";\r\nimport { useToAddRoleToGridColumnFilterButton, useToHandleOpenColumnMenuOnKeyboardEnter} from \"../../../hooks/accessiblity-hooks\";\r\nimport { useToRemoveInvalidChildRole, useToFixGridAriaRequiredChildren } from \"../../../hooks/accessiblity-hooks\";\r\nimport { IOpportunityDealDetails } from \"../../../models/IOpportunityDealDetails\";\r\n\r\n/**\r\n * DashboardGrid Component.\r\n * @function component\r\n */\r\n\r\nconst DashboardGrid: React.FunctionComponent<IGridProps> = (props: IGridProps) => {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const idGetter = getter(props.kendoGridProps.dataItemKey);\r\n const detailIdGetter = getter(props.kendoGridProps.dataItemKey === \"undefined\" ? \"id\" : props.kendoGridProps.dataItemKey);\r\n const [selectedCheckState, setSelectedCheckState] = useState<{ [id: string]: boolean | number[]; }>({});\r\n const [detailSelectedCheckState, setDetailSelectedCheckState] = useState<{ [id: string]: boolean | number[]; }>({});\r\n const initialSort: Array<SortDescriptor> | undefined = [{ field: props.kendoGridProps.initialSortField, dir: \"asc\" }];\r\n const [sort, setSort] = useState(initialSort);\r\n const [editField, setEditField] = useState<string | undefined>(undefined);\r\n const [gridData, setGridData] = useState<any[]>([]);\r\n const [gridCount, setGridCount] = useState<number>(props.kendoGridProps.totalRecords);\r\n const initialPageState: any = { skip: 0, take: props.kendoGridProps.noOfRecords };\r\n const initialPageStateChildGrid: IPageState = { skip: 0, take: props.kendoGridProps.detailGrid?.noOfRecords };\r\n const [page, setPage] = useState<any>(initialPageState);\r\n const [childGridPage, setChildGridPage] = useState<IPageState>(initialPageStateChildGrid);\r\n var initialFilter: CompositeFilterDescriptor | undefined = { logic: \"and\", filters: [] }\r\n const [filter, setFilter] = useState(initialFilter);\r\n const [gridWidth, setGridWidth] = useState(\"auto\");\r\n const [userRoles] = useState<string>(getUserRole());\r\n var date = moment().utcOffset('+05:30').format('YYYY-MM-DD');\r\n const [dataState, setDataState] = React.useState<any[]>([]);\r\n const [actionMenuConfig, setActionMenuConfig] = React.useState<IActionMenuProps>();\r\n const [toggleText, setToggleExpandCollapse] = useState<string>(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandAll\", UIControlsText.ExpandAll));\r\n const [columns, setColumns] = useState(props.kendoGridProps.columns)\r\n const [isDownloading, setIsDownloading] = useState(false);\r\n const [defaultGridState] = useState(readGridConfig(props.kendoGridProps.gridName));\r\n const ExportIcon: IIconProps = { iconName: CssClassConstants.DownloadIconName };\r\n const [excelData, setExcelData] = useState<any[]>([]);\r\n const [localeMessageForMoreRecords, setlocaleMessageForMoreRecords] = useState<string>(ApplicationConstants.EnLocaleForGrid);\r\n const [filterValue, setFilterValue] = useState<string>('');\r\n const history = useHistory();\r\n const [userMainRole] = useState<string>(getUserMainRole());\r\n\r\n //listening the props change and reset gridData state\r\n useEffect(() => {\r\n if (props.kendoGridProps.defaultMainGridSelectionstate) {\r\n setSelectedCheckState(props.kendoGridProps.defaultMainGridSelectionstate);\r\n }\r\n if (props.kendoGridProps.defaultDetailGridSelectionstate) {\r\n setDetailSelectedCheckState(props.kendoGridProps.defaultDetailGridSelectionstate);\r\n }\r\n SetGridWidth();\r\n setGridData(props.kendoGridProps.data);\r\n setExcelData(props.kendoGridProps.excelData)\r\n setGridCount(isNullOrEmpty(props.kendoGridProps.totalRecords) ? props.kendoGridProps.data?.length : props.kendoGridProps.totalRecords);\r\n window.addEventListener('resize', SetGridWidth);\r\n setToggleExpandCollapse(getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandAll\", UIControlsText.ExpandAll));\r\n setColumns(props.kendoGridProps.columns)\r\n var initialPageState: any\r\n if(props.kendoGridProps.isRefresh){\r\n initialPageState= { skip: 0, take: props.kendoGridProps.noOfRecords };\r\n }else{\r\n initialPageState= { skip: page.skip, take: props.kendoGridProps.noOfRecords };\r\n }\r\n if(props.kendoGridProps.isFilterAppliedOrRemoved===true){\r\n var initialFilter: CompositeFilterDescriptor | undefined = { logic: \"and\", filters: [] }\r\n setFilter(initialFilter)\r\n }\r\n setPage(initialPageState);\r\n }, [props.kendoGridProps.data, props.kendoGridProps.defaultMainGridSelectionstate, props.kendoGridProps.columns, props.kendoGridProps.noOfRecords, props.kendoGridProps.excelData])\r\n\r\n useEffect(() => {\r\n if (props.kendoGridProps.defaultDetailGridSelectionstate) {\r\n setDetailSelectedCheckState(props.kendoGridProps.defaultDetailGridSelectionstate);\r\n }\r\n\r\n intializeSessionConstants()\r\n }, [props.kendoGridProps.defaultDetailGridSelectionstate])\r\n\r\n // accessibility - see hook definition for more details \r\n useToAddRoleToGridColumnFilterButton();\r\n\r\n //customize the cell to render of selected legal grid\r\n const customCellRender: any = (td: React.ReactElement<HTMLTableCellElement>, props: GridCellProps) => {\r\n if (props.rowType === \"groupHeader\") {\r\n const dataItem = props.dataItem;\r\n if (td && td.props && td.props.children) {\r\n if (dataItem.field === \"caseStartDate\" || dataItem.field === \"expirationDate\") {\r\n let children = (\r\n <span>\r\n {moment(dataItem.value).format('MM/DD/YYYY')}\r\n </span>\r\n );\r\n return React.cloneElement(td, td.props, children);\r\n }\r\n }\r\n return td;\r\n } else {\r\n return <CellRender originalProps={props} td={td} enterEdit={enterEditonSelectedData} editField={editField} />\r\n }\r\n };\r\n //customize the row to render of selected legal grid\r\n const customRowRender: any = (tr: React.ReactElement<HTMLTableRowElement>, props: GridRowProps) => (\r\n <RowRender originalProps={props} tr={tr} exitEdit={exitEditonSelectedData} editField={editField} />\r\n );\r\n //Editable cell creation on selecte Legals - on typing editable cell update value from user\r\n const onItemChange = (e: GridItemChangeEvent) => {\r\n let field = e.field || \"\";\r\n let colProps = props.kendoGridProps.columns.filter((col: IKendoGridColumnProps) => {\r\n if (col.apiField === field)\r\n return col.editorType;\r\n })[0] as IKendoGridColumnProps;\r\n if (colProps) {\r\n if (colProps.editorType === ApplicationConstants.NumericEditorType && e.value < 0) {\r\n return;\r\n }\r\n }\r\n e.dataItem[field] = e.value;\r\n let newData = gridData.map((item: any) => {\r\n if (item.id === e.dataItem.id) {\r\n item[field] = e.value;\r\n }\r\n return item;\r\n });\r\n props.kendoGridProps.data = [...newData];\r\n setGridData(newData);\r\n };\r\n\r\n //--event for checkbox header selection in the search grid: when header checked all the child checkbox will be checked\r\n const onHeaderSelectionChange = useCallback(\r\n (event: GridHeaderSelectionChangeEvent) => {\r\n if (props.disableSelectAllCheckbox) {\r\n return;\r\n }\r\n const checkboxElement: any = event.syntheticEvent.target\r\n const checked = checkboxElement.checked;\r\n const newSelectedState: any = {};\r\n event.dataItems.forEach((item: any) => {\r\n newSelectedState[idGetter(item)] = checked;\r\n });\r\n setSelectedCheckState(newSelectedState);\r\n props.onRowSelectionCallBack?.(newSelectedState);\r\n }, []);\r\n //event to trigger on change of checkbox in the grid\r\n const onSelectionChange = useCallback(\r\n (event: GridSelectionChangeEvent) => {\r\n if (event.dataItem.editMode) {\r\n return;\r\n }\r\n const newSelectedState = getSelectedState({\r\n event,\r\n selectedState: selectedCheckState,\r\n dataItemKey: props.kendoGridProps.dataItemKey,\r\n });\r\n setSelectedCheckState(newSelectedState);\r\n //to enable check uncheck based on config, when multiple\r\n if (event.syntheticEvent !== undefined) {\r\n const checkboxElement: any = event.syntheticEvent.target\r\n const checked = checkboxElement.checked;\r\n if (props.kendoGridProps.selectionType == GridSelectionType.Single) {\r\n event.dataItems.forEach((item: { id: any; }) => {\r\n if (event.dataItem.id === item?.id) {\r\n newSelectedState[idGetter(item)] = checked\r\n } else {\r\n newSelectedState[idGetter(item)] = false;\r\n }\r\n });\r\n props.onPrimarySelectionCallBack?.(event.dataItem, checked);\r\n }\r\n }\r\n props.onRowSelectionCallBack?.(newSelectedState);\r\n },\r\n [selectedCheckState]\r\n )\r\n //--- Start of hierarchal grid ---//\r\n const expandChange = (event: GridExpandChangeEvent) => {\r\n //alert(event.value)\r\n event.dataItem.expanded = event.value;\r\n //let categoryID = event.dataItem.CategoryID;\r\n setGridData([...gridData]);\r\n\r\n if (!event.value || event.dataItem.details) {\r\n return;\r\n }\r\n //populate data here on expand\r\n let data: any = gridData.slice();\r\n let index = data.findIndex((row: any) => row[props.kendoGridProps.groupByColumn] === event.dataItem[props.kendoGridProps.groupByColumn]);\r\n //data[index].details =\"\";\r\n data[index].details = props.kendoGridProps.masterData?.filter((item: any) => item[props.kendoGridProps.groupByColumn] === event.dataItem[props.kendoGridProps.groupByColumn]);//sub grid value goes here\r\n setGridData(data);\r\n };\r\n\r\n const DetailComponent = useCallback(\r\n (childprops: GridDetailRowProps) => {\r\n var childData = childprops.dataItem.details ? childprops.dataItem.details : [];\r\n let childGridProps: IGridChildProps = {\r\n parent: props,\r\n childGridData: childData,\r\n defaultChildGridSelectionstate: detailSelectedCheckState\r\n }\r\n return (\r\n <React.Fragment>\r\n <NextGenKendoChildGrid {...{ ...childGridProps }} />\r\n </React.Fragment>\r\n );\r\n }, [detailSelectedCheckState]\r\n );\r\n //--- End of hierarchal grid ---//\r\n\r\n //--Start of Inline Edit Grid Functionality --//\r\n //on click of row enable editing\r\n const enterEditonSelectedData = (dataItem: any, field: string) => {\r\n const newData = gridData.map((item: any) => ({\r\n ...item,\r\n inEdit: item.id === dataItem.id ? field : undefined,\r\n }));\r\n setGridData(newData);\r\n setEditField(field);\r\n };\r\n const exitEditonSelectedData = () => {\r\n let editedItem = gridData.filter((item: any) => (item.inEdit != undefined));\r\n\r\n if (props.kendoGridProps.editField) {\r\n const newData = gridData.map((item: any) => ({ ...item, inEdit: undefined }));\r\n setGridData(newData);\r\n setEditField(undefined);\r\n }\r\n props.onEditCallBack?.(editedItem[0]);\r\n };\r\n //--End of Inline Edit Grid Functionality --//\r\n\r\n //--Start of Delete Row in Grid Functionality --//\r\n //--End of Inline Edit Grid Functionality --//\r\n\r\n //--Start of Delete Row in Grid Functionality --//\r\n const gridDeleteCell = (props: GridCellProps) => (<DeleteCell {...props} remove={removeSelectedRow} />);\r\n //method to render delete icon in grid component\r\n const DeleteCell = (props: { editField?: any; remove?: any; dataItem?: any }) => {\r\n const { dataItem } = props;\r\n return dataItem.editMode ? (<td className=\"k-command-cell\"></td>) : (\r\n <td >\r\n <FontIcon aria-label={CssClassConstants.DeleteIconName} iconName={CssClassConstants.DeleteIconName} className={_Styles.DeleteRow} onClick={() =>\r\n props.remove(dataItem)\r\n }>\r\n </FontIcon>\r\n </td>\r\n );\r\n };\r\n //callback method for removing selected row from grid on delete button click\r\n const removeSelectedRow = (deletedRowData: any) => {\r\n if (!deletedRowData.editMode) {\r\n const newList = gridData.filter((item) => item.id !== deletedRowData.id);\r\n props.kendoGridProps.data = [...newList];\r\n setGridData([...newList]);\r\n if (props.onDeleteCallBack) {\r\n props.onDeleteCallBack(deletedRowData, newList);\r\n }\r\n }\r\n };\r\n //--End of Delete Row in Grid Functionality --//\r\n // --Start of Download Row in Grid Functionality--//\r\n const gridDownloadCell = (props: GridCellProps) => (<DownloadCell {...props} />);\r\n const DownloadCell = (props: { editField?: any; download?: any; dataItem?: any }) => {\r\n const { dataItem } = props;\r\n var gridContent = \"data:application/pdf;base64,\" + dataItem.content\r\n return dataItem.editMode ? (<td className=\"k-command-cell\" role=\"gridcell\"></td>) : (\r\n <td >\r\n <a download={dataItem.name} href={gridContent}>\r\n <FontIcon aria-label={CssClassConstants.DownloadIconName}\r\n iconName={CssClassConstants.DownloadIconName}\r\n className={_Styles.DeleteRow} ></FontIcon>\r\n </a>\r\n\r\n </td>\r\n );\r\n };\r\n\r\n // --End of Download Row in Grid Functionality--//\r\n\r\n //to calculate total of column in footer cell\r\n const footerCellwithTotal = (footerprops: GridFooterCellProps) => {\r\n const field = footerprops.field || \"\";\r\n var findItem = props.kendoGridProps.columns.find(x => x.apiField === field);\r\n var showFooter = false;\r\n if (findItem !== undefined) {\r\n showFooter = findItem.showFooter;\r\n }\r\n if (showFooter) {\r\n const total = gridData?.reduce((prev: number, current: { [x: string]: any }) => {\r\n return current[field] ? prev + Number(current[field]) : prev\r\n }, 0);\r\n return (<td colSpan={footerprops.colSpan} style={footerprops.style}> {findItem?.footerTitle} {total} </td>);\r\n }\r\n return (<td></td>);\r\n };\r\n const addNew = () => {\r\n const newDataItem = {\r\n inEdit: true,\r\n Discontinued: false\r\n };\r\n props.kendoGridProps.data = [newDataItem, ...gridData]\r\n setGridData([newDataItem, ...gridData]);\r\n };\r\n const MandatoryHeaderCell = (props: GridHeaderCellProps) =>\r\n <a>\r\n <span className=\"k-link\">\r\n {props.title}<span className={\"gridmandatoryField\"}>*</span>\r\n </span>\r\n </a>\r\n const HeaderCell = (props: GridHeaderCellProps) =>\r\n <a>\r\n <span className=\"k-link\" title={props.title}>\r\n {props.title}\r\n </span>\r\n </a>\r\n const allowView = (config: any) => {\r\n return (config?.allowColumnView?.length == 0 ? true : config?.allowColumnView?.some((r: any) => userRoles.includes(r)) ? true : false)\r\n && (config.isVisible == null || config.isVisible ? true : false);\r\n }\r\n const VerticalMenuCell = (menuprops: { dataItem?: any; }) => {\r\n const { dataItem } = menuprops;\r\n return <td >\r\n <MenuItems dashBoardConfig={props.kendoGridProps} dashBoardData={menuprops}\r\n selectedData={dataItem} ></MenuItems>\r\n </td >\r\n };\r\n const gridErrorCell = (props: GridCellProps) => (<ErrorCell {...props} />);\r\n\r\n const ErrorCell = (props: { editField?: any; remove?: any; dataItem?: any }) => {\r\n const { dataItem } = props;\r\n \r\n return dataItem.editMode ? (<td className=\"k-command-cell\" role=\"gridcell\"></td>) : (\r\n <td >\r\n <p className=\"error-msg\"> {dataItem.errors}</p>\r\n <p className=\"warning-msg\"> {dataItem.warnings}</p>\r\n </td>\r\n );\r\n };\r\n\r\n //Fixing Accessibility for noRecords, sortIcons, GridPagerBtns & gridFootercell\r\n useEffect(() => {\r\n gridAccessibilityFix();\r\n });\r\n\r\n //Fixing Accessibility for sortIcons\r\n (function () {\r\n var sortIcons = document.querySelectorAll(\"span[aria-label='Sortable']\");\r\n sortIcons.forEach((element) => {\r\n element.setAttribute(\"role\", \"button\");\r\n });\r\n })();\r\n\r\n //Fixing Accessibility for GridPagerBtns & gridFootercell\r\n (function () {\r\n var pagerBtns = document.getElementsByClassName(\"k-icon\");\r\n for (let i = 0; i < pagerBtns.length; i++) {\r\n pagerBtns[i].setAttribute(\"aria-hidden\", \"true\");\r\n }\r\n document.querySelector(\"[role='columnfooter']\")?.setAttribute('role', 'gridcell');\r\n var gridpager = document.getElementsByClassName(\"k-dropdown-wrap\");\r\n gridpager[0]?.setAttribute('aria-label', getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PagerDropdownAriaLabel\", UIControlsText.PagerDropdownAriaLabel));\r\n var gridpageroptions = document.querySelectorAll(\".k-dropdown-wrap > span\");\r\n gridpageroptions[0]?.setAttribute('role', 'option');\r\n })();\r\n\r\n //Fixing Accessibility issue for grid filterTextbox\r\n (function () {\r\n var filterTextbox = document.querySelectorAll(\".k-filtercell .k-filtercell-wrapper > .k-textbox\");\r\n for (let i = 0; i < filterTextbox.length; i++) {\r\n filterTextbox[i].setAttribute('aria-label', 'textbox');\r\n }\r\n })();\r\n\r\n //Fixing Accessibility issue for grid checkbox\r\n (function () {\r\n var gridCheckbox = document.getElementsByClassName(\"k-checkbox\");\r\n for (let i = 0; i < gridCheckbox.length; i++) {\r\n gridCheckbox[i].setAttribute('aria-label', 'checkbox');\r\n }\r\n })();\r\n\r\n //fixing Accessibility issue when no rows selected in grid\r\n (function () {\r\n var gridRows = document.getElementsByClassName(\"k-grid-norecords\");\r\n for (let i = 0; i < gridRows.length; i++) {\r\n gridRows[i].removeAttribute('aria-rowindex');\r\n gridRows[i].setAttribute('role', 'alert');\r\n }\r\n })();\r\n\r\n //fixing Accessibility issue when no rows selected in grid\r\n (function () {\r\n var gridRow = document.querySelectorAll('[role=\"row\"]');\r\n for (let i = 0; i < gridRow.length; i++) {\r\n gridRow[i].removeAttribute('aria-rowindex');\r\n }\r\n })();\r\n\r\n // Fix for accessibility issue - No label text found for input elements\r\n (function () {\r\n var filesTxt = document.querySelectorAll('input[type=\"file\"]');\r\n for (let i = 0; i < filesTxt.length; i++) {\r\n filesTxt[i].setAttribute('aria-label', 'files');\r\n }\r\n })();\r\n\r\n useToRemoveInvalidChildRole();\r\n //useToFixGridAriaRequiredChildren();\r\n\r\n const clearGridData = () => {\r\n props.kendoGridProps.data = []\r\n setGridData([]);\r\n if (props.onDeleteCallBack) {\r\n props.onDeleteCallBack({}, []);\r\n }\r\n };\r\n const SetGridWidth = () => {\r\n if (JavaScriptExtensions.isEmptyOrNullOrUndefined(props.kendoGridProps.width)) {\r\n setGridWidth(\"auto\");\r\n } else if (props.kendoGridProps.width === \"0\") {\r\n let headerElement = document.getElementsByClassName(\"headerStyle\");\r\n let width = headerElement.length > 0 ? headerElement[0].clientWidth + \"px\" : \"auto\";\r\n setGridWidth(width);\r\n }\r\n }\r\n //method to download grid data in to excel file\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n const excelExport = async () => {\r\n let apiReturnedData:any\r\n if (_export.current !== null) {\r\n if (props.kendoGridProps.gridName === DealType.BidGrid) {\r\n var gridColumns = props.kendoGridProps.columns.filter((col) => col.isDynamic === true).map((c) => c.columnTitle)\r\n if(gridColumns != null && gridColumns != undefined && gridColumns.length > 0){\r\n var excelData = props.excelExport?.(gridData, gridColumns);\r\n if(excelData != null && excelData != undefined){\r\n props.kendoGridProps.excelData = excelData;\r\n _export.current.save(excelData);\r\n }\r\n else\r\n {\r\n _export.current.save();\r\n }\r\n }\r\n } else {\r\n try {\r\n const userSession = getUserSession();\r\n if (userSession != null) {\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n let roles = userRoles.split(\",\");\r\n let sort: any;\r\n let userMainRoleIsMSS = (userMainRole === UserRole.MSSeller) ? true : false;\r\n const dashboardRequest: IDashboardDataRequest = {\r\n userRoleDetails: loggedInUserInfo.userRoleDetails,\r\n dealType: props.kendoGridProps.gridName === GridType.AllCaseView && !userMainRoleIsMSS ? `${DealType.CPStrategic},${DealType.DealRegistration},${DealType.SpecialPricing},${DealType.OTLE}`\r\n : props.kendoGridProps.gridName === GridType.AllCaseView && userMainRoleIsMSS ? `${DealType.CPStrategic},${DealType.OTLE}`\r\n : props.kendoGridProps.gridName === GridType.CPStrategicCaseView ? DealType.CPStrategic \r\n : props.kendoGridProps.gridName === GridType.ProductInformationView ? DealType.SpecialPricing \r\n : props.kendoGridProps.gridName === GridType.SPLocalEmpowerment? DealType.SpecialPricing\r\n : props.kendoGridProps.gridName === GridType.OneTimeLocalEmpowerment? DealType.OTLE:props.kendoGridProps.gridName,\r\n email: loggedInUserInfo.email,\r\n userRoles: roles.join(\",\"),\r\n filter: JSON.stringify(filter),\r\n pageNumber: 1,\r\n recordsToFetch: 5000,\r\n sort: sort,\r\n isAllCasesDashboardRequest: props.kendoGridProps.gridName === GridType.AllCaseView ? true : false,\r\n isLocalEmpowerment:props.kendoGridProps.gridName === GridType.SPLocalEmpowerment?true:false\r\n };\r\n setIsDownloading(true);\r\n if (props.kendoGridProps.gridName === GridType.ProductInformationView) {\r\n apiReturnedData = await Promise.resolve(nextGenService.getProductinformationDashboardData(dashboardRequest))\r\n } else {\r\n let pricingData = await Promise.resolve(nextGenService.getPricingProgramDashboardData(dashboardRequest));\r\n apiReturnedData=pricingData.data.item1;\r\n var finalData: IOpportunityDealDetails[];\r\n finalData = apiReturnedData;\r\n finalData.forEach((element) => {\r\n element.resellerORDistributorNames = element.opportunityAccounts[0].resellerORDistributorNames;\r\n });\r\n apiReturnedData = finalData;\r\n }\r\n setIsDownloading(false);\r\n }\r\n } catch (error) {\r\n setIsDownloading(false);\r\n }\r\n _export.current.save(apiReturnedData);\r\n }\r\n };\r\n };\r\n\r\n const CategoryFilterCell = (filterProps: any) => (\r\n <DropdownFilterCell\r\n {...filterProps}\r\n data={props.dropDownFilterContent}\r\n defaultItem={filterProps.defaultItem}\r\n />\r\n );\r\n\r\n //Generates the grid columns for the childcolumns of a single column\r\n const getChildColumns = (kendoGridChildColumns: IKendoGridColumnProps[]) => {\r\n if (kendoGridChildColumns === undefined) {\r\n return [];\r\n }\r\n const tempKendoGridColumnsProps = kendoGridChildColumns.map((col) => {\r\n return <GridColumn\r\n key={col.key} field={col.apiField} title={col.columnTitle} width={col.width}\r\n editable={col.isEditable} sortable={col.allowSorting} filterable={col.allowFilter} />\r\n });\r\n return tempKendoGridColumnsProps\r\n }\r\n\r\n //Toggle Grid Data (Expand All and Collapse All)\r\n const toggleExpand = () => {\r\n setToggleExpandCollapse(toggleText === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandAll\", getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandAll\", UIControlsText.ExpandAll)) ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CollapseAll\", UIControlsText.CollapseAll) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandAll\", UIControlsText.ExpandAll));\r\n let toggleData = gridData.map(eachRowItem => {\r\n eachRowItem.details = props.kendoGridProps.masterData?.filter((eachRecord: any) => eachRecord[props.kendoGridProps.groupByColumn] === eachRowItem[props.kendoGridProps.groupByColumn]);\r\n if (isNullOrEmpty(eachRowItem.expanded)) {\r\n eachRowItem.expanded = true;\r\n }\r\n else {\r\n eachRowItem.expanded = toggleText === getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExpandAll\", UIControlsText.ExpandAll) ? true : false;\r\n }\r\n return eachRowItem;\r\n });\r\n setGridData(toggleData);\r\n };\r\n\r\n const gridRenderCustomCell = (selectedRowData: any) => (\r\n props.onCustomCellRenderCallBack ? props.onCustomCellRenderCallBack(selectedRowData) : \"\"\r\n );\r\n const addNewPanel = () => {\r\n if (props.onAddNewPanelCallBack) {\r\n props.onAddNewPanelCallBack();\r\n }\r\n };\r\n const isColumnFilterActive = (field: string) => {\r\n return IsFilterActive(field, filter);\r\n };\r\n\r\n const [selectedKey, setSelectedKey] = React.useState<string | undefined>();\r\n\r\n const onRadioSelectionChange = (ev?: React.FormEvent<HTMLElement | HTMLInputElement>, option?: IChoiceGroupOption, dataItem?: any) => {\r\n setSelectedKey(option?.key);\r\n const selected = { [`${option?.key.split(\"_\")[0]}`]: true };\r\n setSelectedCheckState(selected);\r\n const actionMenuConfig = enableActionMenu(dataItem);\r\n setActionMenuConfig({ actionConfig: actionMenuConfig, selectedData: dataItem});\r\n };\r\n\r\n const RadioSelectionColumn = (menuprops?: any) => {\r\n const { dataItem } = menuprops;\r\n const navigationAttributes = useTableKeyboardNavigation(dataItem.id);\r\n let radioKey: string = \"\"\r\n if (props.kendoGridProps.gridName === ApplicationConstants.productInformationGrid) {\r\n radioKey = `${dataItem.opportunityDealId}_${dataItem.skuPartNumber}`\r\n } else {\r\n radioKey = `${dataItem.id}_${dataItem.name}`\r\n }\r\n const options: IChoiceGroupOption[] = [\r\n { key: radioKey, text: '', ariaLabel: 'pick one', styles: { root: { marginTop: 0 } } },\r\n ];\r\n return (<td\r\n style={menuprops.style} // this applies styles that lock the column at a specific position\r\n className={menuprops.className} // this adds classes needed for locked columns\r\n colSpan={menuprops.colSpan}\r\n role={\"gridcell\"}\r\n aria-colindex={menuprops.ariaColumnIndex}\r\n aria-selected={menuprops.isSelected}\r\n {...{ [GRID_COL_INDEX_ATTRIBUTE]: menuprops.columnIndex }}\r\n {...navigationAttributes}\r\n >\r\n <ChoiceGroup className=\"dashboardRadioButton\" selectedKey={selectedKey} options={options} onChange={(ev?: React.FormEvent<HTMLElement | HTMLInputElement>, option?: IChoiceGroupOption) => { onRadioSelectionChange(ev, option, dataItem) }} />\r\n </td>)\r\n };\r\n\r\n // CallBack Method to load the dashboardGridData onColumnChange\r\n const updateDashboardColumnsData = (selectedColumns?: IKendoGridColumnProps[]) => {\r\n const updateDashboardColumns =\r\n selectedColumns || [];\r\n setColumns(updateDashboardColumns)\r\n }\r\n\r\n //method to update grid data and count based on filter from context menu of grid column\r\n const filterChange = (e: GridFilterChangeEvent) => {\r\n if (e.filter) {\r\n if (e.filter.filters.length >= 1) {\r\n e.filter.filters = e.filter.filters.map((filter: any) => { return { logic: filter.logic, filters: filter.filters.map((filter1: any) => { return { field: filter1.field, operator: filter1.operator, value: Object.prototype.toString.call(filter1.value) === '[object Date]' ? new Date(new Date(filter1.value).getFullYear(),new Date(filter1.value).getMonth(), new Date(filter1.value).getDate()) : filter1.value.trim(), };}),}; });\r\n setFilter(e.filter)\r\n setGridCount(filterBy(props.kendoGridProps.data || [], e.filter).length);\r\n setGridData(filterBy(props.kendoGridProps.data || [], e.filter));\r\n setPage(initialPageState);\r\n }\r\n else {\r\n setFilter(e.filter)\r\n setGridCount(filterBy(gridData || [], e.filter).length);\r\n setGridData(filterBy(gridData || [], e.filter));\r\n setPage(initialPageState);\r\n }\r\n }\r\n else {\r\n setFilter(e.filter)\r\n setGridCount(props.kendoGridProps.totalRecords);\r\n setGridData(props.kendoGridProps.data);\r\n }\r\n const dataState = { sort: sort, skip: page.skip, take: page.take, filter: e.filter }\r\n props.onGetDataRequest?.(dataState,true)\r\n };\r\n\r\n\r\n\r\n //event to trigger on page change on pagination\r\n const pageChange = (event: GridPageChangeEvent) => {\r\n if (event.page.skip === 0) {\r\n let pageNumber = updateDefaultPageSizesInSession(props.kendoGridProps.gridName, event.page.take)\r\n }\r\n props.onPageChange?.(event);\r\n const dataState = { sort: sort, skip: event.page.skip, take: event.page.take, filter: filter }\r\n props.onGetDataRequest?.(dataState)\r\n setPage(event.page);\r\n updateCaseActionOnPageChange(event.page.skip, event.page.take);\r\n };\r\n\r\n const onSortChange = (event: GridSortChangeEvent) => {\r\n setSort(event.sort);\r\n if (event.sort) {\r\n if (event.sort.length >= 1) {\r\n setGridData(orderBy(gridData || [], event.sort));\r\n }\r\n }\r\n const dataState = { sort: event.sort, skip: page.skip, take: page.take, filter: filter }\r\n props.onGetDataRequest?.(dataState, true)\r\n }\r\n\r\n useEffect(() => {\r\n const menuConfig = { ...actionMenuConfig }\r\n const actionConfig: IActionButtonConfig = {\r\n showCPStrategicLetters: manufactureConfirmatonLetterVisible(props.kendoGridProps, getLoggedinUserRoleDetails()),\r\n }\r\n menuConfig.actionConfig = actionConfig\r\n setActionMenuConfig(menuConfig)\r\n }, [])\r\n\r\n const pagerSettings: GridPagerSettings = {\r\n buttonCount: 5,\r\n info: true,\r\n type: \"numeric\",\r\n pageSizes: props.kendoGridProps.pageSizes,\r\n previousNext: true,\r\n };\r\n\r\n const updateCaseActionOnPageChange = (skip: number, take: number) => {\r\n let selectedRowId = Object.keys(selectedCheckState)[0];\r\n let selectedData = gridData?.slice(skip, take + skip)?.find(x => x.id === selectedRowId);\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedData)) {\r\n const actionMenuConfig = enableActionMenu(selectedData);\r\n actionMenuConfig.showCPStrategicLetters = manufactureConfirmatonLetterVisible(props.kendoGridProps, getLoggedinUserRoleDetails());\r\n setActionMenuConfig({ actionConfig: actionMenuConfig, selectedData: selectedData });\r\n } else {\r\n const menuConfig = {} as IActionMenuProps;\r\n const actionConfig: IActionButtonConfig = {\r\n showCPStrategicLetters: manufactureConfirmatonLetterVisible(props.kendoGridProps, getLoggedinUserRoleDetails()),\r\n }\r\n menuConfig.actionConfig = actionConfig\r\n setActionMenuConfig(menuConfig)\r\n }\r\n }\r\n \r\n useEffect(() => {\r\n setFilterValue(props.kendoGridProps.filterValue)\r\n }, [props.kendoGridProps.filterValue])\r\n\r\n useEffect(() => {\r\n if (props.kendoGridProps.defaultFilter) {\r\n var filters: { field: any; operator: string; value: any; }[] = []\r\n props.kendoGridProps.defaultFilter.map((col: any) => {\r\n let statusValues = col.filterValues.split(\",\");\r\n statusValues.forEach((ele: any) => {\r\n filters.push(\r\n {\r\n \"field\": col.columnName,\r\n \"operator\": \"eq\",\r\n \"value\": ele\r\n },\r\n )\r\n });\r\n });\r\n\r\n initialFilter = {\r\n logic: \"and\", filters: [\r\n {\r\n \"logic\": \"or\",\r\n \"filters\": filters\r\n }\r\n ]\r\n };\r\n \r\n setFilter(initialFilter);\r\n setGridCount(filterBy(props.kendoGridProps.data || [], initialFilter).length);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n setGridCount(filterBy(props.kendoGridProps.data || [], filter).length);\r\n }, [props.kendoGridProps.data]);\r\n\r\n const SkuComponentHandler = (props: any) => {\r\n return <SkuComponent {...props} filterValue={filterValue} />\r\n }\r\n\r\n useEffect(() => {\r\n loadMessages(messages.en, ApplicationConstants.EnLocaleForGrid);\r\n loadMessages(messages.en_more_records, ApplicationConstants.EnLocaleForGridForMoreRecord);\r\n }, [])\r\n\r\n useEffect(() => {\r\n let count = isNullOrEmpty(props.kendoGridProps.totalRecords) ? props.kendoGridProps.data?.length : props.kendoGridProps.totalRecords;\r\n if (count > 0 && ((count % props.kendoGridProps.recordsToFetch) === 0)) {\r\n setlocaleMessageForMoreRecords(ApplicationConstants.EnLocaleForGridForMoreRecord);\r\n }\r\n }, [props.kendoGridProps.data, props.kendoGridProps.totalRecords, props.kendoGridProps.recordsToFetch])\r\n\r\n const CheckBoxFilterMenu = (gridPropsFilter: GridColumnMenuProps) => {\r\n const data = getValuesForCheckboxList(gridPropsFilter, props.kendoGridProps);\r\n return FilterMenuCheckboxFilter(gridPropsFilter, data);\r\n }\r\n\r\n useToFixGridAriaRequiredChildren('#mdppAccessibilityGridContainer');\r\n useToHandleOpenColumnMenuOnKeyboardEnter();\r\n\r\n return (\r\n <React.Fragment>\r\n <ExcelExport data={orderBy(excelData !== undefined && excelData.length > 0 ? excelData : gridData || [], sort)} fileName={props.kendoGridProps.gridName + \" \" + date} ref={_export}>\r\n {props.kendoGridProps.excelColumns !== undefined ? (\r\n props.kendoGridProps.excelColumns.map((col) => {\r\n return (\r\n <ExcelExportColumn field={col.apiField} title={col.columnTitle} />\r\n );\r\n })\r\n ) :\r\n defaultGridState.kendoGridProps.columns.map((col) => {\r\n if (allowView(col)) {\r\n return (\r\n <ExcelExportColumn field={col.apiField} title={col.columnTitle} />\r\n );\r\n }\r\n })\r\n }\r\n </ExcelExport>\r\n <LocalizationProvider language={localeMessageForMoreRecords}>\r\n <div id=\"mdppAccessibilityGridContainer\">\r\n {(props.kendoGridProps.actionTypes?.showAddNewRowGridAction ||\r\n props.kendoGridProps.actionTypes?.showClearAllGridAction ||\r\n props.kendoGridProps.actionTypes?.showDownloadExcelGridAction ||\r\n props.kendoGridProps.actionTypes?.showActionMenuBar ||\r\n props.kendoGridProps.actionTypes?.showMultiSelectDropDownGridAction) &&\r\n <GridToolbar>\r\n {\r\n props.kendoGridProps.actionTypes?.showActionMenuBar &&\r\n <ActionMenu {...actionMenuConfig}/>\r\n }\r\n\r\n <Stack horizontal className=\"ms-auto\" styles={{ root: { height: 28 } }}>\r\n {\r\n props.kendoGridProps.actionTypes?.showAddNewRowGridAction &&\r\n <PrimaryButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddNew\", UIControlsText.AddNew)} onClick={addNew} className=\"me-2\" />\r\n }\r\n {props.kendoGridProps.actionTypes?.showDownloadExcelGridAction && props.kendoGridProps.data?.length > 0 &&\r\n <CommandBarButton iconProps={ExportIcon} text={isDownloading ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Downloading\", UIControlsText.Downloading) : props.kendoGridProps.gridName === DealType.BidGrid ? getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExportSkuTOExcel\", UIControlsText.ExportSkuTOExcel) : getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ExportToExcel\", UIControlsText.ExportToExcel)} styles={ActionButtonStyles} onClick={excelExport} disabled={isDownloading} />\r\n }\r\n {props.kendoGridProps.actionTypes?.showClearAllGridAction && props.kendoGridProps.data?.length > 0 &&\r\n <PrimaryButton text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ClearAll\", UIControlsText.ClearAll)} onClick={clearGridData} className=\"me-2\" />\r\n }\r\n {props.kendoGridProps.actionTypes?.showMultiSelectDropDownGridAction && props.kendoGridProps.data?.length > 0 &&\r\n <MultiSelectDropDown dashBoardData={columns} updateDashboardGridColumnsData={updateDashboardColumnsData} gridName={props.kendoGridProps.gridName}></MultiSelectDropDown>\r\n }\r\n </Stack>\r\n\r\n </GridToolbar>\r\n }\r\n <Grid\r\n data={props.kendoGridProps.expandField !== \"\" ?\r\n orderBy(filterBy(gridData || [], filter)?.slice(page.skip, page.take + page.skip) || [], sort) :\r\n props.kendoGridProps.isServerSideGrid ?\r\n orderBy(filterBy(gridData || [], filter).map(item => ({ ...item, [props.kendoGridProps.selectedField]: selectedCheckState[idGetter(item)] })) || [], sort) :\r\n orderBy(filterBy(gridData || [], filter)?.map(item => ({ ...item, [props.kendoGridProps.selectedField]: selectedCheckState[idGetter(item)] })).slice(page.skip, page.take + page.skip) || [], sort)\r\n }\r\n skip={page.skip}\r\n take={page.take}\r\n dataItemKey={props.kendoGridProps.dataItemKey}\r\n selectedField={props.kendoGridProps.selectedField}\r\n selectable={{\r\n enabled: false, drag: false, cell: false,\r\n mode: props.kendoGridProps.selectionType === GridSelectionType.Mulitple ? 'multiple' : 'single'\r\n }}\r\n resizable={props.kendoGridProps.resizable}\r\n sortable={props.kendoGridProps.sortable}\r\n sort={sort}\r\n pageable={pagerSettings}\r\n filter={filter}\r\n filterable={props.showFilterTextBox ? true : false}\r\n onFilterChange={filterChange}\r\n onItemChange={onItemChange}\r\n onSelectionChange={props.kendoGridProps.editMode ? undefined : onSelectionChange}\r\n onHeaderSelectionChange={props.kendoGridProps.selectionType === GridSelectionType.Mulitple ? onHeaderSelectionChange : undefined}\r\n onPageChange={pageChange}\r\n onSortChange={onSortChange}\r\n total={gridCount}\r\n className={props.kendoGridProps.className}\r\n cellRender={customCellRender}\r\n rowRender={props.kendoGridProps.actionTypes?.showGridContextMenuAction ? null : customRowRender}\r\n editField={props.kendoGridProps.editField}\r\n onExpandChange={expandChange}\r\n expandField={props.kendoGridProps.expandField}\r\n detail={props.kendoGridProps.customDetailComponent === 'sku' ? SkuComponentHandler : DetailComponent}\r\n style={{ width: gridWidth }}\r\n navigatable={true}\r\n >\r\n\r\n \r\n {props.kendoGridProps.actionTypes?.showGridContextMenuAction &&\r\n <GridColumn cell={VerticalMenuCell} filterable={false} width=\"40px\" />\r\n }\r\n {props.kendoGridProps.actionTypes?.showRadioSelectionAction &&\r\n <GridColumn field={props.kendoGridProps.selectedField} headerCell={() => { return (<td><span></span></td>) }} cell={RadioSelectionColumn} filterable={false} sortable={false} locked={true} />\r\n }\r\n {props.kendoGridProps.actionTypes?.showSelectAllCheckboxGridAction &&\r\n <GridColumn field={props.kendoGridProps.selectedField} filterable={false}\r\n headerSelectionValue={\r\n gridData?.findIndex((item: any) => !selectedCheckState[idGetter(item)]) === -1\r\n } />\r\n }\r\n {columns.map((col) => {\r\n if (allowView(col)) {\r\n if (col.key != \"errors\")\r\n return <GridColumn\r\n cell={CustomKendoGridCellConstants[col.type ? col.type : '']}\r\n key={col.key} field={col.apiField} title={col.columnTitle} width={col.width}\r\n editable={col.isEditable} sortable={col.allowSorting} filterable={col.allowFilter}\r\n editor={col.editorType} className={col.cssClass} footerCell={footerCellwithTotal}\r\n format={col.editorFormat} columnMenu={col.allowFilter && col.isDefaultFilterTobeApplied ? CheckBoxFilterMenu : col.allowFilter ? FilterMenu : undefined}\r\n children={getChildColumns(col.childColumns)} groupable={col.allowGroupable} headerClassName={isColumnFilterActive(col.apiField) ? (\"active \" + col.headerClassName) : col.headerClassName}\r\n filter={col.filterType} locked={col.locked}\r\n />\r\n else\r\n return <GridColumn\r\n key={col.key} field={col.apiField} title={col.columnTitle} width={col.width}\r\n editable={col.isEditable} sortable={col.allowSorting} filterable={col.allowFilter}\r\n className={col.cssClass} cell={gridErrorCell} groupable={col.allowGroupable}\r\n children={getChildColumns(col.childColumns)}\r\n />\r\n }\r\n\r\n })}\r\n {props.kendoGridProps.additionalColumns?.map((col) => {\r\n return <GridColumn field={col.apiField} key={col.key} title={col.columnTitle}\r\n headerCell={MandatoryHeaderCell} filterable={col.allowFilter} width={col.width}\r\n />\r\n })}\r\n {props.kendoGridProps.actionTypes?.showRowDeleteGridAction &&\r\n <GridColumn cell={gridDeleteCell} title=\"Actions\" filterable={false} />\r\n }\r\n {props.kendoGridProps.actionTypes?.showRowDownloadGridAction &&\r\n <GridColumn cell={gridDownloadCell} title=\"Actions\" filterable={false} />\r\n }\r\n {props.kendoGridProps.gridName === DealType.BidGrid ? (\r\n <GridNoRecords>\r\n No matching records are found for the selected criteria.\r\n </GridNoRecords>\r\n ):<GridNoRecords>\r\n {props.kendoGridProps.customGridMessage}\r\n </GridNoRecords>\r\n \r\n }\r\n </Grid>\r\n </div>\r\n </LocalizationProvider>\r\n </React.Fragment>\r\n )\r\n}\r\nexport default DashboardGrid;","import { FC, FormEvent, Fragment, useEffect, useState } from \"react\";\r\nimport { getUserRole, getUserSession, readGridConfig, getLoggedinUserRoleDetails, getRuleValidationMessage, getEntityDataFromSession } from \"../../components/shared/common/util\";\r\nimport { GridType } from \"../../models/GridType\";\r\nimport \"../../content/styles/AddCaseGrid.css\";\r\nimport DashboardGrid from \"../../components/shared/grid/dashboardgrid\";\r\nimport { IGridProps } from \"../../components/shared/grid/IGridProps\";\r\nimport { DealType } from \"../../models/DealType\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { Stack, Spinner, IBreadcrumbItem, Dropdown, DatePicker, PrimaryButton, Separator, IDropdownOption, SearchBox } from \"office-ui-fabric-react\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { Breadcrumbs } from \"../../components/shared/breadcrumb/breadcrumb\";\r\nimport Row from \"react-bootstrap/esm/Row\";\r\nimport { PageStyles } from \"../pricingprogram/common/content/Page.Styles\";\r\nimport { BGDatePickerStyles, DashboardHeaderStyle, pageTitleStyles, separatorStyles, showDiscountButtonStyles, _Styles } from \"../../content/styles/Page.styles\";\r\nimport { ComboBox, defaultDatePickerStrings, IComboBox, IComboBoxOption } from \"@fluentui/react\";\r\nimport { CaseDropdown } from \"../../components/shared/searchablecombobox/casedropdowncontrol\";\r\nimport { DiscountViewTypesValues } from \"../../services/StaticData\";\r\nimport { ICountry } from \"../../models/ICountry\";\r\nimport { IProductType } from \"../../models/IProductType\";\r\nimport { IBidGridDeal, Item } from \"../../models/IBidGridDeal\";\r\nimport { IKendoGridColumnProps } from \"../../components/shared/grid/IKendoGridColumnProps\";\r\nimport { IUserRoleDetail } from \"../../models/IUserRoleDetail\";\r\nimport { ApplicationConstants } from \"../../models/ApplicationConstants\";\r\nimport { PageConstants } from \"../pageconstants/Constants\";\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from '../../models/SessionStorageConsts';\r\nimport { useToSetPageTitle as mdppAccessibilitySetPageTitle } from \"../../hooks/accessiblity-hooks\";\r\nimport { PageNames } from \"../../hooks/accessiblity-hooks\";\r\n\r\nconst items: IBreadcrumbItem[] = [\r\n {\r\n text: 'Discount', key: 'discount'\r\n },\r\n {\r\n text: 'Bid Grid & Non-Profit/EDU Discounts', key: ''\r\n },\r\n]\r\n\r\nexport const BidGridCase: FC = () => {\r\n const [dealBidGrid, setDealBidGrid] = useState<IGridProps>(readGridConfig(GridType.BidGrid));\r\n const [isCaseLoading, setIsCaseLoading] = useState<boolean>(false);\r\n const [pageNumber, setpageNumber] = useState<number>(1)\r\n const [userRoles] = useState<string>(getUserRole());\r\n const [bgData, setBGData] = useState<IBidGridDeal[]>([]);\r\n const [allCountries, setAllCountries] = useState<ICountry[]>([]);\r\n const [productType, setProductType] = useState<IProductType[]>([]);\r\n const [product, setProduct] = useState<any>('');\r\n const [country, setCountry] = useState<any>('');\r\n const [date, setDate] = useState<any>(new Date());\r\n const [initialData, setInitailData] = useState<IBidGridDeal[]>([]);\r\n const [searchValue, setSearchValue] = useState<string>(\"\");\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n \r\n mdppAccessibilitySetPageTitle(PageNames.Discount);\r\n \r\n useEffect(() => {\r\n getAllCountries()\r\n getProductTypes()\r\n }, []);\r\n\r\n async function getAllCountries() {\r\n const { data } = await nextGenService.getAllCountries()\r\n setAllCountries(data);\r\n }\r\n\r\n async function getProductTypes() {\r\n const { data } = await nextGenService.getProductTypes()\r\n setProductType(data);\r\n }\r\n\r\n const excelExport = (finalData: IBidGridDeal[], gridColumns: string[]) => {\r\n let excelData: any = []\r\n finalData.map((element) => {\r\n element.productSku.map((ele) => {\r\n var excelRow: IBidGridDeal = {} as IBidGridDeal\r\n excelRow.businessUnitName = element.businessUnit?.name\r\n excelRow.productFamilyName = element.productFamily?.name\r\n excelRow.SkuName = ele?.name\r\n excelRow.SkuNumber=ele?.partNumber\r\n gridColumns.map((colName: string) => {\r\n const customDiscount = element.customDiscounts.find((discount) => discount.discountTier.name === colName);\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(customDiscount)) {\r\n excelRow[colName] = customDiscount?.discount + \" %\"\r\n } else {\r\n excelRow[colName] = \"\"\r\n }\r\n });\r\n excelData.push(excelRow)\r\n });\r\n });\r\n return excelData;\r\n }\r\n\r\n const getBidGrid = async (pageNo?: number, dataState?: any) => {\r\n if (product === \"\" || country === \"\") {\r\n return\r\n }\r\n try {\r\n const applicablePriceListGeo = allCountries.find((c: ICountry) => c.countryId === country)?.applicablePriceListGeo;\r\n const userSession = getUserSession();\r\n setIsCaseLoading(true);\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n let roles = userRoles.split(\",\");\r\n let sort: any\r\n let filter: any\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(dataState)) {\r\n sort = dataState.sort[0].field + \" \" + dataState.sort[0].dir\r\n filter = JSON.stringify(dataState.filter)\r\n }\r\n let userRoleDetails = getLoggedinUserRoleDetails()\r\n const dashboardRequest = {\r\n accountsIds: userRoleDetails.map(function (userRoleDetail: IUserRoleDetail) { return userRoleDetail.accountId }).join(','),\r\n userRoles: roles.join(\",\"),\r\n email: loggedInUserInfo.email,\r\n dealType: DealType.BidGrid,\r\n tpiDs: [],\r\n userRoleDetails: loggedInUserInfo.userRoleDetails,\r\n filter: filter,\r\n pageNumber: pageNo,\r\n recordsToFetch: dealBidGrid.kendoGridProps.recordsToFetch,\r\n sort: \"\",\r\n isAllCasesDashboardRequest: false,\r\n productType: product,\r\n country: applicablePriceListGeo,\r\n date: date,\r\n organizationId: loggedInUserInfo.organizationId\r\n };\r\n roles = dealBidGrid.kendoGridProps.columns.filter(col => col.columnTitle === 'Business Unit')[0].allowColumnView;\r\n let DRConfig = { ...dealBidGrid };\r\n let i = 0;\r\n let apiData = await Promise.resolve(nextGenService.getBidGridDashboardData(dashboardRequest));\r\n if (apiData.status === 200) {\r\n dealBidGrid.kendoGridProps.columns= dealBidGrid.kendoGridProps.columns.filter(col=>col.isDynamic!==true)\r\n let selectedData: IBidGridDeal[] = []\r\n apiData.data.map((element: IBidGridDeal) => {\r\n element.customDiscounts.map((ele: any) => {\r\n let discount = `discountApiField${i}`\r\n var column = {} as IKendoGridColumnProps;\r\n if (DRConfig.kendoGridProps.columns.find((c) => c.columnTitle === ele.discountTier.name)) {\r\n discount = DRConfig.kendoGridProps.columns.filter(col => col.columnTitle === ele.discountTier.name)[0].apiField;\r\n let idx = selectedData.findIndex(item => item.productFamily.name === element.productFamily.name);\r\n let newArray = {} as IBidGridDeal;\r\n let data = selectedData\r\n [idx];\r\n newArray = {\r\n ...data, [discount]:\r\n ele.discount + \" %\"\r\n }\r\n selectedData[idx] = newArray;\r\n if (idx === -1) {\r\n selectedData.push({\r\n ...element, [discount]: ele.discount + \" %\"\r\n })\r\n }\r\n \r\n } else {\r\n column.apiField = discount;\r\n column.columnTitle = ele.discountTier.name;\r\n column.isVisible = true;\r\n column.allowColumnView = roles;\r\n column.isDynamic = true;\r\n column.width = \"200\";\r\n column.headerClassName=\"breakWord20\";\r\n DRConfig.kendoGridProps.columns.push(column);\r\n let idx = selectedData.findIndex(item => item.productFamily.name === element.productFamily.name);\r\n let newArray = {} as IBidGridDeal;\r\n let data = selectedData[idx];\r\n newArray = {\r\n ...data, [discount]:\r\n ele.discount + \" %\"\r\n }\r\n selectedData[idx] = newArray;\r\n if (idx === -1) {\r\n selectedData.push({\r\n ...element, [discount]: ele.discount + \" %\"\r\n })\r\n }\r\n }\r\n\r\n i++\r\n })\r\n })\r\n var finalData: IBidGridDeal[] = [...selectedData];\r\n let gridColumns = DRConfig.kendoGridProps.columns.filter((col) => col.isDynamic === true).map((c) => c.columnTitle)\r\n DRConfig.kendoGridProps.data = finalData;\r\n const excelData = excelExport(finalData, gridColumns)\r\n setBGData(finalData);\r\n DRConfig.kendoGridProps.totalRecords = finalData.length;\r\n setDealBidGrid(DRConfig);\r\n DRConfig.kendoGridProps.excelData = excelData;\r\n DRConfig.kendoGridProps.excelColumns = getExcelColumns(gridColumns);\r\n setInitailData([...selectedData]);\r\n DRConfig.kendoGridProps.isFilterAppliedOrRemoved=false\r\n }\r\n setIsCaseLoading(false);\r\n } catch (error) {\r\n setIsCaseLoading(false);\r\n }\r\n }\r\n\r\n const onGetDataRequest = (dataState: any, isFilterAppliedOrRemoved?: boolean) => {\r\n if ((dealBidGrid.kendoGridProps.data.length >= (dealBidGrid.kendoGridProps.recordsToFetch * pageNumber)) && (dealBidGrid.kendoGridProps.recordsToFetch * pageNumber) <= (dataState.skip + dataState.take)) {\r\n var pageNo = (bgData.length / dealBidGrid.kendoGridProps.recordsToFetch) + 1\r\n setpageNumber(pageNo);\r\n getBidGrid(pageNo, dataState)\r\n }\r\n if(isFilterAppliedOrRemoved===true){\r\n dealBidGrid.kendoGridProps.isFilterAppliedOrRemoved=true\r\n }\r\n }\r\n\r\n const onProductChange = (event?: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n setProduct(item?.key)\r\n };\r\n\r\n const onCountryChange = (event: FormEvent<IComboBox>, option?: IComboBoxOption, index?: number, value?: string): void => {\r\n setCountry(option?.key)\r\n };\r\n\r\n const onDateChange = (date?: Date | null | undefined) => {\r\n setDate(date)\r\n }\r\n\r\n const boundDynamicColumns = (DRConfig: IGridProps, items: IBidGridDeal[]) => {\r\n let selectedData: IBidGridDeal[] = []\r\n let roles = dealBidGrid.kendoGridProps.columns.filter(col => col.columnTitle === 'Business Unit')[0].allowColumnView;\r\n items.map((element: IBidGridDeal) => {\r\n element.customDiscounts.map((ele: any, index: number) => {\r\n let discount = `discountApiField${index}`\r\n var column = {} as IKendoGridColumnProps;\r\n if (DRConfig.kendoGridProps.columns.find((c) => c.columnTitle === ele.discountTier.name)) {\r\n discount = DRConfig.kendoGridProps.columns.filter(col => col.columnTitle === ele.discountTier.name)[0].apiField;\r\n var idx = selectedData.findIndex(item => item.productFamily.name === element.productFamily.name);\r\n var newArray = {} as IBidGridDeal;\r\n var data = selectedData[idx];\r\n newArray = {\r\n ...data, [discount]:\r\n ele.discount + \" %\"\r\n }\r\n selectedData[idx] = newArray;\r\n if (idx === -1) {\r\n selectedData.push({\r\n ...element, [discount]: ele.discount + \" %\", expanded: true\r\n })\r\n }\r\n \r\n } else {\r\n column.apiField = discount;\r\n column.columnTitle = ele.discountTier.name;\r\n column.isVisible = true;\r\n column.allowColumnView = roles;\r\n column.width = \"200\";\r\n column.headerClassName=\"breakWord20\";\r\n DRConfig.kendoGridProps.columns.push(column);\r\n let idx = selectedData.findIndex(item => item.productFamily.name === element.productFamily.name);\r\n let newArray = {} as IBidGridDeal;\r\n let data = selectedData[idx];\r\n newArray = {\r\n ...data, [discount]:\r\n ele.discount + \" %\"\r\n }\r\n selectedData[idx] = newArray;\r\n if (idx === -1) {\r\n selectedData.push({\r\n ...element, [discount]: ele.discount + \" %\"\r\n })\r\n }\r\n }\r\n })\r\n })\r\n return selectedData\r\n }\r\n\r\n const onChangeHandler = (value: string) => {\r\n let DRConfig = { ...dealBidGrid };\r\n var filteredList: IBidGridDeal[] = [];\r\n setSearchValue(value);\r\n dealBidGrid.kendoGridProps.filterValue = value;\r\n const originalData = [...initialData];\r\n if (value !== \"\") {\r\n originalData.map((element) => {\r\n if (element.productSku?.filter((ele: Item) => ele.partNumber?.toLowerCase().includes(value.toLowerCase())).length > 0) {\r\n var bidgridSKUdeal: IBidGridDeal = { ...element };\r\n var filteredSKUList: Item[] = element.productSku?.filter((sku: Item) => sku.partNumber?.toLowerCase().includes(value.toLowerCase()));\r\n bidgridSKUdeal.productSku = [...filteredSKUList]\r\n filteredList.push(bidgridSKUdeal);\r\n }\r\n })\r\n const selectedData = boundDynamicColumns(DRConfig, filteredList)\r\n var finalData: IBidGridDeal[] = [...selectedData];\r\n DRConfig.kendoGridProps.expandField = PageConstants.Expanded;\r\n DRConfig.kendoGridProps.data = finalData;\r\n setBGData(finalData);\r\n DRConfig.kendoGridProps.totalRecords = finalData.length;\r\n setDealBidGrid(DRConfig);\r\n }\r\n else if (value === \"\") {\r\n DRConfig.kendoGridProps.data = [...initialData];\r\n DRConfig.kendoGridProps.totalRecords = [...initialData].length;\r\n DRConfig.kendoGridProps.expandField = \"\"\r\n setBGData([...initialData]);\r\n setDealBidGrid(DRConfig);\r\n }\r\n }\r\n\r\n const getExcelColumns = (dynamicGridColumns: string[]): IKendoGridColumnProps[] => {\r\n let columns: IKendoGridColumnProps[] = [];\r\n const businessUnitName = Object.assign({} as IKendoGridColumnProps, { apiField: ApplicationConstants.BusinessUnitName, columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BusinessUnitExcelColumnTitle\", UIControlsText.BusinessUnitExcelColumnTitle)} as IKendoGridColumnProps);\r\n const productFamilyName = Object.assign({} as IKendoGridColumnProps, { apiField: ApplicationConstants.ProductFamilyName, columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductFamilyNameExcelColumnTitle\", UIControlsText.ProductFamilyNameExcelColumnTitle)} as IKendoGridColumnProps);\r\n const skuName = Object.assign({} as IKendoGridColumnProps, { apiField: ApplicationConstants.skuName, columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SkuNameExcelColumnTitle\", UIControlsText.SkuNameExcelColumnTitle)} as IKendoGridColumnProps);\r\n const skuNumber = Object.assign({} as IKendoGridColumnProps, { apiField: ApplicationConstants.skuNumber, columnTitle: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"skuNumberExcelColumnTitle\", UIControlsText.skuNumberExcelColumnTitle)} as IKendoGridColumnProps);\r\n columns = [businessUnitName, productFamilyName, skuName,skuNumber];\r\n\r\n dynamicGridColumns.forEach((colName) => {\r\n const dynamicCol = Object.assign({} as IKendoGridColumnProps, { apiField: colName, columnTitle: colName} as IKendoGridColumnProps);\r\n columns.push(dynamicCol);\r\n });\r\n\r\n return columns;\r\n }\r\n \r\n return (\r\n <Fragment>\r\n <Row>\r\n <Breadcrumbs items={items} />\r\n <Separator styles={separatorStyles} />\r\n </Row>\r\n <Row>\r\n <div className=\"d-flex align-items-center justify-content-between\">\r\n <div className=\"d-flex\">\r\n <h1 className=\"header\" style={DashboardHeaderStyle}>Discount</h1> <span style={pageTitleStyles}> | </span> <CaseDropdown options={DiscountViewTypesValues} onChange={() => { }} disabled={false} defaultSelectedKey={1} />\r\n </div>\r\n </div>\r\n </Row>\r\n <Row style={pageTitleStyles.dashboardTitle}>\r\n <Stack horizontal horizontalAlign=\"space-between\">\r\n <Stack horizontal horizontalAlign=\"start\" gap=\"16\">\r\n <Dropdown\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BGProductGroup\", UIControlsText.BGProductGroup)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"BGProductGroupPlaceholder\", UIControlsText.BGProductGroupPlaceholder)}\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BGProductGroup\", UIControlsText.BGProductGroup)}\r\n styles={PageStyles.bgdropdownStyles}\r\n required\r\n options={productType.map((product: IProductType) => ({ key: product.productId, text: product.productName }))}\r\n onChange={onProductChange}\r\n selectedKey={product}\r\n />\r\n <ComboBox\r\n id={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BGComboBoxID\", UIControlsText.BGComboBoxID)}\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BGCountryLabel\", UIControlsText.BGCountryLabel)}\r\n required\r\n styles={PageStyles.bgdropdownStyles}\r\n className={_Styles.dropdown}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"BGCountryLabelPlaceholder\", UIControlsText.BGCountryLabelPlaceholder)}\r\n options={allCountries.map((country: any) => ({ key: country.countryId, text: country.countryName }))}\r\n onChange={onCountryChange}\r\n selectedKey={country}\r\n />\r\n <DatePicker\r\n styles={BGDatePickerStyles}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"DatePlaceHolder\", UIControlsText.DatePlaceHolder)}\r\n strings={defaultDatePickerStrings}\r\n highlightSelectedMonth={true}\r\n // value={maxExpirationDate}\r\n onSelectDate={onDateChange}\r\n textField={{\r\n validateOnLoad: false, validateOnFocusOut: true,\r\n label: getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BGDatePickerLabel\", UIControlsText.BGDatePickerLabel),\r\n placeholder: Date.now().toString(),\r\n required: true,\r\n // onGetErrorMessage: () => { return ErrorMessages.RequiredFieldError}, \r\n }}\r\n value={date}\r\n />\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BGShowDiscountsText\", UIControlsText.BGShowDiscountsText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"BGShowDiscountsText\", UIControlsText.BGShowDiscountsText)}\r\n styles={showDiscountButtonStyles}\r\n disabled={!(product !== '' && country !== '')}\r\n onClick={() => { setSearchValue(\"\"); getBidGrid(1);}}\r\n\r\n />\r\n </Stack>\r\n <Stack horizontal horizontalAlign=\"end\" gap='16'>\r\n <SearchBox\r\n styles={showDiscountButtonStyles}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"BGSearchPlaceholder\", UIControlsText.BGSearchPlaceholder)}\r\n value={searchValue}\r\n onChange={(_, newValue: any) => onChangeHandler(newValue)}\r\n disabled={initialData.length <= 0}\r\n />\r\n </Stack>\r\n </Stack>\r\n </Row>\r\n {isCaseLoading &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingCases\", UIControlsText.LoadingCases)} />\r\n </div>\r\n </Stack>\r\n }\r\n <Stack id=\"BidgridDashboard\">\r\n <DashboardGrid\r\n {...{\r\n\r\n kendoGridProps: { ...dealBidGrid.kendoGridProps }, onGetDataRequest: onGetDataRequest, excelExport: excelExport\r\n\r\n }}\r\n />\r\n <div id=\"footerPadding\"></div>\r\n </Stack>\r\n </Fragment>\r\n );\r\n};\r\n","import { CoherenceDialog, CoherenceDialogFooter } from \"@cseo/controls\";\r\nimport { Grid, GridCellProps, GridColumn, GridHeaderCellProps } from \"@progress/kendo-react-grid\";\r\nimport { Upload, UploadOnAddEvent } from \"@progress/kendo-react-upload\";\r\nimport { encode } from \"base64-arraybuffer\";\r\nimport { DefaultButton, DialogType, Dropdown, IDropdownOption, IStackProps, IStackStyles, IStackTokens, Label, MessageBar, MessageBarType, Panel, PrimaryButton, Separator, Stack, TextField, Spinner } from \"office-ui-fabric-react\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { getAllCountries, getLoggedinUserRoleDetails, getUserSession, validateEmails, getRuleValidationMessage, getEntityDataFromSession } from \"../../components/shared/common/util\";\r\nimport { CssClassConstants } from \"../../content/CssClassConstants\";\r\nimport { ErrorMessages } from \"../../content/ErrorMessages\";\r\nimport { AddCaseOverlayStyles, AddCasToDashboardStyles, MarginStyles, stackButtonStyles, _Styles } from \"../../content/styles/Page.styles\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { Guid } from \"../../infrastructure/Guid\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { ApplicationConstants } from \"../../models/ApplicationConstants\";\r\nimport { IAccount } from \"../../models/IAccount\";\r\nimport { IAddOpportunityAccountToCaseRequest } from \"../../models/IAddOpportunityAccountToCaseRequest\";\r\nimport { IAttachment } from \"../../models/IAttachment\";\r\nimport { IUserRoleDetail } from \"../../models/IUserRoleDetail\";\r\nimport { IValidateCaseAndResellerRequest } from \"../../models/IValidateCaseAndResellerRequest\";\r\nimport { UserSubRole } from \"../../models/UserSubRole\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { PageConstants } from \"../pageconstants/Constants\";\r\nimport { IAddToCaseProps } from \"./props/IAddToCaseProps\";\r\nimport fileUploadControlLocaleMessages from \"../../content/fileUpload-locale-config.json\";\r\nimport { IntlProvider, LocalizationProvider, loadMessages } from \"@progress/kendo-react-intl\";\r\nimport { useBoolean } from '@fluentui/react-hooks';\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { useToAddRoleAlert as mdppAccessibilityAddRoleAttribute } from \"../../hooks/accessiblity-hooks\";\r\nimport { UserRole } from \"../../models/UserRole\";\r\n\r\nconst stackTokensForOverlayButtons: IStackTokens = { childrenGap: 20 };\r\nconst stackTokensForDialog: IStackTokens = { childrenGap: 12 };\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nexport const AddToCase: React.FunctionComponent<IAddToCaseProps> = (props: IAddToCaseProps) => {\r\n const [hideDialog, setHideDialog] = React.useState<boolean>(true);\r\n const [showGrid, setShowGrid] = React.useState<boolean>(true);\r\n const [showLoadingResellersSpinner, setShowLoadingResellersSpinner] = React.useState<boolean>(false);\r\n const [showSubmittingAddCaseToDashboardSpinner, setShowSubmittingAddCaseToDashboardSpinner] = React.useState<boolean>(false);\r\n const [showAccountCountry, setShowAccountCountry] = React.useState<boolean>(false);\r\n const [disableSubmit, setDisableSubmit] = React.useState(true);\r\n const [casIdValue, setCasIdValue] = React.useState<string>(\"\");\r\n const [resellerNameValue, setResellerNameValue] = React.useState<string>(\"\");\r\n const [disableSearch, setDisableSearch] = React.useState<boolean>(true);\r\n const [resellerGridData, setResellerGridData] = React.useState<IAccount[]>();\r\n const [opportunityData, setOpportunityData] = React.useState<any>();\r\n const [selectedReseller, setSelectedReseller] = React.useState<IAccount | null>(null);\r\n const [selectedFile, setSelectedFile] = React.useState<any>(); //contains information on the currently picked file.\r\n const [isFilePicked, setIsFilePicked] = React.useState(false); //determines if a file has been picked or not.\r\n const [isRadioSelected, setIsRadioSelected] = React.useState(false);\r\n const [selectedADDAccount, setSelectedADDAccount] = React.useState<IAccount | null>();\r\n const [showSelectADDAccount, setShowSelectADDAccount] = React.useState<boolean>(false);\r\n const [disableSelectADDAccount, setDisableSelectADDAccount] = React.useState<boolean>(false);\r\n const [aDDAccounts, setADDAccounts] = React.useState<IAccount[] | undefined>([]);\r\n const [channelContactEmails, setChannelContactEmails] = React.useState<string>();\r\n const [emailError, setEmailError] = useState('');\r\n const [errorMsg, setErrorMsg] = React.useState(false);\r\n const [showAddMessageBar, setAddShowMessageBar] = React.useState<boolean>(false);\r\n const resetChoice = React.useCallback(() => setAddShowMessageBar(false), []);\r\n const [errorMessageType, setErrorMessageType] = React.useState(MessageBarType.success);\r\n const [msgBarText, setMsgBarText] = React.useState<string>();\r\n const [multiline, { toggle: toggleMultiline }] = useBoolean(false);\r\n\r\n useEffect(() => {\r\n setHideDialog(props.hideDialog);\r\n setShowGrid(false);\r\n resetInputField();\r\n }, [props])\r\n\r\n useEffect(() => {\r\n loadMessages(fileUploadControlLocaleMessages, \"bg-BG\");\r\n }, [])\r\n\r\n /**\r\n * Handle File Upload Event.\r\n * @method\r\n * @param {Event>} event form event.\r\n */\r\n const onFileUpload = async (event: UploadOnAddEvent) => {\r\n setIsFilePicked(true);\r\n const attachments = await Promise.all(\r\n event.affectedFiles.map(async (file) => {\r\n if (file?.getRawFile) {\r\n var bufffer = await file.getRawFile().arrayBuffer();\r\n var content = encode(bufffer);\r\n var att: IAttachment = {\r\n id: Guid.newGuid(),\r\n name: file.name,\r\n extension: file.extension,\r\n size: file.size,\r\n source: \"\",\r\n content: content,\r\n };\r\n return att;\r\n }\r\n })\r\n );\r\n setSelectedFile(attachments[0]);\r\n };\r\n\r\n /**\r\n * Handle Upload File Remove.\r\n * @method\r\n */\r\n function onFileRemove() {\r\n setSelectedFile(undefined);\r\n setIsFilePicked(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (selectedFile && selectedFile !== undefined) {\r\n const allowedExtensions = ['.PDF', '.DOC', '.DOCM', '.DOCX', '.DOT', '.DOTM', '.DOTX', '.MSG'];\r\n const allowedFileSize = 5e+6;\r\n if (allowedExtensions.find(col => col.toLowerCase() === selectedFile.extension) && selectedFile.size < allowedFileSize) {\r\n setIsFilePicked(true);\r\n }\r\n else {\r\n setIsFilePicked(false);\r\n }\r\n } else {\r\n setIsFilePicked(false);\r\n }\r\n }, [selectedFile, isRadioSelected]);\r\n\r\n useEffect(() => {\r\n if (isFilePicked === true && isRadioSelected === true && (!JavaScriptExtensions.isEmptyOrNullOrUndefined(channelContactEmails) && JavaScriptExtensions.isEmptyOrNullOrUndefined(emailError)) && !JavaScriptExtensions.isNullOrUndfinedOrEmpty(selectedADDAccount)) {\r\n setDisableSubmit(false);\r\n }\r\n else {\r\n setDisableSubmit(true);\r\n }\r\n }, [isFilePicked, isRadioSelected, channelContactEmails, emailError, selectedADDAccount]);\r\n\r\n /**\r\n * Handle Reseller select event.\r\n * @method\r\n * @param {Event} event form event.\r\n */\r\n async function onResellerSelect(resellerData: IAccount) {\r\n setSelectedReseller(resellerData);\r\n setShowSelectADDAccount(false);\r\n if(opportunityData != null){\r\n if(opportunityData.dealType != null && opportunityData.dealType.name === \"CP Strategic\"){\r\n setShowAccountCountry(true);\r\n }\r\n const accounts = await Promise.resolve(GetADDAccounts(getLoggedinUserRoleDetails(), resellerData.countryId?.toString(), opportunityData.opportunityProductTypeId));\r\n if (accounts != undefined && accounts?.length > 1) {\r\n setSelectedADDAccount(null);\r\n setShowSelectADDAccount(true);\r\n setDisableSelectADDAccount(false);\r\n } else if(accounts != undefined && accounts?.length == 1) {\r\n console.log(accounts[0])\r\n setShowSelectADDAccount(true);\r\n setSelectedADDAccount(accounts[0]);\r\n setDisableSelectADDAccount(true);\r\n }\r\n else {\r\n setShowSelectADDAccount(false);\r\n setSelectedADDAccount(null);\r\n setDisableSelectADDAccount(true);\r\n }\r\n setIsRadioSelected(true);\r\n }\r\n }\r\n\r\n /**\r\n * Reset input values of textfield.\r\n * @method\r\n */\r\n const resetInputField = () => {\r\n setAddShowMessageBar(false);\r\n setCasIdValue(\"\");\r\n setResellerNameValue(\"\");\r\n setOpportunityData({});\r\n setSelectedReseller(null);\r\n setErrorMsg(false);\r\n setSelectedFile(undefined);\r\n setIsRadioSelected(false);\r\n setEmailError('');\r\n toggleMultiline();\r\n };\r\n\r\n /**\r\n * Invoke API to get reseller data.\r\n * @method\r\n */\r\n const searchReseller = () => {\r\n setShowLoadingResellersSpinner(true);\r\n setAddShowMessageBar(false);\r\n setSelectedReseller(null);\r\n setIsRadioSelected(false);\r\n setShowSelectADDAccount(false);\r\n\r\n var userSession = getUserSession();\r\n\r\n if (userSession != null) {\r\n\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n\r\n let validateCaseAndResellerRequest: IValidateCaseAndResellerRequest =\r\n {\r\n caseId: casIdValue,\r\n resellerName: resellerNameValue?.toString(),\r\n userRoleDetails: loggedInUserInfo.userRoleDetails,\r\n }\r\n\r\n nextGenService.validateCaseAndReseller(validateCaseAndResellerRequest).then((response) => {\r\n if (response.status === 200) {\r\n if (response.data.success) {\r\n setResellerGridData(response.data.resellers);\r\n const OpportunityData = {\r\n opportunityId: response.data.opportunityId,\r\n opportunityProductTypeId: response.data.opportunityProductTypeId,\r\n dealType: response.data.dealType\r\n };\r\n setOpportunityData(OpportunityData);\r\n if (!IsCasIdSame(validateCaseAndResellerRequest.caseId)) {\r\n setChannelContactEmails(response.data.emails.join(';'));\r\n if (response.data.emails.length === 0) {\r\n setEmailError(ErrorMessages.ValidEmailError);\r\n }\r\n }\r\n setShowGrid(true);\r\n setShowLoadingResellersSpinner(false);\r\n document.querySelector(\"[id='channelContactEmail']\")?.setAttribute('data-opportunityNumber', validateCaseAndResellerRequest.caseId);\r\n } else {\r\n setShowGrid(false);\r\n setOpportunityData({});\r\n setErrorMessageType(MessageBarType.error);\r\n setAddShowMessageBar(true);\r\n setMsgBarText(response.data.errorMessage);\r\n setShowLoadingResellersSpinner(false);\r\n }\r\n }\r\n else {\r\n props.onSuccess(true, MessageBarType.error, ErrorMessages.APIErrorMessage, false, true);\r\n }\r\n }).catch((e) => {\r\n setShowGrid(false);\r\n setOpportunityData({});\r\n setHideDialog(true);\r\n props.onSuccess(true, MessageBarType.error, ErrorMessages.APIErrorMessage, false, true);\r\n });\r\n }\r\n };\r\n /**\r\n * Get TextField ErrorMessage.\r\n * @method\r\n * @param {string>} value Text Box value.\r\n * @@returns {string} Error Message.\r\n */\r\n const getTextFieldErrorMessage = (value: string): string => {\r\n return !value ? ErrorMessages.RequiredFieldError : \"\";\r\n };\r\n\r\n /**\r\n * Get TextField for reseller name ErrorMessage.\r\n * @method\r\n * @param {string>} value Text Box value.\r\n * @@returns {string} Error Message.\r\n */\r\n const getTextFieldErrorMessageForResellerName = (value: string): string => {\r\n if (!value) {\r\n return ErrorMessages.RequiredFieldError;\r\n } else if (value.length < ApplicationConstants.MinLengthForResellerName) {\r\n return ErrorMessages.RequiredLengthForResellerName;\r\n } else {\r\n return \"\";\r\n }\r\n };\r\n\r\n /**\r\n * Get CaseId Value\r\n * @method\r\n * @param {Event} event Form Event.\r\n * @param {string} newValue Text Box value.\r\n */\r\n const onCaseIdChange = (\r\n event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>,\r\n newValue?: string\r\n ): void => {\r\n setCasIdValue(newValue as string);\r\n };\r\n\r\n /**\r\n * Get Reseller Value\r\n * @method\r\n * @param {Event} event Form Event.\r\n * @param {string} newValue Text Box value.\r\n */\r\n const onResellerNameChange = (\r\n event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>,\r\n newValue?: string\r\n ): void => {\r\n setResellerNameValue(newValue as string);\r\n };\r\n\r\n useEffect(() => {\r\n if (\r\n casIdValue &&\r\n casIdValue?.length > 0 &&\r\n resellerNameValue &&\r\n resellerNameValue?.length >= ApplicationConstants.MinLengthForResellerName\r\n ) {\r\n setDisableSearch(false);\r\n } else {\r\n setDisableSearch(true);\r\n }\r\n }, [resellerNameValue, casIdValue]);\r\n\r\n /**\r\n *Reset the input fields for Add Case\r\n *@method\r\n */\r\n function clearOverlayData() {\r\n setHideDialog(true);\r\n setShowGrid(false);\r\n resetInputField();\r\n setShowSelectADDAccount(false);\r\n props.onSuccess(false, \"\", \"\", false, true);\r\n }\r\n /**\r\n *Add Case Overlay Grid Header Styling\r\n *@method\r\n */\r\n const cellWithBackGround = (props: GridHeaderCellProps) => {\r\n return (\r\n <span style={{\r\n lineHeight: \"30px\",\r\n textAlign: \"center\",\r\n fontSize: \"14px\",\r\n fontWeight: 700,\r\n }}\r\n >\r\n {props.title}\r\n </span>\r\n );\r\n };\r\n\r\n /**\r\n *Invoke API to Add Case\r\n *@method\r\n */\r\n const AddOpportunityAccount = () => {\r\n\r\n setShowSubmittingAddCaseToDashboardSpinner(true);\r\n setDisableSubmit(true);\r\n const userSession = getUserSession();\r\n const isCPSDeal = showAccountCountry;\r\n if (userSession != null) {\r\n const addOpportunityAccountToCaseRequest: IAddOpportunityAccountToCaseRequest = {\r\n accountId: selectedADDAccount?.accountId,\r\n countryId: selectedADDAccount?.countryId,\r\n attachment: selectedFile,\r\n partnerAccountId: selectedReseller?.accountId,\r\n emails: channelContactEmails?.split(';').map(x => x.trim()),\r\n isCPSDeal: isCPSDeal,\r\n requestInitiatedBy: JSON.parse(userSession)?.email,\r\n };\r\n\r\n nextGenService.AddOpportunityAccountToCase(opportunityData.opportunityId, addOpportunityAccountToCaseRequest).then((response) => {\r\n if (response.status === 200) {\r\n if (response.data.success) {\r\n props.onSuccess(true, MessageBarType.success, response.data.successMsg, true, false);\r\n clearOverlayData();\r\n } else {\r\n setErrorMessageType(MessageBarType.error);\r\n setAddShowMessageBar(true);\r\n setMsgBarText(response.data.error.message);\r\n setDisableSubmit(false);\r\n }\r\n } else {\r\n props.onSuccess(true, MessageBarType.error, ErrorMessages.APIErrorMessage, false, false);\r\n clearOverlayData();\r\n setDisableSubmit(false);\r\n }\r\n setShowSubmittingAddCaseToDashboardSpinner(false);\r\n setShowGrid(true)\r\n }).catch((e) => {\r\n props.onSuccess(true, MessageBarType.error, ErrorMessages.APIErrorMessage, false, false);\r\n clearOverlayData();\r\n });\r\n }\r\n };\r\n\r\n const GetADDAccounts = async (loggedInUserInfo: Array<IUserRoleDetail>, resellerCountryId?: string, productTypeId?: string): Promise<IAccount[]> => {\r\n let allCountries = await Promise.resolve(getAllCountries());\r\n \r\n let userRoleDetails = loggedInUserInfo?.filter((user: IUserRoleDetail) => user.userSubRole === UserSubRole.ADD && user.productType?.productId === productTypeId);\r\n const resellerCountry = allCountries.find(c => c.countryId === resellerCountryId);\r\n const userCountryIds = Array.prototype.map.call(userRoleDetails, a => a.countryId);\r\n const allADDCountries = allCountries.filter(c => userCountryIds.includes(c.countryId));\r\n\r\n if (allADDCountries.length > 1) {\r\n let resellerGeoCountries = allADDCountries.filter(c => c.applicablePriceListGeo == resellerCountry?.applicablePriceListGeo);\r\n userRoleDetails = userRoleDetails?.filter((a: any) => resellerGeoCountries.some(c => a.countryId === c.countryId));\r\n }\r\n var userAccounts = userRoleDetails?.map(ua => {\r\n return {\r\n accountId: ua.accountId,\r\n countryId: ua.countryId,\r\n country: allADDCountries.find(x => x.countryId === ua.countryId)?.countryName,\r\n accountName: ua.organizationName\r\n } as IAccount\r\n });\r\n setADDAccounts(userAccounts);\r\n return userAccounts;\r\n }\r\n\r\n const onADDAccountSelectChange = (event: React.FormEvent<HTMLDivElement>, item?: IDropdownOption): void => {\r\n if (item) {\r\n const account = aDDAccounts?.find(account => account.accountId === item?.id);\r\n setSelectedADDAccount(account);\r\n }\r\n };\r\n\r\n /**\r\n * Set Email Value\r\n * @method\r\n * @param {Event} event Form Event.\r\n * @param {string} newValue Text Box value.\r\n */\r\n const onEmailValueChange = (\r\n event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>,\r\n newValue?: string\r\n ): void => {\r\n const emails = newValue as string;\r\n const newMultiline = emails.length > 50;\r\n if (newMultiline !== multiline) {\r\n toggleMultiline();\r\n }\r\n setChannelContactEmails(emails);\r\n if (!JavaScriptExtensions.isEmptyOrNullOrUndefined(newValue)) {\r\n var result = validateEmails(emails, ';');\r\n if (result === false) {\r\n setEmailError(ErrorMessages.ValidEmailError);\r\n setErrorMsg(true);\r\n }\r\n else {\r\n setEmailError('');\r\n setErrorMsg(false);\r\n }\r\n } else {\r\n setErrorMsg(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n // Accessibility fix for \"nested-interactive controls\"\r\n var selectFilesButtonContainers = document.querySelectorAll('div[aria-label=\"browse your files\"]');\r\n selectFilesButtonContainers.forEach((node) => {\r\n if (node.getAttribute(\"role\") === \"button\") {\r\n node.setAttribute(\"role\", \"none\");\r\n }\r\n });\r\n });\r\n\r\n useEffect(() => {\r\n var selectFilesButtonContainers = document.getElementsByClassName('k-upload-files');\r\n selectFilesButtonContainers[0]?.setAttribute(\"dir\", 'ltr')\r\n }, [isFilePicked]);\r\n \r\n mdppAccessibilityAddRoleAttribute();\r\n\r\n const IsCasIdSame = (newOpportunityNumber: string): boolean => {\r\n\r\n let dataSet = document.querySelector(\"[id='channelContactEmail']\")?.getAttribute('data-opportunityNumber');\r\n let oldOpportunityNumber = dataSet ? dataSet : \"\";\r\n\r\n if (JavaScriptExtensions.isEqual(oldOpportunityNumber, newOpportunityNumber)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n const onRenderFooterContent = React.useCallback(\r\n () =>\r\n (\r\n <>{showGrid && (\r\n <Stack horizontal tokens={stackTokensForOverlayButtons} styles={stackButtonStyles}>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SubmitText\", UIControlsText.SubmitText)}\r\n onClick={() => {\r\n AddOpportunityAccount();\r\n }}\r\n disabled={isFilePicked !== true || disableSubmit === true}\r\n />\r\n <DefaultButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CancelText\", UIControlsText.CancelText)} onClick={clearOverlayData} />\r\n </Stack>)}</>\r\n ),\r\n [clearOverlayData],\r\n );\r\n \r\n return (\r\n <Panel\r\n isOpen={!hideDialog}\r\n onDismiss={clearOverlayData}\r\n headerText={PageConstants.AddCasToDashboard}\r\n closeButtonAriaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CloseText\", UIControlsText.CloseText)}\r\n //isHiddenOnDismiss={true}\r\n onRenderFooterContent={onRenderFooterContent}\r\n className={CssClassConstants.AddToCasePanelClass}\r\n >\r\n <div style={MarginStyles.marginTop_16}/>\r\n {showAddMessageBar && (\r\n <Stack>\r\n <div>\r\n <MessageBar messageBarType={errorMessageType} onDismiss={resetChoice} dismissButtonAriaLabel=\"Close\" isMultiline={true}>\r\n {msgBarText}\r\n </MessageBar>\r\n </div>\r\n </Stack>\r\n )}\r\n <Stack tokens={stackTokensForDialog} style={AddCaseOverlayStyles.textSpacingStyle}>\r\n {showLoadingResellersSpinner &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Loading Resellers\", UIControlsText.LoadingReseller)} />\r\n </div>\r\n </Stack>\r\n }\r\n {showSubmittingAddCaseToDashboardSpinner && showGrid &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Submitting Request\", UIControlsText.SubmittingAddCaseToDashboardRequest)} />\r\n </div>\r\n </Stack>\r\n } \r\n <Stack>\r\n <TextField\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"CaseIdText\", UIControlsText.CaseIdText)}\r\n placeholder={PageConstants.CaseIdInputPlaceholderText}\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n onGetErrorMessage={getTextFieldErrorMessage}\r\n onChange={onCaseIdChange}\r\n value={casIdValue} required\r\n title={PageConstants.CaseIdInputPlaceholderText}\r\n styles={AddCasToDashboardStyles}\r\n />\r\n </Stack>\r\n <Stack>\r\n <TextField\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameText\", UIControlsText.ResellerNameText)}\r\n placeholder={PageConstants.ResellerNameInputPlaceholderText}\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n onGetErrorMessage={getTextFieldErrorMessageForResellerName}\r\n onChange={onResellerNameChange}\r\n value={resellerNameValue} required\r\n title={PageConstants.ResellerNameInputPlaceholderText}\r\n styles={AddCasToDashboardStyles}\r\n />\r\n </Stack>\r\n </Stack>\r\n <Stack horizontal tokens={stackTokensForOverlayButtons} style={MarginStyles.marginTop_15}>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Search\", UIControlsText.Search)}\r\n onClick={() => {\r\n searchReseller();\r\n }}\r\n disabled={disableSearch}\r\n />\r\n <DefaultButton\r\n text=\"Clear\"\r\n hidden={showGrid}\r\n onClick={() => {\r\n setShowGrid(false);\r\n resetInputField();\r\n }}\r\n />\r\n </Stack>\r\n {showGrid && (\r\n <>\r\n <Separator />\r\n </>\r\n )}\r\n <Stack tokens={stackTokensForDialog}>\r\n {showGrid && (\r\n <>\r\n <Stack>\r\n <Label style={AddCaseOverlayStyles.labelStyle} required>Proof of Reseller Awareness</Label>\r\n \r\n <div className={CssClassConstants.KendoRightToLeftClass} dir={CssClassConstants.DirectionRightToLeftClass}>\r\n <LocalizationProvider language=\"bg-BG\">\r\n <IntlProvider locale=\"bg\">\r\n <Upload\r\n className={CssClassConstants.KendoButtonLinkClass}\r\n batch={false}\r\n restrictions={{\r\n maxFileSize: 5000000,\r\n allowedExtensions: ['.PDF', '.DOC', '.DOCM', '.DOCX', '.DOT', '.DOTM', '.DOTX', '.MSG']\r\n }}\r\n multiple={false}\r\n withCredentials={false}\r\n defaultFiles={[]}\r\n autoUpload={false}\r\n showActionButtons={false}\r\n onAdd={onFileUpload}\r\n onRemove={onFileRemove}\r\n showFileList={true}\r\n />\r\n </IntlProvider>\r\n </LocalizationProvider>\r\n </div>\r\n <Label styles={AddCaseOverlayStyles.proofOfResellerFont}>The submitted attachment is subject to audit by Microsoft.</Label>\r\n </Stack>\r\n <Stack>\r\n <TextField\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ChannelContactEmailText\", UIControlsText.ChannelContactEmailText)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ChannelContactEmailPlaceholderText\", UIControlsText.ChannelContactEmailPlaceholderText)}\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n multiline={multiline}\r\n onGetErrorMessage={getTextFieldErrorMessage}\r\n onChange={onEmailValueChange}\r\n value={channelContactEmails}\r\n required={true}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"ChannelContactEmailPlaceholderText\", UIControlsText.ChannelContactEmailPlaceholderText)}\r\n id=\"channelContactEmail\"\r\n styles={AddCasToDashboardStyles}\r\n />\r\n {errorMsg &&\r\n <Stack>\r\n <Label className={_Styles.emailErrorStyle}>{emailError}</Label>\r\n </Stack>\r\n }\r\n </Stack>\r\n </>\r\n )}\r\n {showSelectADDAccount && showAccountCountry && (\r\n <Stack>\r\n <Dropdown\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SelectADDAccountText\", UIControlsText.SelectADDAccountText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"SelectADDAccountPlaceholderText\", UIControlsText.SelectADDAccountPlaceholderText)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"SelectADDAccountPlaceholderText\", UIControlsText.SelectADDAccountPlaceholderText)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"SelectADDAccountPlaceholderText\", UIControlsText.SelectADDAccountPlaceholderText)}\r\n options={(aDDAccounts && aDDAccounts.map((pt) => ({ key: pt.countryId, text: pt.country, id: pt.accountId } as IDropdownOption))) || []}\r\n onChange={onADDAccountSelectChange}\r\n required={showAccountCountry}\r\n />\r\n </Stack>\r\n )}\r\n {showSelectADDAccount && !showAccountCountry && (\r\n <Stack>\r\n <Dropdown\r\n label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SelectADDAccountAndCountryText\", UIControlsText.SelectADDAccountAndCountryText)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"SelectADDAccountAndCountryPlaceholderText\", UIControlsText.SelectADDAccountAndCountryPlaceholderText)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"SelectADDAccountAndCountryPlaceholderText\", UIControlsText.SelectADDAccountAndCountryPlaceholderText)}\r\n title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldPlaceHolderText, \"SelectADDAccountAndCountryPlaceholderText\", UIControlsText.SelectADDAccountAndCountryPlaceholderText)}\r\n options={(aDDAccounts && aDDAccounts.map((pt) => ({ key: pt.accountId, text: pt.accountName + \" / \" + pt.country, id: pt.accountId } as IDropdownOption))) || []}\r\n onChange={onADDAccountSelectChange}\r\n defaultSelectedKey = {aDDAccounts?.length == 1 ? aDDAccounts[0].accountId : selectedADDAccount?.accountId}\r\n required={!showAccountCountry}\r\n styles={AddCasToDashboardStyles}\r\n />\r\n </Stack>\r\n )}\r\n\r\n {showGrid && (<Stack>\r\n <Label style={AddCaseOverlayStyles.labelStyle} required>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameHeading\", UIControlsText.ResellerNameHeading)}</Label>\r\n <Grid style={{ height: \"auto\" }} data={resellerGridData} className={CssClassConstants.AddToCaseResellerGridClass}>\r\n <GridColumn width=\"30px\" field=\"accountId\" title=\" \"\r\n cell={(props: GridCellProps) => (\r\n <td>\r\n <input\r\n name=\"selectedADD\"\r\n type=\"radio\"\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"RadioButton\", UIControlsText.RadioButton)}\r\n style={AddCaseOverlayStyles.radioButtonStyle}\r\n onChange={async () => { await onResellerSelect(props.dataItem); }}\r\n value={props.dataItem[props.field || \"\"]}\r\n checked={\r\n selectedReseller?.accountId ===\r\n props.dataItem[props.field || \"\"]\r\n }\r\n className={CssClassConstants.AddToCaseResellerRadioClass}\r\n />\r\n </td>\r\n )}\r\n />\r\n <GridColumn field=\"companyName\" title={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ResellerNameHeading\", UIControlsText.ResellerNameHeading)} headerCell={cellWithBackGround} />\r\n </Grid>\r\n </Stack>)}\r\n </Stack>\r\n </Panel>\r\n );\r\n}","import React, { useEffect, useState} from \"react\";\r\nimport { stackGridStyleswithPadding, stackButtonStyles, selectStyles, stackGridStylesButton, stackGridStyleswithBelowPadding, stackGridStyleswithBorder, stackGridStylesLabel } from '../../content/styles/Page.styles';\r\nimport { Spinner, Stack, DefaultButton, PrimaryButton } from \"office-ui-fabric-react\";\r\nimport { getAllCountries, getLoggedinUserRoleDetails, getEntityDataFromSession, getRuleValidationMessage } from \"../../components/shared/common/util\";\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { IAccount } from \"../../models/IAccount\";\r\nimport { IUserRoleDetail } from \"../../models/IUserRoleDetail\";\r\nimport { UserSubRole } from \"../../models/UserSubRole\";\r\nimport { ICountry } from \"../../models/ICountry\";\r\nimport { Label } from \"@fluentui/react\";\r\nimport { _Styles } from \"../../content/styles/Page.styles\";\r\nimport { default as ReactSelect } from \"react-select\";\r\nimport { IDashboardSearchProps } from \"../../components/shared/grid/IDashboardSearchProps\";\r\nimport { PartnerType } from \"../../models/PartnerType\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\n\r\nexport const DashboardSearch = (props: IDashboardSearchProps) => {\r\n\r\n const [addAccounts, setADDAccounts] = React.useState<IAccount[] | undefined>([]);\r\n const [allCountries, setAllCountries] = useState<ICountry[] | undefined>([]);\r\n const [allResellers, setAllResellers] = useState<IAccount[] | undefined>([]);\r\n const [selectedResellerCountry, setSelectedResellerCountry] = useState<ICountry | undefined>();\r\n const [selectedResellersByGeo, setSelectedResellersByGeo] = useState<IAccount[] | undefined>([]);\r\n const [selectedReseller, setSelectedReseller] = useState<IAccount | undefined>();\r\n const [disablePartnerFilter, setDisablePartnerFilter] = useState<boolean>(true);\r\n const [selectedADD, setSelectedADD] = useState<IAccount | undefined>();\r\n const [allADDAccounts, setAllADDAccounts] = useState<IAccount[] | undefined>([]);\r\n const [allResellersWithPartnerType, setAllResellersWithPartnerType] = useState<IAccount[] | undefined>([]);\r\n const [selectedADDWithPartnerType, setSelectedADDWithPartnerType] = useState<IAccount[] | undefined>([]);\r\n const [selectedResellerWithPartnerType, setSelectedResellerWithPartnerType] = useState<IAccount[] | undefined>([]);\r\n const [selectedPartners, setSelectedPartners] = useState<IAccount[] | undefined>(undefined);\r\n const [isSubmitted, setIsSubmitted] = useState<boolean>(false);\r\n const [isCleared, setIsCleared] = useState<boolean>(false);\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\n useEffect(() => {\r\n getADDAccounts(getLoggedinUserRoleDetails());\r\n getAllActiveResellers();\r\n },[])\r\n\r\n useEffect(() => {\r\n if(isSubmitted){\r\n setIsSubmitted(false);\r\n setSelectedPartners([...selectedADDWithPartnerType?selectedADDWithPartnerType : [], ...selectedResellerWithPartnerType? selectedResellerWithPartnerType : []]);\r\n }else if(isCleared){\r\n setIsCleared(false);\r\n setSelectedPartners([]);\r\n }\r\n },[isSubmitted, isCleared])\r\n\r\n useEffect(() => {\r\n props?.onfilterByPartner?.(selectedPartners);\r\n },[selectedPartners])\r\n\r\n const getAllActiveResellers = async() => {\r\n let resellerData = await Promise.resolve(nextGenService.getAllResellers());\r\n const uniqueResellerData = [...new Map(resellerData.data.map(item =>\r\n [item[\"accountId\"], item])).values()];\r\n setAllResellersWithPartnerType(resellerData.data);\r\n setAllResellers(uniqueResellerData);\r\n setDisablePartnerFilter(false);\r\n\r\n }\r\n\r\n const getADDAccounts = async (loggedInUserInfo: Array<IUserRoleDetail>): Promise<IAccount[]> => {\r\n let allCountries = await Promise.resolve(getAllCountries());\r\n setAllCountries(allCountries);\r\n let userRoleDetails = loggedInUserInfo?.filter((user: IUserRoleDetail) => user.userSubRole === UserSubRole.ADD);\r\n var userAccounts = userRoleDetails?.map(ua => {\r\n return {\r\n accountId: ua.accountId,\r\n countryId: ua.countryId,\r\n country: allCountries.find(x => x.countryId === ua.countryId)?.countryName,\r\n accountName: ua.organizationName,\r\n productTypeId: ua.productType?.productId,\r\n partnerType: PartnerType.ADD\r\n } as IAccount\r\n });\r\n setAllADDAccounts(userAccounts);\r\n var distinctUserAccounts: IAccount[] = [];\r\n userAccounts.forEach(function(account: IAccount){\r\n if(distinctUserAccounts.findIndex(acc => acc.accountId == account.accountId) == -1){\r\n distinctUserAccounts.push(account);\r\n }\r\n });\r\n setADDAccounts(distinctUserAccounts);\r\n return userAccounts;\r\n }\r\n\r\n const getSelectedResellersBasedonCountry = (adrCountryId : string) => {\r\n let applicablePriceListGeo = allCountries?.find(d => d.countryId === adrCountryId)?.applicablePriceListGeo;\r\n let selectedResellerGeo = allCountries?.find(d => d.countryId === selectedResellerCountry?.countryId)?.applicablePriceListGeo;\r\n if (applicablePriceListGeo !== selectedResellerGeo)\r\n {\r\n let selectedCountries = allCountries?.filter(d => d.applicablePriceListGeo === applicablePriceListGeo);\r\n let finalfilteredResellers:IAccount[] = [];\r\n selectedCountries?.forEach((d) => {\r\n let filteredlist = allResellers?.filter(e => e.countryId === d.countryId);\r\n filteredlist && finalfilteredResellers?.push(...filteredlist)\r\n });\r\n setSelectedResellersByGeo(finalfilteredResellers || []);\r\n }\r\n }\r\n\r\n const onADDAccountSelectChange = (event: any) => {\r\n if (!event){\r\n setSelectedADD(undefined);\r\n setSelectedADDWithPartnerType([])\r\n return;\r\n } \r\n setSelectedADD(addAccounts?.find(d => d.accountId === event.value));\r\n setSelectedADDWithPartnerType(allADDAccounts?.filter(d => d.accountId === event.value));\r\n };\r\n\r\n const onResellerCountrySelectionChange = (event: any) => {\r\n if (!event){\r\n setSelectedResellerCountry(undefined);\r\n setSelectedReseller(undefined)\r\n setSelectedResellerWithPartnerType([]);\r\n return;\r\n } \r\n if(event)\r\n {\r\n setSelectedResellerCountry(allCountries?.find(d => d.countryId === event.value));\r\n getSelectedResellersBasedonCountry(event.value);\r\n setSelectedReseller(undefined);\r\n }\r\n }\r\n\r\n const filterGridData = () => {\r\n setIsSubmitted(true);\r\n }\r\n\r\n const clearFilter = () => {\r\n setIsCleared(true);\r\n setSelectedReseller(undefined);\r\n setSelectedResellerCountry(undefined);\r\n setSelectedADD(undefined);\r\n setSelectedResellersByGeo([]);\r\n setSelectedPartners([]);\r\n setSelectedADDWithPartnerType([]);\r\n setSelectedResellerWithPartnerType([]);\r\n }\r\n\r\n const onResellerSelectionChange = (event: any) => {\r\n if (!event){\r\n setSelectedResellerWithPartnerType([]);\r\n setSelectedReseller(undefined)\r\n return;\r\n } \r\n var account = selectedResellersByGeo?.find(d => d.accountId === event.value);\r\n var resellerAccount: IAccount = {\r\n accountId: account?.accountId || '',\r\n accountName: account?.accountName || '',\r\n countryId: selectedResellerCountry?.countryId,\r\n countryName: selectedResellerCountry?.countryName,\r\n companyName: account?.companyName,\r\n productType: account?.productTypeId\r\n \r\n };\r\n setSelectedReseller(resellerAccount);\r\n setSelectedResellerWithPartnerType(allResellersWithPartnerType?.filter(d => d.accountId === resellerAccount?.accountId).map(ua => {\r\n return {\r\n accountId : ua.accountId, \r\n accountName : ua.accountName, \r\n productTypeId : ua.productTypeId, \r\n countryId : selectedResellerCountry?.countryId, \r\n countryName : selectedResellerCountry?.countryName,\r\n partnerType : PartnerType.Reseller\r\n }\r\n }));\r\n }\r\n\r\n const onDealContactAliasTextChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string): void => {\r\n let input = newValue;\r\n }\r\n\r\n return(\r\n <React.Fragment >\r\n <Stack horizontal styles={stackGridStyleswithBelowPadding}>\r\n <Stack horizontal styles={stackGridStyleswithBorder}>\r\n <Stack horizontal styles={stackGridStyleswithPadding}>\r\n <Stack styles={stackGridStylesLabel}>\r\n <Label>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ADD\", UIControlsText.ADD)}</Label>\r\n </Stack>\r\n <Stack styles={stackGridStyleswithPadding}>\r\n <ReactSelect\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SelectADDAccountName\", UIControlsText.SelectADDAccountName)}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SelectADDAccountName\", UIControlsText.SelectADDAccountName)}\r\n options={(addAccounts && addAccounts.map(add => ({ value:add.accountId, label:add.accountName}))) || []}\r\n closeMenuOnSelect={true}\r\n hideSelectedOptions={false}\r\n onChange={onADDAccountSelectChange}\r\n styles={selectStyles}\r\n isDisabled={disablePartnerFilter}\r\n value={selectedADD && { value:selectedADD.accountId, label:selectedADD.accountName} || ''}\r\n isClearable={false}\r\n \r\n />\r\n </Stack>\r\n </Stack>\r\n </Stack>\r\n <Stack horizontal styles={stackGridStyleswithPadding}>\r\n </Stack>\r\n <Stack styles={stackGridStyleswithBorder} horizontal>\r\n <Stack horizontal styles={stackGridStyleswithPadding}>\r\n <Stack styles={stackGridStylesLabel}>\r\n <Label>{getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Reseller\", UIControlsText.Reseller)}</Label>\r\n </Stack>\r\n <Stack styles={stackGridStyleswithPadding}>\r\n <ReactSelect\r\n aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SelectReseller\", UIControlsText.SelectReseller)}\r\n options={(allCountries && allCountries?.map(country => ({ value:country.countryId, label:country.countryName}))) || []}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SelectResellerCountry\", UIControlsText.SelectResellerCountry)}\r\n closeMenuOnSelect={true}\r\n hideSelectedOptions={false}\r\n maxMenuHeight={250}\r\n onChange={onResellerCountrySelectionChange}\r\n styles={selectStyles}\r\n isDisabled={disablePartnerFilter}\r\n value={ selectedResellerCountry && { value:selectedResellerCountry.countryId, label:selectedResellerCountry.countryName} || ''}\r\n isClearable={false}\r\n />\r\n </Stack>\r\n <Stack styles={stackGridStyleswithPadding}>\r\n <ReactSelect\r\n id={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SelectReseller\", UIControlsText.SelectReseller)}\r\n options={(selectedResellersByGeo && selectedResellersByGeo.map(adr => ({ value:adr.accountId, label:adr.companyName}))) || []}\r\n placeholder={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"SelectReseller\", UIControlsText.SelectReseller)}\r\n styles={selectStyles}\r\n closeMenuOnSelect={true}\r\n isDisabled={disablePartnerFilter}\r\n onChange={onResellerSelectionChange}\r\n value={selectedReseller && { value:selectedReseller.accountId, label:selectedReseller.companyName} || ''}\r\n isClearable={false}\r\n />\r\n </Stack>\r\n </Stack>\r\n </Stack>\r\n <Stack horizontal styles={stackGridStyleswithPadding}> \r\n <Stack styles={stackGridStylesButton}>\r\n <PrimaryButton\r\n text={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Search\", UIControlsText.Search)}\r\n ariaLabel={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"Search\", UIControlsText.Search)}\r\n onClick={() => { filterGridData();}}\r\n />\r\n </Stack>\r\n <Stack styles={stackGridStylesButton}>\r\n <DefaultButton\r\n styles={stackButtonStyles}\r\n text=\"Clear\"\r\n onClick={() => {\r\n clearFilter();\r\n }}\r\n />\r\n </Stack>\r\n {disablePartnerFilter &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingFilterData\", UIControlsText.LoadingFilterData)} />\r\n </div>\r\n </Stack>\r\n }\r\n </Stack>\r\n </Stack>\r\n </React.Fragment>\r\n );\r\n}","import { FC, Fragment, useCallback, useEffect, useState } from \"react\";\r\nimport { populateGridColumns, getUserRole, getUserSession, readGridConfig, getPageNumberFromSession, getRuleValidationMessage, getEntityDataFromSession } from \"../../components/shared/common/util\";\r\nimport { GridType } from \"../../models/GridType\";\r\nimport \"../../content/styles/AddCaseGrid.css\";\r\nimport DashboardGrid from \"../../components/shared/grid/dashboardgrid\";\r\nimport { IGridProps } from \"../../components/shared/grid/IGridProps\";\r\nimport { DealType } from \"../../models/DealType\";\r\nimport { IDashboardDataRequest } from \"../../models/IDashboardDataRequest\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { Stack, Spinner, FontIcon, CommandBarButton, MessageBar, MessageBarType } from \"office-ui-fabric-react\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { IDashboardGridProps } from \"./props/IDashboardGridProps\";\r\nimport { filter, unionBy } from \"lodash\";\r\nimport { IOpportunityDealDetails } from \"../../models/IOpportunityDealDetails\";\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport { RefreshButtonStyles, _Styles } from \"../../content/styles/Page.styles\";\r\nimport { PageConstants } from \"../pageconstants/Constants\";\r\nimport { CssClassConstants } from \"../../content/CssClassConstants\";\r\nimport { UserSubRole } from \"../../models/UserSubRole\";\r\nimport Row from \"react-bootstrap/esm/Row\";\r\nimport { AddToCase } from \"./add-to-case\";\r\nimport { IconButton } from \"@fluentui/react\";\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from '../../models/SessionStorageConsts';\r\nimport { DashboardSearch } from \"./dashboard-search\";\r\nimport { IAccount } from \"../../models/IAccount\";\r\nimport { getUserMainRole } from \"../../components/shared/common/util\";\r\nimport { UserRole } from \"../../models/UserRole\";\r\nimport moment from \"moment\";\r\n\r\n\r\nexport const AllCaseView: FC<IDashboardGridProps> = (props: IDashboardGridProps) => {\r\n const [gridConfig, setGridConfig] = useState<IGridProps>(readGridConfig(GridType.AllCaseView));\r\n const [isCaseLoading, setIsCaseLoading] = useState<boolean>(false);\r\n const [isRefreshed, setIsRefreshed] = useState<boolean>(false);\r\n const [pageNumber, setPageNumber] = useState<number>(1)\r\n const [userRoles] = useState<string>(getUserRole());\r\n const [data, setData] = useState<IOpportunityDealDetails[]>([]);\r\n const [cpStrategicCount, setCpStrategicCount] = useState<number>(0)\r\n const [nonCpStrategicCount, setNonCPStrategicCount] = useState<number>(0)\r\n const [otleCount, setOtleCount] = useState<number>(0)\r\n const [userRole] = useState<string>(getUserRole());\r\n const [msgBarText, setMsgBarText] = useState<string>();\r\n const [filteredPartnerAccount, setfilteredPartnerAccount] = useState<IAccount[] | undefined>(undefined);\r\n const [hideDialog, setHideDialog] = useState<boolean>(true);\r\n const [gridDataState, setGridDataState] = useState<any>();\r\n const [errorMessageType, setErrorMessageType] = useState(MessageBarType.success);\r\n const [showMessageBarOnDashboard, setshowMessageBarOnDashboard] = useState<boolean>(false);\r\n const resetDashboardMessageBarChoice = useCallback(() => setshowMessageBarOnDashboard(false), []);\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [userMainRole] = useState<string>(getUserMainRole());\r\n\r\n useEffect(() => {\r\n gridConfig.kendoGridProps = populateGridColumns(gridConfig.kendoGridProps)\r\n gridConfig.kendoGridProps.noOfRecords = getPageNumberFromSession(gridConfig.kendoGridProps)\r\n setGridConfig(gridConfig)\r\n getAllCases(pageNumber);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.onAddToCaseCallBack === GridType.AllCaseView) {\r\n getAllCases(1);\r\n }\r\n }, [props.onAddToCaseCallBack]);\r\n\r\n useEffect(() => {\r\n if(filteredPartnerAccount != undefined){\r\n setIsRefreshed(true);\r\n }\r\n }, [filteredPartnerAccount]);\r\n \r\n useEffect(() => {\r\n if(isRefreshed){\r\n onRefresh()\r\n }\r\n }, [isRefreshed]);\r\n\r\n useEffect(() => {\r\n if(data.length == 0 && isRefreshed){\r\n setIsRefreshed(false)\r\n setNonCPStrategicCount(0)\r\n setCpStrategicCount(0)\r\n setOtleCount(0)\r\n setPageNumber(1)\r\n getAllCases(1, gridDataState)\r\n }\r\n }, [data]);\r\n\r\n const getAllCases = async (pageNo?: number, dataState?: any, dealType?: string[], isFilterApplied?: boolean, pageChanged?: boolean) => {\r\n try {\r\n setIsRefreshed(false);\r\n const userSession = getUserSession();\r\n if (userSession != null) {\r\n if(isFilterApplied == undefined || !isFilterApplied){\r\n setIsCaseLoading(true);\r\n }\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n let roles = userRoles.split(\",\");\r\n let sort: any;\r\n let filter: any;\r\n let allPricingPrograms: string = \"\"\r\n var searchedCaseNumber = \"\";\r\n\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(dataState)) {\r\n if (dataState.sort[0] && !JavaScriptExtensions.isEmptyOrNullOrUndefined(dataState.sort[0].field)) {\r\n sort = dataState.sort[0].field + \" \" + dataState.sort[0].dir\r\n }\r\n Date.prototype.toJSON = function(){ return moment(this).format(); }\r\n filter = JSON.stringify(dataState.filter);\r\n searchedCaseNumber = dataState?.filter?.filters[0]?.filters[0]?.field === \"opportunityName\" \r\n ? dataState.filter.filters[0].filters[0].value\r\n : \"\";\r\n }\r\n\r\n if (dealType) {\r\n allPricingPrograms = dealType.join(\",\")\r\n } else {\r\n if (userMainRole === UserRole.MSSeller){\r\n allPricingPrograms = `${DealType.CPStrategic},${DealType.OTLE}`\r\n }\r\n else {\r\n allPricingPrograms = `${DealType.CPStrategic},${DealType.DealRegistration},${DealType.SpecialPricing},${DealType.OTLE}`;\r\n }\r\n \r\n }\r\n \r\n var resellerOrDistributorFilters : IAccount[] = [];\r\n if(filteredPartnerAccount != undefined && filteredPartnerAccount.length != 0){\r\n resellerOrDistributorFilters = filteredPartnerAccount\r\n }\r\n const dashboardRequest: IDashboardDataRequest = {\r\n userRoleDetails: loggedInUserInfo.userRoleDetails,\r\n dealType: allPricingPrograms,\r\n email: loggedInUserInfo.email,\r\n userRoles: roles.join(\",\"),\r\n filter: filter,\r\n pageNumber: pageNo,\r\n recordsToFetch: gridConfig.kendoGridProps.recordsToFetch,\r\n sort: sort,\r\n isAllCasesDashboardRequest: true,\r\n isLocalEmpowerment: false,\r\n organizationId: loggedInUserInfo.organizationId,\r\n resellerOrDistributorFilters: resellerOrDistributorFilters,\r\n getResellerAndDistiNames: false\r\n };\r\n \r\n if(data.filter(dt => dt.opportunityName === searchedCaseNumber).length == 0){\r\n var apiReturnedData = await Promise.resolve(nextGenService.getPricingProgramDashboardData(dashboardRequest));\r\n if (apiReturnedData.status === 200) {\r\n let newGridConfig = { ...gridConfig };\r\n apiReturnedData.data.item1 = apiReturnedData.data.item1.map((item: IOpportunityDealDetails) => ({\r\n ...item,\r\n expirationDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.expirationDate) ? item.expirationDate : new Date(item.expirationDate as Date)),\r\n caseStartDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.caseStartDate) ? item.caseStartDate : new Date(item.caseStartDate as Date)),\r\n }));\r\n \r\n var finalData: IOpportunityDealDetails[]\r\n if(pageChanged === undefined || pageChanged === false) {\r\n finalData = apiReturnedData.data.item1;\r\n }\r\n else {\r\n finalData = [...apiReturnedData.data.item1, ...data];\r\n }\r\n finalData = unionBy(finalData, x => x.id);\r\n newGridConfig.kendoGridProps.data = finalData;\r\n setData(finalData);\r\n newGridConfig.kendoGridProps.totalRecords = finalData.length;\r\n setGridConfig(gridConfig);\r\n setNonCPStrategicCount(apiReturnedData.data.item2.NonCPStrategicDeals + nonCpStrategicCount)\r\n setCpStrategicCount(apiReturnedData.data.item2.CPStrategicDeals + cpStrategicCount)\r\n setOtleCount(apiReturnedData.data.item2.OtleDeals + otleCount)\r\n }\r\n }\r\n gridConfig.kendoGridProps.customGridMessage = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoRecordsFound\", UIControlsText.NoRecordsFound) \r\n if(isFilterApplied == undefined || !isFilterApplied){\r\n setIsCaseLoading(false);\r\n } \r\n }\r\n } catch (error) {\r\n setIsCaseLoading(false);\r\n }\r\n }\r\n\r\n const onGetDataRequest = async (dataState: any, isSortingOrFilterAppliedOrRemoved?: boolean) => {\r\n setGridDataState(dataState);\r\n setIsCaseLoading(true);\r\n let dealType: string[] = []\r\n if ((((filterBy(data || [], dataState.filter).length - dataState.skip) <= dataState.take) || isSortingOrFilterAppliedOrRemoved === true)) {\r\n if (userMainRole !== UserRole.MSSeller){\r\n dealType.push(DealType.SpecialPricing)\r\n dealType.push(DealType.DealRegistration)\r\n }\r\n dealType.push(DealType.CPStrategic)\r\n dealType.push(DealType.OTLE)\r\n var pageNo = (!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null) ? pageNumber + 1 : 1;\r\n if(!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null)\r\n {\r\n setPageNumber(count => count + 1)\r\n }\r\n else\r\n {\r\n setPageNumber(1);\r\n }\r\n await getAllCases(pageNo, dataState, dealType, true, !isSortingOrFilterAppliedOrRemoved)\r\n\r\n }\r\n setIsCaseLoading(false);\r\n }\r\n\r\n function addCase() {\r\n return (!userRole.includes(UserSubRole.ADD)) ? \"\" : (<CommandBarButton onClick={() => { setHideDialog(false); }}>\r\n <div className={_Styles.CommandBarButton}>\r\n <FontIcon className={_Styles.DashboardIcons} aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddCaseAriaLabel\", UIControlsText.AddCaseAriaLabel)} iconName={CssClassConstants.CirclePlusIconName}></FontIcon>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.AddCasToDashboard}</span>\r\n </div>\r\n </CommandBarButton>)\r\n }\r\n\r\n const initiateRefresh = () => {\r\n setIsRefreshed(true)\r\n }\r\n\r\n const onRefresh = () => {\r\n if(isRefreshed){\r\n let newGridConfig = { ...gridConfig };\r\n newGridConfig.kendoGridProps.isRefresh = true\r\n newGridConfig.kendoGridProps.data = []\r\n newGridConfig.kendoGridProps = populateGridColumns(newGridConfig.kendoGridProps)\r\n newGridConfig.kendoGridProps.noOfRecords = getPageNumberFromSession(newGridConfig.kendoGridProps)\r\n setGridConfig(newGridConfig)\r\n setData([])\r\n newGridConfig.kendoGridProps.customGridMessage = \"\"\r\n }\r\n }\r\n\r\n const onfilterByPartner = (account: IAccount[] | undefined) => {\r\n setfilteredPartnerAccount(account);\r\n }\r\n\r\n const onSuccess = (showMessageBar: boolean, messageType: any, messageText: string, isReloadData: boolean, resetHideDialog: boolean): void => {\r\n\r\n if (resetHideDialog) {\r\n setHideDialog(resetHideDialog);\r\n }\r\n\r\n if (showMessageBar) {\r\n setErrorMessageType(messageType);\r\n setMsgBarText(messageText);\r\n setshowMessageBarOnDashboard(true);\r\n }\r\n if (isReloadData) {\r\n setIsRefreshed(true);\r\n }\r\n };\r\n\r\n function addRefreshIcon() {\r\n return (\r\n <CommandBarButton onClick={initiateRefresh} iconProps={{ iconName: CssClassConstants.RefreshIconName }} ariaLabel={CssClassConstants.RefreshIconName} title=\"Refresh\" styles={RefreshButtonStyles}>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.Refresh}</span>\r\n </CommandBarButton>\r\n )\r\n\r\n }\r\n\r\n return (\r\n <Fragment>\r\n {(!userRole.includes(UserSubRole.ADD)) ? (\r\n <div id=\"RefreshIconButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>\r\n ) : <div id=\"RefreshButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>}\r\n <div className={CssClassConstants.AddToCaseButtonClass}>\r\n {addCase()}\r\n </div>\r\n <div data-nextgen-parent-group=\"Dashboard - All cases\" data-nextgen-parentid= \"Dashboard - All cases\">\r\n <Stack>\r\n { userRoles.includes(UserSubRole.ADD) &&\r\n <Row className=\"text-center mt-2 ms-Label\">\r\n <Stack>\r\n <DashboardSearch {...{onfilterByPartner : onfilterByPartner } }/>\r\n </Stack>\r\n </Row>\r\n }\r\n <Row>\r\n {showMessageBarOnDashboard && (\r\n <Stack>\r\n <div>\r\n <MessageBar messageBarType={errorMessageType} onDismiss={resetDashboardMessageBarChoice} dismissButtonAriaLabel=\"Close\" isMultiline={true}>\r\n {msgBarText}\r\n </MessageBar>\r\n </div>\r\n </Stack>\r\n )}\r\n </Row>\r\n {isCaseLoading &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingCases\", UIControlsText.LoadingCases)} />\r\n </div>\r\n </Stack>\r\n }\r\n <DashboardGrid {...{ kendoGridProps: { ...gridConfig.kendoGridProps }, onGetDataRequest: onGetDataRequest }} />\r\n <div id=\"footerPadding\"></div>\r\n </Stack>\r\n </div> \r\n {/* Add Case Model */}\r\n <AddToCase {...{ hideDialog: hideDialog, onSuccess }} />\r\n </Fragment>\r\n );\r\n};","import React, { useEffect, useState } from \"react\";\r\nimport { _Styles } from '../../content/styles/Page.styles';\r\nimport { IKendoGridProps } from '../../components/shared/grid/IKendoGridProps';\r\nimport { readGridConfig } from \"../../components/shared/common/util\";\r\nimport { GridType } from \"../../models/GridType\";\r\nimport \"../../content/styles/AddCaseGrid.css\";\r\nimport { IOpportunityDeal } from \"../../models/IOpportunityDeal\";\r\nimport DashboardGrid from \"../../components/shared/grid/dashboardgrid\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { IDashboardGridProps } from \"./props/IDashboardGridProps\";\r\n\r\nexport const CPStrategicDealReportGrid: React.FunctionComponent<IDashboardGridProps> = (props: IDashboardGridProps) => {\r\n var KendoGridProps: IKendoGridProps[] = [];\r\n KendoGridProps.push(readGridConfig(GridType.CPStrategicDealReport).kendoGridProps)\r\n var activeDashboardConfig = KendoGridProps.filter(x => x.gridName === GridType.CPStrategicDealReport)\r\n const [cpStrategicDealReportGridData, setCPStrategicDealReportGridData] = useState<Array<IOpportunityDeal> | undefined>(props.opportunitDeals);\r\n const [activeTabConfig, setactiveTabConfig] = useState(activeDashboardConfig);\r\n\r\n useEffect(() => {\r\n const config = activeDashboardConfig;\r\n config[0].data = props.opportunitDeals; \r\n config[0].totalRecords = props.opportunitDeals?.length !== undefined ? props.opportunitDeals?.length : 0;\r\n setactiveTabConfig(config);\r\n setCPStrategicDealReportGridData(props.opportunitDeals);\r\n }, [props])\r\n\r\n return (\r\n <React.Fragment>\r\n <DashboardGrid {...{ kendoGridProps: { ...activeTabConfig[0] } }} />\r\n </React.Fragment>\r\n );\r\n};\r\n","import React, { useCallback, useEffect, useState } from \"react\";\r\nimport { RefreshButtonStyles, _Styles } from '../../content/styles/Page.styles';\r\nimport { IKendoGridProps } from '../../components/shared/grid/IKendoGridProps';\r\nimport { populateGridColumns, getLoggedinUserRoleDetails, getUserRole, getUserSession, readGridConfig, getPageNumberFromSession, getRuleValidationMessage, getEntityDataFromSession } from \"../../components/shared/common/util\";\r\nimport { GridType } from \"../../models/GridType\";\r\nimport \"../../content/styles/AddCaseGrid.css\";\r\nimport { IOpportunityDeal } from \"../../models/IOpportunityDeal\";\r\nimport DashboardGrid from \"../../components/shared/grid/dashboardgrid\";\r\nimport { CommandBarButton, FontIcon, IconButton, IStackStyles, IStackTokens, MessageBar, MessageBarType, Spinner, Stack } from \"office-ui-fabric-react\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport Row from \"react-bootstrap/Row\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { UserSubRole } from \"../../models/UserSubRole\";\r\nimport { IUserRoleDetail } from \"../../models/IUserRoleDetail\";\r\nimport { IDashboardDataRequest } from \"../../models/IDashboardDataRequest\";\r\nimport { DealType } from \"../../models/DealType\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { UserRole } from \"../../models/UserRole\";\r\nimport { CoherencePivot, CoherencePivotTabProps, PivotContent, PivotContentItem } from \"@cseo/controls\";\r\nimport { CPStrategicDealReportGrid } from \"./cp-strategic-deal-report\";\r\nimport { ApplicationConstants } from \"../../models/ApplicationConstants\";\r\nimport { IDashboardGridProps } from \"./props/IDashboardGridProps\";\r\nimport { unionBy } from \"lodash\";\r\nimport { CssClassConstants } from \"../../content/CssClassConstants\";\r\nimport { PageConstants } from \"../pageconstants/Constants\";\r\nimport { AddToCase } from \"./add-to-case\";\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { IAccount } from \"../../models/IAccount\";\r\nimport { PartnerType } from \"../../models/PartnerType\";\r\nimport { DashboardSearch } from \"./dashboard-search\";\r\nimport moment from \"moment\";\r\n\r\nconst stackTokens: IStackTokens = { childrenGap: 8 };\r\nconst stackStyles: Partial<IStackStyles> = { root: { height: 32, marginBottom: 8 } };\r\nconst sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n\r\nexport const CPStrategicCaseViewGrid: React.FunctionComponent<IDashboardGridProps> = (props: IDashboardGridProps) => {\r\n const [selectedPivot, setSelectedPivot] = useState<string>(ApplicationConstants.DefaultDashBoardCaseView);\r\n const [useGrayPivot] = useState<boolean>(false);\r\n const [isRefreshed, setIsRefreshed] = useState<boolean>(false);\r\n var KendoGridProps: IKendoGridProps[] = [];\r\n var dashboardData: IOpportunityDeal[] = [];\r\n KendoGridProps.push(readGridConfig(GridType.CPStrategicDealReport).kendoGridProps)\r\n KendoGridProps.push(readGridConfig(GridType.CPStrategicCaseView).kendoGridProps)\r\n var activeDashboardConfig = KendoGridProps.filter(x => x.gridName === selectedPivot)\r\n const [cpStrategicCaseViewGridData, setCPStrategicCaseViewGridData] = useState<Array<IOpportunityDeal>>([]);\r\n const [cpStrategicDealReportGridData, setCPStrategicDealReportGridData] = useState<Array<IOpportunityDeal>>([]);\r\n const [cpStrategicCompleteGridData, setCPStrategicCompleteGridData] = useState<Array<IOpportunityDeal>>([]);\r\n const [activeTabConfig, setactiveTabConfig] = useState(activeDashboardConfig);\r\n const [userRoles] = useState<string>(getUserRole());\r\n const [isCaseLoading, setIsCaseLoading] = useState<boolean>(false);\r\n const [pageNumber, setpageNumber] = useState<number>(1)\r\n let userRole = userRoles;\r\n let renderDashboradTabs: any = [];\r\n const [sqlRecordCount, setSqlRecordCount] = useState<number>(0);\r\n const [msgBarText, setMsgBarText] = useState<string>();\r\n const [hideDialog, setHideDialog] = useState<boolean>(true);\r\n const [errorMessageType, setErrorMessageType] = useState(MessageBarType.success);\r\n const [showMessageBarOnDashboard, setshowMessageBarOnDashboard] = useState<boolean>(false);\r\n const resetDashboardMessageBarChoice = useCallback(() => setshowMessageBarOnDashboard(false), []);\r\n const [filteredPartnerAccount, setfilteredPartnerAccount] = useState<IAccount[] | undefined>(undefined);\r\n const [gridDataState, setGridDataState] = useState<any>();\r\n\r\n\r\n\r\n const getCPStrategicCaseView = async (pageNumber?: number, dataState?: any, pageChanged?: boolean) => {\r\n try {\r\n setIsRefreshed(false);\r\n const userSession = getUserSession();\r\n if (userSession != null) {\r\n setIsCaseLoading(true);\r\n let tpids: Array<string> = [];\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n let sort: any\r\n let filter: any\r\n var searchedCaseNumber = \"\";\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(dataState)) {\r\n sort = dataState.sort[0].field + \" \" + dataState.sort[0].dir\r\n Date.prototype.toJSON = function(){ return moment(this).format(); }\r\n filter = JSON.stringify(dataState.filter);\r\n searchedCaseNumber = dataState?.filter?.filters[0]?.filters[0]?.field === \"opportunityName\" \r\n ? dataState.filter.filters[0].filters[0].value\r\n : \"\";\r\n }\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(loggedInUserInfo) && !JavaScriptExtensions.isNullOrUndfinedOrEmpty(loggedInUserInfo.userRoleDetails)) {\r\n let roles = userRoles.split(\",\");\r\n\r\n if (loggedInUserInfo.userRoleDetails?.some((userRoleDetail: IUserRoleDetail) => userRoleDetail.userRole === UserRole.MSSeller)) {\r\n roles.push(UserSubRole.MSSeller);\r\n const surfaceSpecialistUserDetails: Array<IUserRoleDetail> = loggedInUserInfo.userRoleDetails?.filter((userRoleDetail: IUserRoleDetail) => userRoleDetail.userSubRole === UserSubRole.SurfaceSpecialist);\r\n tpids = surfaceSpecialistUserDetails.flatMap(x => (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(x.tpid) ? x.tpid : [])) as Array<string>;\r\n }\r\n\r\n var resellerOrDistributorFilters : IAccount[] = [];\r\n if(filteredPartnerAccount != undefined && filteredPartnerAccount.length != 0){\r\n resellerOrDistributorFilters = filteredPartnerAccount\r\n }\r\n const dashboardRequest: IDashboardDataRequest = {\r\n userRoleDetails: loggedInUserInfo.userRoleDetails,\r\n dealType: DealType.CPStrategic,\r\n email: loggedInUserInfo.email,\r\n userRoles: roles.join(\",\"),\r\n tPIDs: tpids,\r\n filter: filter,\r\n pageNumber: pageNumber,\r\n recordsToFetch: KendoGridProps.filter(x => x.gridName === selectedPivot)[0].recordsToFetch,\r\n sort: sort,\r\n isAllCasesDashboardRequest: false,\r\n isLocalEmpowerment: false,\r\n organizationId: loggedInUserInfo.organizationId,\r\n resellerOrDistributorFilters: resellerOrDistributorFilters\r\n };\r\n\r\n if(cpStrategicCaseViewGridData.filter(dt => dt.opportunityName === searchedCaseNumber).length == 0){\r\n let apiReturnedData = await Promise.resolve(nextGenService.getPricingProgramDashboardData(dashboardRequest));\r\n if (apiReturnedData.status === 200) {\r\n dashboardData = apiReturnedData.data.item1.map((item: IOpportunityDeal) => ({\r\n ...item,\r\n expirationDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.expirationDate) ? item.expirationDate : new Date(item.expirationDate as Date)),\r\n caseStartDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.caseStartDate) ? item.caseStartDate : new Date(item.caseStartDate as Date))\r\n }));\r\n const cpStrategicCaseViewData = dashboardData.filter((x) => !x.isCaseAssociatedWithTPID)\r\n if(pageChanged === undefined || pageChanged === false)\r\n {\r\n setCPStrategicCaseViewGridData(cpStrategicCaseViewData);\r\n }\r\n else\r\n {\r\n setCPStrategicCaseViewGridData(cpStrategicCaseViewGridData => unionBy([...cpStrategicCaseViewGridData, ...cpStrategicCaseViewData], x => x.opportunityName));\r\n }\r\n const casesAssociatedWithTPID = dashboardData.filter((x) => x.isCaseAssociatedWithTPID);\r\n if(pageChanged === undefined || pageChanged === false)\r\n {\r\n setCPStrategicDealReportGridData(casesAssociatedWithTPID);\r\n }\r\n else\r\n {\r\n setCPStrategicDealReportGridData(casesAssociatedWithTPID ? (cpStrategicDealReportGridData => unionBy([...cpStrategicDealReportGridData, ...casesAssociatedWithTPID], x => x.opportunityName)) : []);\r\n }\r\n if(pageChanged === undefined || pageChanged === false)\r\n {\r\n setCPStrategicCompleteGridData(unionBy([...cpStrategicCaseViewData, ...casesAssociatedWithTPID], x => x.id));\r\n }\r\n else\r\n {\r\n setCPStrategicCompleteGridData(cpStrategicCompleteGridData => unionBy([...cpStrategicCompleteGridData, ...cpStrategicCaseViewData, ...casesAssociatedWithTPID], x => x.id));\r\n }\r\n setSqlRecordCount(apiReturnedData.data.item2.CPStrategicDeals + sqlRecordCount)\r\n setIsCaseLoading(false);\r\n } else {\r\n setIsCaseLoading(false);\r\n }\r\n }else {\r\n setIsCaseLoading(false);\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n setIsCaseLoading(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if(isRefreshed){\r\n onRefresh()\r\n }\r\n \r\n }, [isRefreshed]);\r\n\r\n useEffect(() => {\r\n if(filteredPartnerAccount != undefined){\r\n setIsRefreshed(true);\r\n }\r\n }, [filteredPartnerAccount]);\r\n\r\n useEffect(() => {\r\n if(cpStrategicCaseViewGridData.length == 0 && cpStrategicDealReportGridData.length == 0 && isRefreshed){\r\n setIsRefreshed(false)\r\n setpageNumber(1)\r\n setSqlRecordCount(0)\r\n getCPStrategicCaseView(1, gridDataState)\r\n }\r\n }, [cpStrategicCaseViewGridData, cpStrategicDealReportGridData]);\r\n\r\n useEffect(() => {\r\n var activeDashboardConfig = KendoGridProps.filter(x => x.gridName === selectedPivot)\r\n let cpStrategicGridData = getCPStrategicGridData(selectedPivot);\r\n activeDashboardConfig[0].data = cpStrategicGridData\r\n activeDashboardConfig[0].totalRecords = cpStrategicGridData.length;\r\n activeDashboardConfig[0] = populateGridColumns(activeDashboardConfig[0])\r\n activeDashboardConfig[0].noOfRecords = getPageNumberFromSession(activeDashboardConfig[0])\r\n setactiveTabConfig(activeDashboardConfig);\r\n }, [cpStrategicCaseViewGridData, cpStrategicDealReportGridData])\r\n\r\n useEffect(() => {\r\n activeDashboardConfig[0] = populateGridColumns(activeDashboardConfig[0])\r\n activeDashboardConfig[0].noOfRecords = getPageNumberFromSession(activeDashboardConfig[0])\r\n setactiveTabConfig(activeDashboardConfig);\r\n if (props.onAddToCaseCallBack === GridType.CPStrategicCaseView) {\r\n getCPStrategicCaseView(1);\r\n }\r\n }, [props.onAddToCaseCallBack]);\r\n\r\n const onGetDataRequest = (dataState: any, isSortingOrFilterAppliedOrRemoved?: boolean) => {\r\n setGridDataState(dataState);\r\n if ((((cpStrategicCompleteGridData.length - dataState.skip) <= dataState.take) || isSortingOrFilterAppliedOrRemoved === true)) {\r\n var pageNo = (!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null) ? pageNumber + 1 : 1;\r\n if(!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null)\r\n {\r\n setpageNumber(count => count + 1)\r\n }\r\n else\r\n {\r\n setpageNumber(1);\r\n }\r\n getCPStrategicCaseView(pageNo, dataState, !isSortingOrFilterAppliedOrRemoved)\r\n }\r\n }\r\n\r\n const getCPStrategicGridData = (selectedPivot: string) => {\r\n if (selectedPivot == GridType.CPStrategicCaseView) {\r\n return cpStrategicCaseViewGridData;\r\n }\r\n else {\r\n return cpStrategicDealReportGridData;\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getCPStrategicCaseView(pageNumber)\r\n }, [])\r\n\r\n useEffect(() => {\r\n var kPagerNumbers = document.querySelectorAll('.k-pager-numbers .k-link');\r\n kPagerNumbers.forEach((kPagerNumber) => {\r\n if (kPagerNumber.innerHTML === \"...\") {\r\n kPagerNumber.setAttribute('aria-label', getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"PaginationEllipsisLabel\", UIControlsText.PaginationEllipsisLabel));\r\n } else {\r\n kPagerNumber.setAttribute('aria-label', 'Page ' + kPagerNumber.innerHTML);\r\n }\r\n });\r\n });\r\n const onPivotChange = (item: CoherencePivotTabProps) => {\r\n if (item.key) {\r\n setSelectedPivot(item.key);\r\n\r\n const userRoleDetails = getLoggedinUserRoleDetails();\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(userRoleDetails)) {\r\n let isSurfaceSpecialist = userRoleDetails.some((userRoleDetail: IUserRoleDetail) => userRoleDetail.userSubRole === UserSubRole.SurfaceSpecialist);\r\n if (!isSurfaceSpecialist && item.key !== GridType.CPStrategicDealReport) {\r\n let config = KendoGridProps.filter((x) => x.gridName === item.key);\r\n config[0].data = cpStrategicCaseViewGridData;\r\n config[0].totalRecords = cpStrategicCaseViewGridData.length;\r\n setactiveTabConfig(config);\r\n }\r\n }\r\n }\r\n };\r\n\r\n //render tabs for dashboard\r\n const renderTabs = () => {\r\n KendoGridProps.sort((a, b) => (a.displayOrder > b.displayOrder ? 1 : -1));\r\n KendoGridProps.forEach((eachConfig: any) => {\r\n if (eachConfig.allowCaseView[0].userRoles?.some((r: any) => userRole.includes(r))) {\r\n let thisPivot = { name: eachConfig.gridName, key: eachConfig.gridName }\r\n renderDashboradTabs.push(thisPivot);\r\n }\r\n });\r\n };\r\n renderTabs();\r\n\r\n function addCase() {\r\n return (!userRole.includes(UserSubRole.ADD)) ? \"\" : (<CommandBarButton onClick={() => { setHideDialog(false); }}>\r\n <div className={_Styles.CommandBarButton}>\r\n <FontIcon className={_Styles.DashboardIcons} aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddCaseAriaLabel\", UIControlsText.AddCaseAriaLabel)} iconName={CssClassConstants.CirclePlusIconName}></FontIcon>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.AddCasToDashboard}</span>\r\n </div>\r\n </CommandBarButton>)\r\n }\r\n\r\n const initiateRefresh = () => {\r\n setIsRefreshed(true)\r\n }\r\n\r\n const onRefresh = () => {\r\n if(isRefreshed){\r\n let gridConfig = { ...activeTabConfig }\r\n gridConfig[0] = populateGridColumns(gridConfig[0])\r\n gridConfig[0].noOfRecords = getPageNumberFromSession(gridConfig[0])\r\n gridConfig[0].isRefresh = true\r\n gridConfig[0].data = []\r\n gridConfig[0].customGridMessage = \"\"\r\n setactiveTabConfig(gridConfig);\r\n setCPStrategicCaseViewGridData([])\r\n setCPStrategicDealReportGridData([])\r\n }\r\n }\r\n const onfilterByPartner = (account: IAccount[] | undefined) => {\r\n setfilteredPartnerAccount(account);\r\n }\r\n const onSuccess = (showMessageBar: boolean, messageType: any, messageText: string, isReloadData: boolean, resetHideDialog: boolean): void => {\r\n\r\n if (resetHideDialog) {\r\n setHideDialog(resetHideDialog);\r\n }\r\n\r\n if (showMessageBar) {\r\n setErrorMessageType(messageType);\r\n setMsgBarText(messageText);\r\n setshowMessageBarOnDashboard(true);\r\n }\r\n if (isReloadData) {\r\n setIsRefreshed(true);\r\n }\r\n };\r\n\r\n function addRefreshIcon() {\r\n return (\r\n <CommandBarButton onClick={initiateRefresh} iconProps={{ iconName: CssClassConstants.RefreshIconName }} ariaLabel={CssClassConstants.RefreshIconName} title=\"Refresh\" styles={RefreshButtonStyles}>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.Refresh}</span>\r\n </CommandBarButton>\r\n )\r\n\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n {(!userRole.includes(UserSubRole.ADD)) ? (\r\n <div id=\"RefreshIconButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>\r\n ) : <div id=\"RefreshButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>}\r\n\r\n <div className={CssClassConstants.AddToCaseButtonClass}>\r\n {addCase()}\r\n </div>\r\n <div data-nextgen-parent-group=\"Dashboard - CP Strategic cases\" data-nextgen-parentid= \"Dashboard - CP Strategic cases\">\r\n <Stack>\r\n { userRoles.includes(UserSubRole.ADD) &&\r\n <Row className=\"text-center mt-2 ms-Label\">\r\n <Stack>\r\n <DashboardSearch {...{onfilterByPartner : onfilterByPartner } }/>\r\n </Stack>\r\n </Row>\r\n }\r\n <Row>\r\n {showMessageBarOnDashboard && (\r\n <Stack>\r\n <div>\r\n <MessageBar messageBarType={errorMessageType} onDismiss={resetDashboardMessageBarChoice} dismissButtonAriaLabel=\"Close\" isMultiline={true}>\r\n {msgBarText}\r\n </MessageBar>\r\n </div>\r\n </Stack>\r\n )}\r\n </Row>\r\n <Row>\r\n {isCaseLoading &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingCases\", UIControlsText.LoadingCases)} />\r\n </div>\r\n </Stack>\r\n }\r\n </Row>\r\n <Row>\r\n <CoherencePivot className=\"tabListStyle\"\r\n useGrayPivot={useGrayPivot}\r\n onTabSelected={onPivotChange}\r\n selectedKey={selectedPivot}\r\n tabs={[...renderDashboradTabs]}\r\n />\r\n </Row> \r\n <Stack horizontal tokens={stackTokens}>\r\n <PivotContent selectedKey={selectedPivot}>\r\n <PivotContentItem itemKey={GridType.CPStrategicCaseView} key={GridType.CPStrategicCaseView}>\r\n <DashboardGrid {...{ kendoGridProps: { ...activeTabConfig[0] }, onGetDataRequest: onGetDataRequest } } />\r\n <div id=\"footerPadding\"></div>\r\n </PivotContentItem>\r\n </PivotContent>\r\n <PivotContent selectedKey={selectedPivot}>\r\n <PivotContentItem itemKey={GridType.CPStrategicDealReport} key={GridType.CPStrategicDealReport}>\r\n <CPStrategicDealReportGrid {...{ opportunitDeals: cpStrategicDealReportGridData , onGetDataRequest: onGetDataRequest }} />\r\n </PivotContentItem>\r\n </PivotContent>\r\n </Stack>\r\n </Stack>\r\n </div> \r\n {/* Add Case Model */}\r\n <AddToCase {...{ hideDialog: hideDialog, onSuccess }} />\r\n </React.Fragment>\r\n );\r\n};\r\n","import { FC, Fragment, useCallback, useEffect, useState } from \"react\";\r\nimport { populateGridColumns, getUserRole, getUserSession, readGridConfig, getPageNumberFromSession, getRuleValidationMessage, getEntityDataFromSession } from \"../../components/shared/common/util\";\r\nimport { GridType } from \"../../models/GridType\";\r\nimport \"../../content/styles/AddCaseGrid.css\";\r\nimport DashboardGrid from \"../../components/shared/grid/dashboardgrid\";\r\nimport { IGridProps } from \"../../components/shared/grid/IGridProps\";\r\nimport { DealType } from \"../../models/DealType\";\r\nimport { IDashboardDataRequest } from \"../../models/IDashboardDataRequest\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { Stack, Spinner, MessageBarType, CommandBarButton, FontIcon, MessageBar, IconButton } from \"office-ui-fabric-react\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { IDashboardGridProps } from \"./props/IDashboardGridProps\";\r\nimport { unionBy } from \"lodash\";\r\nimport { IOpportunityDealDetails } from \"../../models/IOpportunityDealDetails\";\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport { UserSubRole } from \"../../models/UserSubRole\";\r\nimport { RefreshButtonStyles, _Styles } from \"../../content/styles/Page.styles\";\r\nimport { PageConstants } from \"../pageconstants/Constants\";\r\nimport { CssClassConstants } from \"../../content/CssClassConstants\";\r\nimport Row from \"react-bootstrap/esm/Row\";\r\nimport { AddToCase } from \"./add-to-case\";\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { IAccount } from \"../../models/IAccount\";\r\nimport { DashboardSearch } from \"./dashboard-search\";\r\nimport moment from \"moment\";\r\n\r\nexport const DealRegistrationCase: FC<IDashboardGridProps> = (props: IDashboardGridProps) => {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [dealRegistration, setDealRegistration] = useState<IGridProps>(readGridConfig(GridType.DealRegistration));\r\n const [isCaseLoading, setIsCaseLoading] = useState<boolean>(false);\r\n const [isRefreshed, setIsRefreshed] = useState<boolean>(false);\r\n const [pageNumber, setpageNumber] = useState<number>(1)\r\n const [userRoles] = useState<string>(getUserRole());\r\n const [drData, setDRData] = useState<IOpportunityDealDetails[]>([]);\r\n const [sqlRecordCount, setSqlRecordCount] = useState<number>(0);\r\n const [msgBarText, setMsgBarText] = useState<string>();\r\n const [filteredPartnerAccount, setfilteredPartnerAccount] = useState<IAccount[] | undefined>(undefined);\r\n const [hideDialog, setHideDialog] = useState<boolean>(true);\r\n const [errorMessageType, setErrorMessageType] = useState(MessageBarType.success);\r\n const [showMessageBarOnDashboard, setshowMessageBarOnDashboard] = useState<boolean>(false);\r\n const resetDashboardMessageBarChoice = useCallback(() => setshowMessageBarOnDashboard(false), []);\r\n const [gridDataState, setGridDataState] = useState<any>();\r\n\r\n useEffect(() => {\r\n dealRegistration.kendoGridProps = populateGridColumns(dealRegistration.kendoGridProps)\r\n dealRegistration.kendoGridProps.noOfRecords = getPageNumberFromSession(dealRegistration.kendoGridProps)\r\n setDealRegistration(dealRegistration)\r\n getDealRegistration(pageNumber);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.onAddToCaseCallBack === GridType.DealRegistration) {\r\n getDealRegistration(1);\r\n }\r\n }, [props.onAddToCaseCallBack]);\r\n\r\n useEffect(() => {\r\n if(isRefreshed){\r\n onRefresh()\r\n }\r\n }, [isRefreshed]);\r\n\r\n useEffect(() => {\r\n if(drData.length == 0 && isRefreshed){\r\n setIsRefreshed(false)\r\n setSqlRecordCount(0)\r\n setpageNumber(1)\r\n getDealRegistration(1, gridDataState)\r\n }\r\n }, [drData]);\r\n\r\n useEffect(() => {\r\n if(filteredPartnerAccount != undefined){\r\n setIsRefreshed(true);\r\n }\r\n }, [filteredPartnerAccount]);\r\n\r\n const getDealRegistration = async (pageNo?: number, dataState?: any, pageChanged?: boolean) => {\r\n try {\r\n setIsRefreshed(false)\r\n const userSession = getUserSession();\r\n setIsCaseLoading(true);\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n let roles = userRoles.split(\",\");\r\n let sort: any\r\n let filter: any\r\n var searchedCaseNumber = \"\";\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(dataState)) {\r\n if (dataState.sort[0] && !JavaScriptExtensions.isEmptyOrNullOrUndefined(dataState.sort[0].field)) {\r\n sort = dataState.sort[0].field + \" \" + dataState.sort[0].dir\r\n }\r\n Date.prototype.toJSON = function(){ return moment(this).format(); }\r\n filter = JSON.stringify(dataState.filter);\r\n searchedCaseNumber = dataState?.filter?.filters[0]?.filters[0]?.field === \"opportunityName\" \r\n ? dataState.filter.filters[0].filters[0].value\r\n : \"\";\r\n \r\n }\r\n \r\n var resellerOrDistributorFilters : IAccount[] = [];\r\n if(filteredPartnerAccount != undefined && filteredPartnerAccount.length != 0){\r\n resellerOrDistributorFilters = filteredPartnerAccount\r\n }\r\n const dashboardRequest: IDashboardDataRequest = {\r\n userRoleDetails: loggedInUserInfo.userRoleDetails,\r\n dealType: DealType.DealRegistration,\r\n email: loggedInUserInfo.email,\r\n userRoles: roles.join(\",\"),\r\n filter: filter,\r\n pageNumber: pageNo,\r\n recordsToFetch: dealRegistration.kendoGridProps.recordsToFetch,\r\n sort: sort,\r\n isAllCasesDashboardRequest: false,\r\n isLocalEmpowerment: false,\r\n organizationId: loggedInUserInfo.organizationId,\r\n resellerOrDistributorFilters: resellerOrDistributorFilters\r\n };\r\n if(drData.filter(dt => dt.opportunityName === searchedCaseNumber).length == 0){\r\n let apiReturnedData = await Promise.resolve(nextGenService.getPricingProgramDashboardData(dashboardRequest));\r\n if (apiReturnedData.status === 200) {\r\n apiReturnedData.data.item1 = apiReturnedData.data.item1.map((item: IOpportunityDealDetails) => ({\r\n ...item,\r\n expirationDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.expirationDate) ? item.expirationDate : new Date(item.expirationDate as Date)),\r\n caseStartDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.caseStartDate) ? item.caseStartDate : new Date(item.caseStartDate as Date)),\r\n }));\r\n let DRConfig = { ...dealRegistration };\r\n var finalData: IOpportunityDealDetails[]\r\n if(pageChanged === undefined || pageChanged === false) {\r\n finalData = apiReturnedData.data.item1;\r\n }\r\n else {\r\n finalData = [...apiReturnedData.data.item1, ...drData];\r\n }\r\n finalData = unionBy(finalData, x => x.id);\r\n DRConfig.kendoGridProps.data = finalData;\r\n finalData.forEach((element) => {\r\n element.resellerORDistributorNames = element.opportunityAccounts[0].resellerORDistributorNames;\r\n })\r\n setDRData(finalData);\r\n DRConfig.kendoGridProps.totalRecords = finalData.length;\r\n setDealRegistration(DRConfig);\r\n setSqlRecordCount(apiReturnedData.data.item2.NonCPStrategicDeals + sqlRecordCount)\r\n \r\n }\r\n }\r\n dealRegistration.kendoGridProps.customGridMessage = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoRecordsFound\", UIControlsText.NoRecordsFound)\r\n setIsCaseLoading(false);\r\n } catch (error) {\r\n setIsCaseLoading(false);\r\n }\r\n }\r\n\r\n const onGetDataRequest = (dataState: any, isSortingOrFilterAppliedOrRemoved?: boolean) => {\r\n setGridDataState(dataState);\r\n if ((((filterBy(drData || [], dataState.filter).length - dataState.skip) <= dataState.take) || isSortingOrFilterAppliedOrRemoved === true)) {\r\n var pageNo = (!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null) ? pageNumber + 1 : 1;\r\n if(!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null)\r\n {\r\n setpageNumber(count => count + 1)\r\n }\r\n else\r\n {\r\n setpageNumber(1);\r\n }\r\n getDealRegistration(pageNo, dataState, !isSortingOrFilterAppliedOrRemoved)\r\n }\r\n }\r\n\r\n function addCase() {\r\n return (!userRoles.includes(UserSubRole.ADD)) ? \"\" : (<CommandBarButton onClick={() => { setHideDialog(false); }}>\r\n <div className={_Styles.CommandBarButton}>\r\n <FontIcon className={_Styles.DashboardIcons} aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddCaseAriaLabel\", UIControlsText.AddCaseAriaLabel)} iconName={CssClassConstants.CirclePlusIconName}></FontIcon>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.AddCasToDashboard}</span>\r\n </div>\r\n </CommandBarButton>)\r\n }\r\n\r\n const initiateRefresh = () => {\r\n setIsRefreshed(true)\r\n }\r\n const onRefresh = () => {\r\n if(isRefreshed){\r\n let DrConfig = { ...dealRegistration }\r\n DrConfig.kendoGridProps.isRefresh = true\r\n DrConfig.kendoGridProps.data = []\r\n DrConfig.kendoGridProps = populateGridColumns(dealRegistration.kendoGridProps)\r\n DrConfig.kendoGridProps.noOfRecords = getPageNumberFromSession(dealRegistration.kendoGridProps)\r\n DrConfig.kendoGridProps.customGridMessage = \"\"\r\n setDealRegistration(DrConfig)\r\n setDRData([])\r\n }\r\n }\r\n\r\n const onfilterByPartner = (account: IAccount[] | undefined) => {\r\n setfilteredPartnerAccount(account);\r\n }\r\n\r\n const onSuccess = (showMessageBar: boolean, messageType: any, messageText: string, isReloadData: boolean, resetHideDialog: boolean): void => {\r\n\r\n if (resetHideDialog) {\r\n setHideDialog(resetHideDialog);\r\n }\r\n\r\n if (showMessageBar) {\r\n setErrorMessageType(messageType);\r\n setMsgBarText(messageText);\r\n setshowMessageBarOnDashboard(true);\r\n }\r\n if (isReloadData) {\r\n setIsRefreshed(true)\r\n }\r\n };\r\n\r\n function addRefreshIcon() {\r\n return (\r\n <CommandBarButton onClick={initiateRefresh} iconProps={{ iconName: CssClassConstants.RefreshIconName }} ariaLabel={CssClassConstants.RefreshIconName} title=\"Refresh\" styles={RefreshButtonStyles}>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.Refresh}</span>\r\n </CommandBarButton>\r\n )\r\n\r\n }\r\n return (\r\n <Fragment>\r\n {(!userRoles.includes(UserSubRole.ADD)) ? (\r\n <div id=\"RefreshIconButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>\r\n ) : <div id=\"RefreshButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>}\r\n <div className={CssClassConstants.AddToCaseButtonClass}>\r\n {addCase()}\r\n </div>\r\n <div data-nextgen-parent-group=\"Dashboard - Deal registration cases\" data-nextgen-parentid= \"Dashboard - Deal registration cases\">\r\n <Stack >\r\n { userRoles.includes(UserSubRole.ADD) &&\r\n <Row className=\"text-center mt-2 ms-Label\">\r\n <Stack>\r\n <DashboardSearch {...{onfilterByPartner : onfilterByPartner } }/>\r\n </Stack>\r\n </Row>\r\n }\r\n <Row>\r\n {showMessageBarOnDashboard && (\r\n <Stack>\r\n <div>\r\n <MessageBar messageBarType={errorMessageType} onDismiss={resetDashboardMessageBarChoice} dismissButtonAriaLabel=\"Close\" isMultiline={true}>\r\n {msgBarText}\r\n </MessageBar>\r\n </div>\r\n </Stack>\r\n )}\r\n </Row>\r\n {isCaseLoading &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingCases\", UIControlsText.LoadingCases)} />\r\n </div>\r\n </Stack>\r\n }\r\n <DashboardGrid\r\n {...{\r\n\r\n kendoGridProps: { ...dealRegistration.kendoGridProps }, onGetDataRequest: onGetDataRequest\r\n\r\n }}\r\n />\r\n <div id=\"footerPadding\"></div>\r\n </Stack>\r\n </div> \r\n {/* Add Case Model */}\r\n <AddToCase {...{ hideDialog: hideDialog, onSuccess }} />\r\n </Fragment>\r\n );\r\n};","import { FC, Fragment, useCallback, useEffect, useState } from \"react\";\r\nimport { populateGridColumns, getUserRole, getUserSession, readGridConfig, getPageNumberFromSession, getRuleValidationMessage, getEntityDataFromSession } from \"../../components/shared/common/util\";\r\nimport { GridType } from \"../../models/GridType\";\r\nimport \"../../content/styles/AddCaseGrid.css\";\r\nimport DashboardGrid from \"../../components/shared/grid/dashboardgrid\";\r\nimport { IGridProps } from \"../../components/shared/grid/IGridProps\";\r\nimport { DealType } from \"../../models/DealType\";\r\nimport { IDashboardDataRequest } from \"../../models/IDashboardDataRequest\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { Stack, Spinner, MessageBar, CommandBarButton, FontIcon, MessageBarType } from \"office-ui-fabric-react\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { IOpportunityDealProductSku } from \"../../models/IOpportunityDealProductSku\";\r\nimport { CssClassConstants } from \"../../content/CssClassConstants\";\r\nimport { AddToCase } from \"./add-to-case\";\r\nimport Row from \"react-bootstrap/esm/Row\";\r\nimport { UserSubRole } from \"../../models/UserSubRole\";\r\nimport { RefreshButtonStyles, _Styles } from \"../../content/styles/Page.styles\";\r\nimport { PageConstants } from \"../pageconstants/Constants\";\r\nimport { IconButton } from \"@fluentui/react\";\r\nimport { Guid } from \"../../infrastructure/Guid\";\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\n\r\n\r\nexport const SpecialPricingProductInformation: FC = () => {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [productInformation, setproductInformation] = useState<IGridProps>(readGridConfig(GridType.ProductInformationView));\r\n const [isCaseLoading, setIsCaseLoading] = useState<boolean>(false);\r\n const [pageNumber, setpageNumber] = useState<number>(1)\r\n const [userRoles] = useState<string>(getUserRole());\r\n const [productInformationData, setproductInformationData] = useState<IOpportunityDealProductSku[]>([]);\r\n const [msgBarText, setMsgBarText] = useState<string>();\r\n const [hideDialog, setHideDialog] = useState<boolean>(true);\r\n const [errorMessageType, setErrorMessageType] = useState(MessageBarType.success);\r\n const [showMessageBarOnDashboard, setshowMessageBarOnDashboard] = useState<boolean>(false);\r\n const resetDashboardMessageBarChoice = useCallback(() => setshowMessageBarOnDashboard(false), []);\r\n\r\n useEffect(() => {\r\n productInformation.kendoGridProps = populateGridColumns(productInformation.kendoGridProps)\r\n productInformation.kendoGridProps.noOfRecords = getPageNumberFromSession(productInformation.kendoGridProps)\r\n setproductInformation(productInformation)\r\n getProductInformationData(pageNumber)\r\n }, []);\r\n\r\n const getProductInformationData = async (pageNo?: number, dataState?: any) => {\r\n try {\r\n const userSession = getUserSession();\r\n setIsCaseLoading(true);\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n let roles = userRoles.split(\",\");\r\n let sort: any\r\n let filter: any\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(dataState)) {\r\n if (dataState.sort[0] && !JavaScriptExtensions.isEmptyOrNullOrUndefined(dataState.sort[0].field)) {\r\n sort = dataState.sort[0].field + \" \" + dataState.sort[0].dir\r\n }\r\n filter = JSON.stringify(dataState.filter)\r\n }\r\n const dashboardRequest: IDashboardDataRequest = {\r\n userRoleDetails: loggedInUserInfo.userRoleDetails,\r\n dealType: DealType.SpecialPricing,\r\n email: loggedInUserInfo.email,\r\n userRoles: roles.join(\",\"),\r\n filter: filter,\r\n pageNumber: pageNo,\r\n recordsToFetch: productInformation.kendoGridProps.recordsToFetch,\r\n sort: sort,\r\n isAllCasesDashboardRequest: false,\r\n };\r\n let apiReturnedData = await Promise.resolve(nextGenService.getProductinformationDashboardData(dashboardRequest));\r\n if (apiReturnedData.status === 200) {\r\n apiReturnedData.data = apiReturnedData.data.map((item: IOpportunityDealProductSku) => ({\r\n ...item,\r\n dealPeriodStartDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.dealPeriodStartDate) ? item.dealPeriodStartDate : new Date(item.dealPeriodStartDate as Date)),\r\n dealPeriodEndDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.dealPeriodEndDate) ? item.dealPeriodEndDate : new Date(item.dealPeriodEndDate as Date)),\r\n }));\r\n let spConfig = { ...productInformation };\r\n var finalData: IOpportunityDealProductSku[] = [...apiReturnedData.data, ...productInformationData];\r\n spConfig.kendoGridProps.data = finalData;\r\n finalData.forEach((element) => {\r\n element.id = Guid.newGuid()\r\n })\r\n setproductInformationData(finalData);\r\n spConfig.kendoGridProps.totalRecords = finalData.length;\r\n setproductInformation(spConfig);\r\n }\r\n productInformation.kendoGridProps.customGridMessage = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoRecordsFound\", UIControlsText.NoRecordsFound)\r\n setIsCaseLoading(false);\r\n } catch (error) {\r\n productInformation.kendoGridProps.customGridMessage = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoRecordsFound\", UIControlsText.NoRecordsFound)\r\n setIsCaseLoading(false);\r\n }\r\n\r\n }\r\n\r\n const onGetDataRequest = (dataState: any, isSortingOrFilterAppliedOrRemoved?: boolean) => {\r\n if ((((productInformation.kendoGridProps.data.length - dataState.skip) <= dataState.take) || isSortingOrFilterAppliedOrRemoved === true)) {\r\n var pageNo = (!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null) ? Math.round(((productInformation.kendoGridProps.data.length / productInformation.kendoGridProps.recordsToFetch) + 1)) : 1;\r\n setpageNumber(pageNo);\r\n getProductInformationData(pageNo, dataState)\r\n }\r\n }\r\n\r\n function addCase() {\r\n return (!userRoles.includes(UserSubRole.ADD)) ? \"\" : (<CommandBarButton onClick={() => { setHideDialog(false); }}>\r\n <div className={_Styles.CommandBarButton}>\r\n <FontIcon className={_Styles.DashboardIcons} aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddCaseAriaLabel\", UIControlsText.AddCaseAriaLabel)} iconName={CssClassConstants.CirclePlusIconName}></FontIcon>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.AddCasToDashboard}</span>\r\n </div>\r\n </CommandBarButton>)\r\n }\r\n\r\n const onRefresh = () => {\r\n let productConfig = { ...productInformation };\r\n productConfig.kendoGridProps.data = []\r\n productConfig.kendoGridProps.isRefresh = true\r\n productConfig.kendoGridProps = populateGridColumns(productConfig.kendoGridProps)\r\n productConfig.kendoGridProps.noOfRecords = getPageNumberFromSession(productConfig.kendoGridProps)\r\n setproductInformation(productConfig)\r\n productConfig.kendoGridProps.customGridMessage = \"\"\r\n setpageNumber(1)\r\n setproductInformationData([])\r\n getProductInformationData(1)\r\n }\r\n\r\n const onSuccess = (showMessageBar: boolean, messageType: any, messageText: string, isReloadData: boolean, resetHideDialog: boolean): void => {\r\n\r\n if (resetHideDialog) {\r\n setHideDialog(resetHideDialog);\r\n }\r\n\r\n if (showMessageBar) {\r\n setErrorMessageType(messageType);\r\n setMsgBarText(messageText);\r\n setshowMessageBarOnDashboard(true);\r\n }\r\n if (isReloadData) {\r\n onRefresh()\r\n }\r\n };\r\n\r\n function addRefreshIcon() {\r\n return (\r\n <CommandBarButton onClick={onRefresh} iconProps={{ iconName: CssClassConstants.RefreshIconName }} ariaLabel={CssClassConstants.RefreshIconName} title=\"Refresh\" styles={RefreshButtonStyles}>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.Refresh}</span>\r\n </CommandBarButton>\r\n )\r\n\r\n }\r\n\r\n return (\r\n <Fragment>\r\n {(!userRoles.includes(UserSubRole.ADD)) ? (\r\n <div id=\"RefreshIconButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>\r\n ) : <div id=\"RefreshButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>}\r\n <div className={CssClassConstants.AddToCaseButtonClass}>\r\n {addCase()}\r\n </div>\r\n <div data-nextgen-parent-group=\"Dashboard - Product Information\" data-nextgen-parentid=\"Dashboard - Product Information\">\r\n <Stack>\r\n <Row>\r\n {showMessageBarOnDashboard && (\r\n <Stack>\r\n <div>\r\n <MessageBar messageBarType={errorMessageType} onDismiss={resetDashboardMessageBarChoice} dismissButtonAriaLabel=\"Close\" isMultiline={true}>\r\n {msgBarText}\r\n </MessageBar>\r\n </div>\r\n </Stack>\r\n )}\r\n </Row>\r\n {isCaseLoading &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingCases\", UIControlsText.LoadingCases)} />\r\n </div>\r\n </Stack>\r\n }\r\n <DashboardGrid\r\n {...{\r\n\r\n kendoGridProps: { ...productInformation.kendoGridProps }, onGetDataRequest: onGetDataRequest\r\n\r\n }}\r\n />\r\n </Stack>\r\n </div> \r\n <Stack horizontalAlign=\"end\">\r\n {getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"ProductinformationFooterText\", UIControlsText.ProductinformationFooterText)}\r\n </Stack>\r\n <div id=\"footerPadding\"></div>\r\n {/* Add Case Model */}\r\n <AddToCase {...{ hideDialog: hideDialog, onSuccess }} />\r\n </Fragment>\r\n );\r\n};","import { FC, Fragment, useCallback, useEffect, useState } from \"react\";\r\nimport { populateGridColumns, getUserRole, getUserSession, readGridConfig, getPageNumberFromSession, getRuleValidationMessage, getEntityDataFromSession } from \"../../components/shared/common/util\";\r\nimport { GridType } from \"../../models/GridType\";\r\nimport \"../../content/styles/AddCaseGrid.css\";\r\nimport DashboardGrid from \"../../components/shared/grid/dashboardgrid\";\r\nimport { IGridProps } from \"../../components/shared/grid/IGridProps\";\r\nimport { DealType } from \"../../models/DealType\";\r\nimport { IDashboardDataRequest } from \"../../models/IDashboardDataRequest\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { Stack, Spinner, MessageBarType, CommandBarButton, FontIcon, MessageBar, IconButton } from \"office-ui-fabric-react\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { IDashboardGridProps } from \"./props/IDashboardGridProps\";\r\nimport { unionBy } from \"lodash\";\r\nimport { IOpportunityDealDetails } from \"../../models/IOpportunityDealDetails\";\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport { CssClassConstants } from \"../../content/CssClassConstants\";\r\nimport { UserSubRole } from \"../../models/UserSubRole\";\r\nimport { RefreshButtonStyles, _Styles } from \"../../content/styles/Page.styles\";\r\nimport { PageConstants } from \"../pageconstants/Constants\";\r\nimport Row from \"react-bootstrap/esm/Row\";\r\nimport { AddToCase } from \"./add-to-case\";\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { DashboardSearch } from \"./dashboard-search\";\r\nimport { IAccount } from \"../../models/IAccount\";\r\nimport moment from \"moment\";\r\n\r\n\r\nexport const SpecialPricing: FC<IDashboardGridProps> = (props: IDashboardGridProps) => {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [specialPricing, setSpecialPricing] = useState<IGridProps>(readGridConfig(GridType.SpecialPricing));\r\n const [isCaseLoading, setIsCaseLoading] = useState<boolean>(false);\r\n const [isRefreshed, setIsRefreshed] = useState<boolean>(false);\r\n const [pageNumber, setpageNumber] = useState<number>(1)\r\n const [userRoles] = useState<string>(getUserRole());\r\n const [spData, setSpData] = useState<IOpportunityDealDetails[]>([]);\r\n const [sqlRecordCount, setSqlRecordCount] = useState<number>(0)\r\n const [msgBarText, setMsgBarText] = useState<string>();\r\n const [filteredPartnerAccount, setfilteredPartnerAccount] = useState<IAccount[] | undefined>(undefined);\r\n const [hideDialog, setHideDialog] = useState<boolean>(true);\r\n const [errorMessageType, setErrorMessageType] = useState(MessageBarType.success);\r\n const [showMessageBarOnDashboard, setshowMessageBarOnDashboard] = useState<boolean>(false);\r\n const resetDashboardMessageBarChoice = useCallback(() => setshowMessageBarOnDashboard(false), []);\r\n const [gridDataState, setGridDataState] = useState<any>();\r\n\r\n useEffect(() => {\r\n specialPricing.kendoGridProps = populateGridColumns(specialPricing.kendoGridProps)\r\n specialPricing.kendoGridProps.noOfRecords = getPageNumberFromSession(specialPricing.kendoGridProps)\r\n setSpecialPricing(specialPricing)\r\n getSpecialPricingCases(pageNumber)\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.onAddToCaseCallBack === GridType.SpecialPricing) {\r\n getSpecialPricingCases(1);\r\n }\r\n }, [props.onAddToCaseCallBack]);\r\n\r\n \r\n useEffect(() => {\r\n if(isRefreshed){\r\n onRefresh()\r\n }\r\n }, [isRefreshed]);\r\n\r\n useEffect(() => {\r\n if(spData.length == 0 && isRefreshed){\r\n setIsRefreshed(false)\r\n setSqlRecordCount(0)\r\n setpageNumber(1)\r\n getSpecialPricingCases(1, gridDataState)\r\n }\r\n }, [spData]);\r\n\r\n useEffect(() => {\r\n if(filteredPartnerAccount != undefined){\r\n setIsRefreshed(true);\r\n }\r\n }, [filteredPartnerAccount]);\r\n\r\n const getSpecialPricingCases = async (pageNo?: number, dataState?: any, pageChanged?: boolean) => {\r\n try {\r\n setIsRefreshed(false);\r\n const userSession = getUserSession();\r\n setIsCaseLoading(true);\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n let roles = userRoles.split(\",\");\r\n let sort: any\r\n let filter: any\r\n var searchedCaseNumber = \"\";\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(dataState)) {\r\n if (dataState.sort[0] && !JavaScriptExtensions.isEmptyOrNullOrUndefined(dataState.sort[0].field)) {\r\n sort = dataState.sort[0].field + \" \" + dataState.sort[0].dir\r\n }\r\n Date.prototype.toJSON = function(){ return moment(this).format(); }\r\n filter = JSON.stringify(dataState.filter)\r\n searchedCaseNumber = dataState?.filter?.filters[0]?.filters[0]?.field === \"opportunityName\" \r\n ? dataState.filter.filters[0].filters[0].value\r\n : \"\";\r\n }\r\n var resellerOrDistributorFilters : IAccount[] = [];\r\n if(filteredPartnerAccount != undefined && filteredPartnerAccount.length != 0){\r\n resellerOrDistributorFilters = filteredPartnerAccount\r\n }\r\n const dashboardRequest: IDashboardDataRequest = {\r\n userRoleDetails: loggedInUserInfo.userRoleDetails,\r\n dealType: DealType.SpecialPricing,\r\n email: loggedInUserInfo.email,\r\n userRoles: roles.join(\",\"),\r\n filter: filter,\r\n pageNumber: pageNo,\r\n recordsToFetch: specialPricing.kendoGridProps.recordsToFetch,\r\n sort: sort,\r\n isAllCasesDashboardRequest: false,\r\n isLocalEmpowerment: false,\r\n organizationId: loggedInUserInfo.organizationId,\r\n resellerOrDistributorFilters: resellerOrDistributorFilters\r\n };\r\n if(spData.filter(dt => dt.opportunityName === searchedCaseNumber).length == 0){\r\n let apiReturnedData = await Promise.resolve(nextGenService.getPricingProgramDashboardData(dashboardRequest));\r\n if (apiReturnedData.status === 200) {\r\n apiReturnedData.data.item1 = apiReturnedData.data.item1.map((item: IOpportunityDealDetails) => ({\r\n ...item,\r\n expirationDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.expirationDate) ? item.expirationDate : new Date(item.expirationDate as Date)),\r\n caseStartDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.caseStartDate) ? item.caseStartDate : new Date(item.caseStartDate as Date)),\r\n }));\r\n let spConfig = { ...specialPricing };\r\n var finalData: IOpportunityDealDetails[]\r\n if(pageChanged === undefined || pageChanged === false) {\r\n finalData = apiReturnedData.data.item1;\r\n }\r\n else {\r\n finalData = [...apiReturnedData.data.item1, ...spData];\r\n }\r\n finalData = unionBy(finalData, x => x.id);\r\n finalData.forEach((element) => {\r\n element.resellerORDistributorNames = element.opportunityAccounts[0].resellerORDistributorNames;\r\n })\r\n spConfig.kendoGridProps.data = finalData;\r\n setSpData(finalData);\r\n spConfig.kendoGridProps.totalRecords = finalData.length;\r\n setSpecialPricing(spConfig);\r\n setSqlRecordCount(apiReturnedData.data.item2.NonCPStrategicDeals + sqlRecordCount)\r\n }\r\n }\r\n specialPricing.kendoGridProps.customGridMessage = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoRecordsFound\", UIControlsText.NoRecordsFound)\r\n setIsCaseLoading(false);\r\n } catch (error) {\r\n setIsCaseLoading(false);\r\n }\r\n }\r\n\r\n const onGetDataRequest = (dataState: any, isSortingOrFilterAppliedOrRemoved?: boolean) => {\r\n setGridDataState(dataState);\r\n if ((((filterBy(spData || [], dataState.filter).length - dataState.skip) <= dataState.take) || isSortingOrFilterAppliedOrRemoved === true)) {\r\n var pageNo = (!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null) ? pageNumber + 1 : 1;\r\n if(!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null)\r\n {\r\n setpageNumber(count => count + 1)\r\n }\r\n else\r\n {\r\n setpageNumber(1);\r\n }\r\n getSpecialPricingCases(pageNo, dataState, !isSortingOrFilterAppliedOrRemoved)\r\n }\r\n }\r\n\r\n\r\n function addCase() {\r\n return (!userRoles.includes(UserSubRole.ADD)) ? \"\" : (<CommandBarButton onClick={() => { setHideDialog(false); }}>\r\n <div className={_Styles.CommandBarButton}>\r\n <FontIcon className={_Styles.DashboardIcons} aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddCaseAriaLabel\", UIControlsText.AddCaseAriaLabel)} iconName={CssClassConstants.CirclePlusIconName}></FontIcon>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.AddCasToDashboard}</span>\r\n </div>\r\n </CommandBarButton>)\r\n }\r\n\r\n const initiateRefresh = () => {\r\n setIsRefreshed(true)\r\n }\r\n\r\n const onRefresh = () => {\r\n if(isRefreshed){\r\n let spConfig = { ...specialPricing };\r\n spConfig.kendoGridProps.isRefresh = true\r\n spConfig.kendoGridProps.data = []\r\n spConfig.kendoGridProps = populateGridColumns(spConfig.kendoGridProps)\r\n spConfig.kendoGridProps.noOfRecords = getPageNumberFromSession(spConfig.kendoGridProps)\r\n setSpecialPricing(spConfig)\r\n spConfig.kendoGridProps.customGridMessage = \"\"\r\n setSpData([])\r\n }\r\n }\r\n\r\n const onfilterByPartner = (account: IAccount[] | undefined) => {\r\n setfilteredPartnerAccount(account);\r\n }\r\n\r\n\r\n const onSuccess = (showMessageBar: boolean, messageType: any, messageText: string, isReloadData: boolean, resetHideDialog: boolean): void => {\r\n\r\n if (resetHideDialog) {\r\n setHideDialog(resetHideDialog);\r\n }\r\n\r\n if (showMessageBar) {\r\n setErrorMessageType(messageType);\r\n setMsgBarText(messageText);\r\n setshowMessageBarOnDashboard(true);\r\n }\r\n if (isReloadData) {\r\n setIsRefreshed(true);\r\n }\r\n };\r\n\r\n function addRefreshIcon() {\r\n return (\r\n <CommandBarButton onClick={initiateRefresh} iconProps={{ iconName: CssClassConstants.RefreshIconName }} ariaLabel={CssClassConstants.RefreshIconName} title=\"Refresh\" styles={RefreshButtonStyles}>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.Refresh}</span>\r\n </CommandBarButton>\r\n )\r\n\r\n }\r\n\r\n return (\r\n <Fragment>\r\n {(!userRoles.includes(UserSubRole.ADD)) ? (\r\n <div id=\"RefreshIconButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>\r\n ) : <div id=\"RefreshButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>}\r\n <div className={CssClassConstants.AddToCaseButtonClass}>\r\n {addCase()}\r\n </div>\r\n <div data-nextgen-parent-group=\"Dashboard - Special Pricing cases\" data-nextgen-parentid= \"Dashboard - Special Pricing cases\">\r\n <Stack >\r\n { userRoles.includes(UserSubRole.ADD) &&\r\n <Row className=\"text-center mt-2 ms-Label\">\r\n <Stack>\r\n <DashboardSearch {...{onfilterByPartner : onfilterByPartner } }/>\r\n </Stack>\r\n </Row>\r\n }\r\n <Row>\r\n {showMessageBarOnDashboard && (\r\n <Stack>\r\n <div>\r\n <MessageBar messageBarType={errorMessageType} onDismiss={resetDashboardMessageBarChoice} dismissButtonAriaLabel=\"Close\" isMultiline={true}>\r\n {msgBarText}\r\n </MessageBar>\r\n </div>\r\n </Stack>\r\n )}\r\n </Row>\r\n {isCaseLoading &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingCases\", UIControlsText.LoadingCases)} />\r\n </div>\r\n </Stack>\r\n }\r\n <DashboardGrid\r\n {...{\r\n\r\n kendoGridProps: { ...specialPricing.kendoGridProps }, onGetDataRequest: onGetDataRequest\r\n\r\n }}\r\n />\r\n <div id=\"footerPadding\"></div>\r\n </Stack>\r\n </div> \r\n {/* Add Case Model */}\r\n <AddToCase {...{ hideDialog: hideDialog, onSuccess }} />\r\n </Fragment>\r\n );\r\n};","import { FC, Fragment, useCallback, useEffect, useState } from \"react\";\r\nimport { populateGridColumns, getUserRole, getUserSession, readGridConfig, getPageNumberFromSession, getRuleValidationMessage, getEntityDataFromSession } from \"../../components/shared/common/util\";\r\nimport { GridType } from \"../../models/GridType\";\r\nimport \"../../content/styles/AddCaseGrid.css\";\r\nimport DashboardGrid from \"../../components/shared/grid/dashboardgrid\";\r\nimport { IGridProps } from \"../../components/shared/grid/IGridProps\";\r\nimport { DealType } from \"../../models/DealType\";\r\nimport { IDashboardDataRequest } from \"../../models/IDashboardDataRequest\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { Stack, Spinner, MessageBarType, CommandBarButton, FontIcon, MessageBar, IconButton } from \"office-ui-fabric-react\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { IDashboardGridProps } from \"./props/IDashboardGridProps\";\r\nimport { unionBy } from \"lodash\";\r\nimport { IOpportunityDealDetails } from \"../../models/IOpportunityDealDetails\";\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport { CssClassConstants } from \"../../content/CssClassConstants\";\r\nimport { UserSubRole } from \"../../models/UserSubRole\";\r\nimport { RefreshButtonStyles, _Styles } from \"../../content/styles/Page.styles\";\r\nimport { PageConstants } from \"../pageconstants/Constants\";\r\nimport Row from \"react-bootstrap/esm/Row\";\r\nimport { AddToCase } from \"./add-to-case\";\r\nimport { ApplicationConstants } from \"../../models/ApplicationConstants\";\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { DashboardSearch } from \"./dashboard-search\";\r\nimport { IAccount } from \"../../models/IAccount\";\r\nimport moment from \"moment\";\r\n\r\nexport const LocalEmpowermentSpecialPricingDashboard: FC<IDashboardGridProps> = (props: IDashboardGridProps) => {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [spLocalEmpowerment, setSPLocalEmpowerment] = useState<IGridProps>(readGridConfig(GridType.SPLocalEmpowerment));\r\n const [isCaseLoading, setIsCaseLoading] = useState<boolean>(false);\r\n const [isRefreshed, setIsRefreshed] = useState<boolean>(false);\r\n const [pageNumber, setpageNumber] = useState<number>(1)\r\n const [userRoles] = useState<string>(getUserRole());\r\n const [spData, setSpData] = useState<IOpportunityDealDetails[]>([]);\r\n const [sqlRecordCount, setSqlRecordCount] = useState<number>(0)\r\n const [msgBarText, setMsgBarText] = useState<string>();\r\n const [filteredPartnerAccount, setfilteredPartnerAccount] = useState<IAccount[] | undefined>(undefined);\r\n const [hideDialog, setHideDialog] = useState<boolean>(true);\r\n const [errorMessageType, setErrorMessageType] = useState(MessageBarType.success);\r\n const [showMessageBarOnDashboard, setshowMessageBarOnDashboard] = useState<boolean>(false);\r\n const resetDashboardMessageBarChoice = useCallback(() => setshowMessageBarOnDashboard(false), []);\r\n const [gridDataState, setGridDataState] = useState<any>();\r\n\r\n useEffect(() => {\r\n spLocalEmpowerment.kendoGridProps = populateGridColumns(spLocalEmpowerment.kendoGridProps)\r\n spLocalEmpowerment.kendoGridProps.noOfRecords = getPageNumberFromSession(spLocalEmpowerment.kendoGridProps)\r\n setSPLocalEmpowerment(spLocalEmpowerment)\r\n getSPLocalEmpowermentCases(pageNumber)\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.onAddToCaseCallBack === GridType.SpecialPricing) {\r\n getSPLocalEmpowermentCases(1);\r\n }\r\n }, [props.onAddToCaseCallBack]);\r\n\r\n useEffect(() => {\r\n if(isRefreshed){\r\n onRefresh()\r\n }\r\n }, [isRefreshed]);\r\n\r\n useEffect(() => {\r\n if(filteredPartnerAccount != undefined){\r\n setIsRefreshed(true);\r\n }\r\n }, [filteredPartnerAccount]);\r\n\r\n useEffect(() => {\r\n if(spData.length == 0 && isRefreshed){\r\n setIsRefreshed(false)\r\n setSqlRecordCount(0)\r\n setpageNumber(1)\r\n getSPLocalEmpowermentCases(1, gridDataState)\r\n }\r\n }, [spData]);\r\n\r\n const getSPLocalEmpowermentCases = async (pageNo?: number, dataState?: any, pageChanged?: boolean) => {\r\n try {\r\n setIsRefreshed(false);\r\n const userSession = getUserSession();\r\n setIsCaseLoading(true);\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n let roles = userRoles.split(\",\");\r\n let sort: any\r\n let filter: any\r\n var searchedCaseNumber = \"\";\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(dataState)) {\r\n if (dataState.sort[0] && !JavaScriptExtensions.isEmptyOrNullOrUndefined(dataState.sort[0].field)) {\r\n sort = dataState.sort[0].field + \" \" + dataState.sort[0].dir\r\n }\r\n Date.prototype.toJSON = function(){ return moment(this).format(); }\r\n filter = JSON.stringify(dataState.filter);\r\n searchedCaseNumber = dataState?.filter?.filters[0]?.filters[0]?.field === \"opportunityName\" \r\n ? dataState.filter.filters[0].filters[0].value\r\n : \"\";\r\n }\r\n var resellerOrDistributorFilters : IAccount[] = [];\r\n if(filteredPartnerAccount != undefined && filteredPartnerAccount.length != 0){\r\n resellerOrDistributorFilters = filteredPartnerAccount\r\n }\r\n const dashboardRequest: IDashboardDataRequest = {\r\n userRoleDetails: loggedInUserInfo.userRoleDetails,\r\n dealType: DealType.SpecialPricing,\r\n email: loggedInUserInfo.email,\r\n userRoles: roles.join(\",\"),\r\n filter: filter,\r\n pageNumber: pageNo,\r\n recordsToFetch: spLocalEmpowerment.kendoGridProps.recordsToFetch,\r\n sort: sort,\r\n isAllCasesDashboardRequest: false,\r\n isLocalEmpowerment: true,\r\n resellerOrDistributorFilters: resellerOrDistributorFilters\r\n };\r\n if(spData.filter(dt => dt.opportunityName === searchedCaseNumber).length == 0){\r\n let apiReturnedData = await Promise.resolve(nextGenService.getPricingProgramDashboardData(dashboardRequest));\r\n if (apiReturnedData.status === 200) {\r\n apiReturnedData.data.item1 = apiReturnedData.data.item1.map((item: IOpportunityDealDetails) => ({\r\n ...item,\r\n expirationDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.expirationDate) ? item.expirationDate : new Date(item.expirationDate as Date)),\r\n caseStartDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.caseStartDate) ? item.caseStartDate : new Date(item.caseStartDate as Date)),\r\n }));\r\n let spConfig = { ...spLocalEmpowerment };\r\n var finalData: IOpportunityDealDetails[]\r\n if(pageChanged === undefined || pageChanged === false) {\r\n finalData = apiReturnedData.data.item1;\r\n }\r\n else {\r\n finalData = [...apiReturnedData.data.item1, ...spData];\r\n }\r\n finalData = unionBy(finalData, x => x.id);\r\n finalData.forEach((element) => {\r\n element.resellerORDistributorNames = element.opportunityAccounts[0].resellerORDistributorNames;\r\n })\r\n spConfig.kendoGridProps.data = finalData;\r\n setSpData(finalData);\r\n spConfig.kendoGridProps.totalRecords = finalData.length;\r\n setSPLocalEmpowerment(spConfig);\r\n \r\n setSqlRecordCount(apiReturnedData.data.item2.NonCPStrategicDeals + sqlRecordCount)\r\n }\r\n }\r\n spLocalEmpowerment.kendoGridProps.customGridMessage = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoRecordsFound\", UIControlsText.NoRecordsFound)\r\n setIsCaseLoading(false);\r\n } catch (error) {\r\n setIsCaseLoading(false);\r\n }\r\n }\r\n\r\n const onGetDataRequest = (dataState: any, isSortingOrFilterAppliedOrRemoved?: boolean) => {\r\n setGridDataState(dataState);\r\n if ((((filterBy(spData || [], dataState.filter).length - dataState.skip) <= dataState.take) || isSortingOrFilterAppliedOrRemoved === true)) {\r\n var pageNo = (!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null) ? pageNumber + 1 : 1;\r\n if(!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null)\r\n {\r\n setpageNumber(count => count + 1)\r\n }\r\n else\r\n {\r\n setpageNumber(1);\r\n }\r\n getSPLocalEmpowermentCases(pageNo, dataState, !isSortingOrFilterAppliedOrRemoved)\r\n }\r\n }\r\n\r\n\r\n function addCase() {\r\n return (!userRoles.includes(UserSubRole.ADD)) ? \"\" : (<CommandBarButton disabled={true} onClick={() => { setHideDialog(false); }}>\r\n <div className={_Styles.CommandBarButton}>\r\n <FontIcon className={_Styles.FontIconDisabled} aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddCaseAriaLabel\", UIControlsText.AddCaseAriaLabel)} iconName={CssClassConstants.CirclePlusIconName}></FontIcon>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.AddCasToDashboard}</span>\r\n </div>\r\n </CommandBarButton>)\r\n }\r\n\r\n const initiateRefresh = () => {\r\n setIsRefreshed(true)\r\n }\r\n\r\n const onRefresh = () => {\r\n if(isRefreshed){\r\n let spConfig = { ...spLocalEmpowerment };\r\n spConfig.kendoGridProps.isRefresh = true\r\n spConfig.kendoGridProps.data = []\r\n spConfig.kendoGridProps = populateGridColumns(spConfig.kendoGridProps)\r\n spConfig.kendoGridProps.noOfRecords = getPageNumberFromSession(spConfig.kendoGridProps)\r\n setSPLocalEmpowerment(spConfig)\r\n spConfig.kendoGridProps.customGridMessage = \"\"\r\n setSpData([])\r\n }\r\n }\r\n\r\n const onfilterByPartner = (account: IAccount[] | undefined) => {\r\n setfilteredPartnerAccount(account);\r\n }\r\n\r\n\r\n const onSuccess = (showMessageBar: boolean, messageType: any, messageText: string, isReloadData: boolean, resetHideDialog: boolean): void => {\r\n\r\n if (resetHideDialog) {\r\n setHideDialog(resetHideDialog);\r\n }\r\n\r\n if (showMessageBar) {\r\n setErrorMessageType(messageType);\r\n setMsgBarText(messageText);\r\n setshowMessageBarOnDashboard(true);\r\n }\r\n if (isReloadData) {\r\n setIsRefreshed(true);\r\n }\r\n };\r\n\r\n function addRefreshIcon() {\r\n return (\r\n <CommandBarButton onClick={initiateRefresh} iconProps={{ iconName: CssClassConstants.RefreshIconName }} ariaLabel={CssClassConstants.RefreshIconName} title=\"Refresh\" styles={RefreshButtonStyles}>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.Refresh}</span>\r\n </CommandBarButton>\r\n )\r\n\r\n }\r\n\r\n return (\r\n <Fragment>\r\n {(!userRoles.includes(UserSubRole.ADD)) ? (\r\n <div id=\"RefreshIconButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>\r\n ) : <div id=\"RefreshButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>}\r\n <div className={CssClassConstants.AddToCaseButtonClass}>\r\n {addCase()}\r\n </div>\r\n <div data-nextgen-parent-group=\"Dashboard - OTLE cases\" data-nextgen-parentid= \"Dashboard - OTLE cases\">\r\n <Stack >\r\n { userRoles.includes(UserSubRole.ADD) &&\r\n <Row className=\"text-center mt-2 ms-Label\">\r\n <Stack>\r\n <DashboardSearch {...{onfilterByPartner : onfilterByPartner } }/>\r\n </Stack>\r\n </Row>\r\n }\r\n <Row>\r\n {showMessageBarOnDashboard && (\r\n <Stack>\r\n <div>\r\n <MessageBar messageBarType={errorMessageType} onDismiss={resetDashboardMessageBarChoice} dismissButtonAriaLabel=\"Close\" isMultiline={true}>\r\n {msgBarText}\r\n </MessageBar>\r\n </div>\r\n </Stack>\r\n )}\r\n </Row>\r\n {isCaseLoading &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingCases\", UIControlsText.LoadingCases)} />\r\n </div>\r\n </Stack>\r\n }\r\n <DashboardGrid\r\n {...{\r\n\r\n kendoGridProps: { ...spLocalEmpowerment.kendoGridProps }, onGetDataRequest: onGetDataRequest\r\n\r\n }}\r\n />\r\n <div id=\"footerPadding\"></div>\r\n </Stack>\r\n </div> \r\n {/* Add Case Model */}\r\n <AddToCase {...{ hideDialog: hideDialog, onSuccess }} />\r\n </Fragment>\r\n );\r\n};","import { FC, Fragment, useCallback, useEffect, useState } from \"react\";\r\nimport { populateGridColumns, getUserRole, getUserSession, readGridConfig, getPageNumberFromSession, getRuleValidationMessage, getEntityDataFromSession, getUserMainRole } from \"../../components/shared/common/util\";\r\nimport { GridType } from \"../../models/GridType\";\r\nimport \"../../content/styles/AddCaseGrid.css\";\r\nimport DashboardGrid from \"../../components/shared/grid/dashboardgrid\";\r\nimport { IGridProps } from \"../../components/shared/grid/IGridProps\";\r\nimport { DealType } from \"../../models/DealType\";\r\nimport { IDashboardDataRequest } from \"../../models/IDashboardDataRequest\";\r\nimport { nextGenService } from \"../../services/NextGenService\";\r\nimport { Stack, Spinner, MessageBarType, CommandBarButton, FontIcon, MessageBar, IconButton } from \"office-ui-fabric-react\";\r\nimport { UIControlsText } from \"../../content/UIControlsText\";\r\nimport { JavaScriptExtensions } from \"../../infrastructure/JavaScriptExtensions\";\r\nimport { IDashboardGridProps } from \"./props/IDashboardGridProps\";\r\nimport { unionBy } from \"lodash\";\r\nimport { IOpportunityDealDetails } from \"../../models/IOpportunityDealDetails\";\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport { CssClassConstants } from \"../../content/CssClassConstants\";\r\nimport { UserSubRole } from \"../../models/UserSubRole\";\r\nimport { RefreshButtonStyles, _Styles } from \"../../content/styles/Page.styles\";\r\nimport { PageConstants } from \"../pageconstants/Constants\";\r\nimport Row from \"react-bootstrap/esm/Row\";\r\nimport { AddToCase } from \"./add-to-case\";\r\nimport { MessageTypeText } from '../../models/MessageTypeText';\r\nimport { SessionStorageConsts } from \"../../models/SessionStorageConsts\";\r\nimport { DashboardSearch } from \"./dashboard-search\";\r\nimport { IAccount } from \"../../models/IAccount\";\r\nimport moment from \"moment\";\r\n\r\n\r\nexport const OneTimeLocalEmpowerment: FC<IDashboardGridProps> = (props: IDashboardGridProps) => {\r\n const sessionResourceData = getEntityDataFromSession<any>(SessionStorageConsts.resourceStrings);\r\n const [oneTimeLocalEmpowerment, setOneTimeLocalEmpowerment] = useState<IGridProps>(readGridConfig(GridType.OneTimeLocalEmpowerment));\r\n const [isCaseLoading, setIsCaseLoading] = useState<boolean>(false);\r\n const [isRefreshed, setIsRefreshed] = useState<boolean>(false);\r\n const [pageNumber, setpageNumber] = useState<number>(1)\r\n const [userRoles] = useState<string>(getUserRole());\r\n const [otleData, setOtleData] = useState<IOpportunityDealDetails[]>([]);\r\n const [sqlRecordCount, setSqlRecordCount] = useState<number>(0)\r\n const [msgBarText, setMsgBarText] = useState<string>();\r\n const [filteredPartnerAccount, setfilteredPartnerAccount] = useState<IAccount[] | undefined>(undefined);\r\n const [hideDialog, setHideDialog] = useState<boolean>(true);\r\n const [errorMessageType, setErrorMessageType] = useState(MessageBarType.success);\r\n const [showMessageBarOnDashboard, setshowMessageBarOnDashboard] = useState<boolean>(false);\r\n const resetDashboardMessageBarChoice = useCallback(() => setshowMessageBarOnDashboard(false), []);\r\n const [gridDataState, setGridDataState] = useState<any>();\r\n\r\n useEffect(() => {\r\n oneTimeLocalEmpowerment.kendoGridProps = populateGridColumns(oneTimeLocalEmpowerment.kendoGridProps)\r\n oneTimeLocalEmpowerment.kendoGridProps.noOfRecords = getPageNumberFromSession(oneTimeLocalEmpowerment.kendoGridProps)\r\n setOneTimeLocalEmpowerment(oneTimeLocalEmpowerment)\r\n getOTLECases(pageNumber)\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.onAddToCaseCallBack === GridType.OneTimeLocalEmpowerment) {\r\n getOTLECases(1);\r\n }\r\n }, [props.onAddToCaseCallBack]);\r\n\r\n \r\n useEffect(() => {\r\n if(isRefreshed){\r\n onRefresh()\r\n }\r\n }, [isRefreshed]);\r\n\r\n useEffect(() => {\r\n if(otleData.length == 0 && isRefreshed){\r\n setIsRefreshed(false)\r\n setSqlRecordCount(0)\r\n setpageNumber(1)\r\n getOTLECases(1, gridDataState)\r\n }\r\n }, [otleData]);\r\n\r\n useEffect(() => {\r\n if(filteredPartnerAccount != undefined){\r\n setIsRefreshed(true);\r\n }\r\n }, [filteredPartnerAccount]);\r\n\r\n const getOTLECases = async (pageNo?: number, dataState?: any, pageChanged?: boolean) => {\r\n try {\r\n setIsRefreshed(false);\r\n const userSession = getUserSession();\r\n setIsCaseLoading(true);\r\n let loggedInUserInfo = JSON.parse(userSession);\r\n let roles = userRoles.split(\",\");\r\n let sort: any\r\n let filter: any\r\n var searchedCaseNumber = \"\";\r\n if (!JavaScriptExtensions.isNullOrUndfinedOrEmpty(dataState)) {\r\n if (dataState.sort[0] && !JavaScriptExtensions.isEmptyOrNullOrUndefined(dataState.sort[0].field)) {\r\n sort = dataState.sort[0].field + \" \" + dataState.sort[0].dir\r\n }\r\n Date.prototype.toJSON = function(){ return moment(this).format(); }\r\n filter = JSON.stringify(dataState.filter);\r\n searchedCaseNumber = dataState?.filter?.filters[0]?.filters[0]?.field === \"opportunityName\" \r\n ? dataState.filter.filters[0].filters[0].value\r\n : \"\";\r\n }\r\n var resellerOrDistributorFilters : IAccount[] = [];\r\n if(filteredPartnerAccount != undefined && filteredPartnerAccount.length != 0){\r\n resellerOrDistributorFilters = filteredPartnerAccount\r\n }\r\n const dashboardRequest: IDashboardDataRequest = {\r\n userRoleDetails: loggedInUserInfo.userRoleDetails,\r\n dealType: DealType.OTLE,\r\n email: loggedInUserInfo.email,\r\n userRoles: roles.join(\",\"),\r\n filter: filter,\r\n pageNumber: pageNo,\r\n recordsToFetch: oneTimeLocalEmpowerment.kendoGridProps.recordsToFetch,\r\n sort: sort,\r\n isAllCasesDashboardRequest: false,\r\n isLocalEmpowerment: false,\r\n organizationId: loggedInUserInfo.organizationId,\r\n resellerOrDistributorFilters: resellerOrDistributorFilters\r\n };\r\n if(otleData.filter(dt => dt.opportunityName === searchedCaseNumber).length == 0){\r\n let apiReturnedData = await Promise.resolve(nextGenService.getPricingProgramDashboardData(dashboardRequest));\r\n if (apiReturnedData.status === 200) {\r\n apiReturnedData.data.item1 = apiReturnedData.data.item1.map((item: IOpportunityDealDetails) => ({\r\n ...item,\r\n expirationDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.expirationDate) ? item.expirationDate : new Date(item.expirationDate as Date)),\r\n caseStartDate: (JavaScriptExtensions.isNullOrUndfinedOrEmpty(item.caseStartDate) ? item.caseStartDate : new Date(item.caseStartDate as Date)),\r\n }));\r\n let otleConfig = { ...oneTimeLocalEmpowerment };\r\n var finalData: IOpportunityDealDetails[]\r\n if(pageChanged === undefined || pageChanged === false) {\r\n finalData = apiReturnedData.data.item1;\r\n }\r\n else {\r\n finalData = [...apiReturnedData.data.item1, ...otleData];\r\n }\r\n finalData = unionBy(finalData, x => x.id);\r\n otleConfig.kendoGridProps.data = finalData;\r\n setOtleData(finalData);\r\n otleConfig.kendoGridProps.totalRecords = finalData.length;\r\n setOneTimeLocalEmpowerment(otleConfig);\r\n setSqlRecordCount(apiReturnedData.data.item2.OtleDeals + sqlRecordCount)\r\n }\r\n }\r\n oneTimeLocalEmpowerment.kendoGridProps.customGridMessage = getRuleValidationMessage(sessionResourceData, MessageTypeText.OpportunityValidationError, \"NoRecordsFound\", UIControlsText.NoRecordsFound)\r\n setIsCaseLoading(false);\r\n } catch (error) {\r\n setIsCaseLoading(false);\r\n }\r\n }\r\n\r\n const onGetDataRequest = (dataState: any, isSortingOrFilterAppliedOrRemoved?: boolean) => {\r\n setGridDataState(dataState);\r\n if ((((filterBy(otleData || [], dataState.filter).length - dataState.skip) <= dataState.take) || isSortingOrFilterAppliedOrRemoved === true)) {\r\n var pageNo = (!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null) ? pageNumber + 1 : 1;\r\n if(!isSortingOrFilterAppliedOrRemoved && isSortingOrFilterAppliedOrRemoved !== undefined && isSortingOrFilterAppliedOrRemoved !== null)\r\n {\r\n setpageNumber(count => count + 1)\r\n }\r\n else\r\n {\r\n setpageNumber(1);\r\n }\r\n getOTLECases(pageNo, dataState, !isSortingOrFilterAppliedOrRemoved)\r\n }\r\n }\r\n\r\n\r\n function addCase() {\r\n return (!userRoles.includes(UserSubRole.ADD)) ? \"\" : (<CommandBarButton onClick={() => { setHideDialog(false); }}>\r\n <div className={_Styles.CommandBarButton}>\r\n <FontIcon className={_Styles.DashboardIcons} aria-label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"AddCaseAriaLabel\", UIControlsText.AddCaseAriaLabel)} iconName={CssClassConstants.CirclePlusIconName}></FontIcon>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.AddCasToDashboard}</span>\r\n </div>\r\n </CommandBarButton>)\r\n }\r\n\r\n const initiateRefresh = () => {\r\n setIsRefreshed(true)\r\n }\r\n\r\n const onRefresh = () => {\r\n if(isRefreshed){\r\n let otleConfig = { ...oneTimeLocalEmpowerment };\r\n otleConfig.kendoGridProps.isRefresh = true\r\n otleConfig.kendoGridProps.data = []\r\n otleConfig.kendoGridProps = populateGridColumns(otleConfig.kendoGridProps)\r\n otleConfig.kendoGridProps.noOfRecords = getPageNumberFromSession(otleConfig.kendoGridProps)\r\n setOneTimeLocalEmpowerment(otleConfig)\r\n otleConfig.kendoGridProps.customGridMessage = \"\"\r\n setOtleData([])\r\n }\r\n }\r\n\r\n const onfilterByPartner = (account: IAccount[] | undefined) => {\r\n setfilteredPartnerAccount(account);\r\n }\r\n\r\n\r\n const onSuccess = (showMessageBar: boolean, messageType: any, messageText: string, isReloadData: boolean, resetHideDialog: boolean): void => {\r\n\r\n if (resetHideDialog) {\r\n setHideDialog(resetHideDialog);\r\n }\r\n\r\n if (showMessageBar) {\r\n setErrorMessageType(messageType);\r\n setMsgBarText(messageText);\r\n setshowMessageBarOnDashboard(true);\r\n }\r\n if (isReloadData) {\r\n setIsRefreshed(true);\r\n }\r\n };\r\n\r\n function addRefreshIcon() {\r\n return (\r\n <CommandBarButton onClick={initiateRefresh} iconProps={{ iconName: CssClassConstants.RefreshIconName }} ariaLabel={CssClassConstants.RefreshIconName} title=\"Refresh\" styles={RefreshButtonStyles}>\r\n <span className={_Styles.DashboardBtnText}>{PageConstants.Refresh}</span>\r\n </CommandBarButton>\r\n )\r\n\r\n }\r\n\r\n return (\r\n <Fragment>\r\n {(!userRoles.includes(UserSubRole.ADD)) ? (\r\n <div id=\"RefreshIconButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>\r\n ) : <div id=\"RefreshButton\" className={_Styles.CommandBarButton}>\r\n {addRefreshIcon()}\r\n </div>}\r\n <div className={CssClassConstants.AddToCaseButtonClass}>\r\n {addCase()}\r\n </div>\r\n <Stack>\r\n { userRoles.includes(UserSubRole.ADD) &&\r\n <Row className=\"text-center mt-2 ms-Label\">\r\n <Stack>\r\n <DashboardSearch {...{onfilterByPartner : onfilterByPartner } }/>\r\n </Stack>\r\n </Row>\r\n }\r\n <Row>\r\n {showMessageBarOnDashboard && (\r\n <Stack>\r\n <div>\r\n <MessageBar messageBarType={errorMessageType} onDismiss={resetDashboardMessageBarChoice} dismissButtonAriaLabel=\"Close\" isMultiline={true}>\r\n {msgBarText}\r\n </MessageBar>\r\n </div>\r\n </Stack>\r\n )}\r\n </Row>\r\n {isCaseLoading &&\r\n <Stack>\r\n <div>\r\n <Spinner label={getRuleValidationMessage(sessionResourceData, MessageTypeText.FieldLabelText, \"LoadingCases\", UIControlsText.LoadingCases)} />\r\n </div>\r\n </Stack>\r\n }\r\n <DashboardGrid\r\n {...{\r\n\r\n kendoGridProps: { ...oneTimeLocalEmpowerment.kendoGridProps }, onGetDataRequest: onGetDataRequest\r\n\r\n }}\r\n />\r\n <div id=\"footerPadding\"></div>\r\n </Stack>\r\n {/* Add Case Model */}\r\n <AddToCase {...{ hideDialog: hideDialog, onSuccess }} />\r\n </Fragment>\r\n );\r\n};","import * as React from 'react';\r\nimport { Customizer, ScrollablePane } from 'office-ui-fabric-react';\r\nimport { CoherenceCustomizations } from '@cseo/styles';\r\nimport { Header } from '../../components/shared/pageheader';\r\nimport { BrowserRouter, Route } from 'react-router-dom';\r\nimport { _Styles } from '../../content/styles/Page.styles';\r\nimport { ISearchResult, CoherenceSearchDetails, SetOnsearchDetailsView, ISearchSuggestion } from '@cseo/controls';\r\nimport LeftMenu from '../../components/shared/leftMenu';\r\nimport AuthRoute from '../home/auth-route';\r\nimport { getUserSession, isNullOrEmpty } from '../../components/shared/common/util';\r\nimport { LoginPage } from '../home/login';\r\nimport { AAdAuth } from '../home/authentication';\r\nimport { ErrorPage } from '../../components/shared/error';\r\nimport { Footer } from '../home/footer';\r\nimport { HomePage } from '../home/home';\r\nimport ErrorBoundary from '../../ErrorBoundary';\r\nimport { InternalPricingProvider } from '../pricingprogram/CPStrategic/context/internalpricing-context';\r\nimport { ViewResellers } from '../dashboard/viewResellers';\r\nimport InternalPricingCase from '../pricingprogram/CPStrategic/components/internalpricing-case';\r\nimport { CaseManagement } from '../dashboard/caseManagement';\r\nimport { HelpAndSupport } from '../public/HelpAndSupport';\r\nimport PricingProgramFormMain from '../pricingprogram/PricingProgramForm/PricingProgramFormMain';\r\nimport { CommonPPProvider } from '../pricingprogram/common/context/common-pp-context';\r\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\r\nimport { ClickAnalyticsPlugin } from '@microsoft/applicationinsights-clickanalytics-js';\r\nimport CasePartnerDetail from '../pricingprogram/PricingProgramForm/CasePartnerDetail';\r\nimport { BidGridCase } from '../dashboard/bid-grid-non-profit-edu-discount-case';\r\nimport { AllCaseView } from '../dashboard/all-case-view';\r\nimport { CPStrategicCaseViewGrid } from '../dashboard/cp-strategic-case-view';\r\nimport { DealRegistrationCase } from '../dashboard/deal-registration-case';\r\nimport { SpecialPricingProductInformation } from '../dashboard/productInformation-view';\r\nimport { SpecialPricing } from '../dashboard/special-pricing-view';\r\nimport {LocalEmpowermentSpecialPricingDashboard} from '../dashboard/localEmpowerment-view';\r\nimport { OneTimeLocalEmpowerment } from '../dashboard/otle-view';\r\n\r\n\r\ninterface ISearchData {\r\n showSearchDetails: boolean;\r\n searchText: string;\r\n searchResult: ISearchResult[];\r\n}\r\ninterface OwnState {\r\n isNavCollapsed: boolean;\r\n searchData: ISearchData;\r\n}\r\n//this component is act as landing page after login, where we configure/add new pages and routes here.\r\nexport class Main extends React.Component<{}, OwnState> {\r\n constructor(props: {}) {\r\n super(props);\r\n this.state = {\r\n isNavCollapsed: false,\r\n searchData: {\r\n showSearchDetails: false,\r\n searchText: '',\r\n searchResult: []\r\n }\r\n };\r\n\r\n const clickPluginInstance = new ClickAnalyticsPlugin();\r\n // Click Analytics configuration\r\n const clickPluginConfig = {\r\n autoCapture: true,\r\n dataTags: {\r\n customDataPrefix : 'data-nextgen-',\r\n useDefaultContentNameOrId: true,\r\n parentDataTag : 'parent-group',\r\n captureAllMetaDataContent : true,\r\n }\r\n };\r\n // Application Insights Configuration\r\n const configObj = {\r\n instrumentationKey: process.env.REACT_APP_AI_INSTRUMENTATION_KEY,\r\n extensions: [clickPluginInstance],\r\n extensionConfig: {\r\n [clickPluginInstance.identifier]: clickPluginConfig\r\n },\r\n autoTrackPageVisitTime: true,\r\n enableAutoRouteTracking: true,\r\n disableFetchTracking: false,\r\n enableRequestHeaderTracking: true,\r\n enableResponseHeaderTracking: true,\r\n };\r\n\r\n const appInsights = new ApplicationInsights({ config: configObj });\r\n appInsights.loadAppInsights();\r\n appInsights.trackPageView();\r\n // Log the logged in user details\r\n const loggedInUserDetails = getUserSession();\r\n if (!isNullOrEmpty(loggedInUserDetails))\r\n {\r\n let loggedInUserInfo = JSON.parse(loggedInUserDetails)\r\n var validatedId = loggedInUserInfo.email?.replace(/[,;=| ]+/g, \"_\");\r\n var validatedAccountId = loggedInUserInfo.organizationId?.replace(/[,;=| ]+/g, \"_\");\r\n appInsights.setAuthenticatedUserContext(validatedId, validatedAccountId);\r\n } \r\n }\r\n render() {\r\n return (\r\n <Customizer {...CoherenceCustomizations}>\r\n {this.renderHeader()}\r\n <BrowserRouter>\r\n <>\r\n <div id=\"leftnav\">\r\n {this.renderLeftMenu()}\r\n </div>\r\n <Route path=\"/\" exact component={LoginPage} />\r\n <Route path=\"/home\" component={LoginPage} />\r\n <Route path=\"/aadAuth\" component={AAdAuth} />\r\n <Route path=\"/errorPage\" component={ErrorPage} />\r\n <main id='main' tabIndex={-1}>\r\n {\r\n this.state.searchData.showSearchDetails &&\r\n <ScrollablePane className={this.state.isNavCollapsed ? _Styles.scrollablePaneCollapsed : _Styles.scrollablePaneExpand}>\r\n <div className={_Styles.rootDiv}>\r\n <CoherenceSearchDetails searchText={this.state.searchData.searchText}>\r\n </CoherenceSearchDetails>\r\n </div>\r\n </ScrollablePane>\r\n }\r\n <div className={this.state.isNavCollapsed ? _Styles.DRStyleCollapse : _Styles.DRStyleExpand}>\r\n <Route path=\"/homePage\" component={HomePage} />\r\n <AuthRoute path=\"/viewresellers\" component={ViewResellers} />\r\n <Route\r\n path=\"/managecase/:dealtype\"\r\n render={(props) => (props.match.params.dealtype == 'pricingprogram' ?\r\n <ErrorBoundary>\r\n <CommonPPProvider>\r\n <AuthRoute path=\"/managecase/pricingprogram\" component={PricingProgramFormMain} />\r\n </CommonPPProvider>\r\n </ErrorBoundary> :\r\n <ErrorBoundary>\r\n <InternalPricingProvider dealtype={props.match.params.dealtype}>\r\n <AuthRoute path={`/managecase/${props.match.params.dealtype}`} component={InternalPricingCase} />\r\n </InternalPricingProvider>\r\n </ErrorBoundary>\r\n )}\r\n />\r\n <Route\r\n path=\"/partnerdetail\"\r\n render={() => (\r\n <ErrorBoundary>\r\n <CommonPPProvider>\r\n <AuthRoute path=\"/partnerdetail\" component={CasePartnerDetail} />\r\n </CommonPPProvider>\r\n </ErrorBoundary>\r\n )}\r\n />\r\n {<AuthRoute path=\"/dashboard\" component={CaseManagement} />}\r\n {<AuthRoute path=\"/discounts\" component={BidGridCase} />}\r\n {<AuthRoute path=\"/dashboard/allcases\" component={AllCaseView} />}\r\n {<AuthRoute path=\"/dashboard/dealregistration\" component={DealRegistrationCase} />}\r\n {<AuthRoute path=\"/dashboard/specialpricing\" component={SpecialPricing} />}\r\n {<AuthRoute path=\"/dashboard/cpstrategic\" component={CPStrategicCaseViewGrid} />}\r\n {<AuthRoute path=\"/dashboard/productviewsp\" component={SpecialPricingProductInformation} />}\r\n {<AuthRoute path=\"/dashboard/splocalempowerment\" component={LocalEmpowermentSpecialPricingDashboard} />}\r\n {<AuthRoute path=\"/dashboard/otle\" component={OneTimeLocalEmpowerment} />}\r\n {<Route path=\"/helpsupport\" component={HelpAndSupport} />}\r\n\r\n </div>\r\n </main>\r\n <div>\r\n <Footer />\r\n </div>\r\n </>\r\n </BrowserRouter>\r\n </Customizer >\r\n );\r\n }\r\n //Based on logged in user session left menu component will render\r\n private renderLeftMenu() {\r\n const isLoggedIn = getUserSession();\r\n if (!isNullOrEmpty(isLoggedIn)) {\r\n return <LeftMenu onNavCollapsed={this._onNavCollapsed} onNavItemClicked={this._goBackClicked} />;\r\n }\r\n }\r\n //Based on logged in user session header nav component will render\r\n private renderHeader() {\r\n const isLoggedIn = getUserSession();\r\n if (!isNullOrEmpty(isLoggedIn)) {\r\n return <Header onShowMoreResultsCallback={this._onShowMoreResultsCallback} />;\r\n }\r\n }\r\n\r\n //this state property used to identify whether left nav bar is collapsed or expanded and make use of this property to across\r\n private _onNavCollapsed = (isCollapsed: boolean) => {\r\n this.setState({ isNavCollapsed: isCollapsed });\r\n };\r\n\r\n private _onShowMoreResultsCallback = (searchText: string, searchResult: ISearchResult[]) => {\r\n this.setState({\r\n searchData: {\r\n showSearchDetails: true,\r\n searchText: searchText,\r\n searchResult: searchResult\r\n }\r\n });\r\n }\r\n\r\n private _goBackClicked = () => {\r\n SetOnsearchDetailsView(false);\r\n this.setState({\r\n searchData: {\r\n showSearchDetails: false,\r\n searchText: '',\r\n searchResult: []\r\n }\r\n });\r\n }\r\n\r\n private _onClickSuggestionItem = (item: ISearchSuggestion, category?: string) => {\r\n console.log('Suggestion item clicked for ', item.text, category);\r\n }\r\n}","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport { Main } from '../src/pages/shared/maincomponent'\r\nimport reportWebVitals from './reportWebVitals';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\n\r\nReactDOM.render(\r\n <React.StrictMode>\r\n <Main />\r\n </React.StrictMode>,\r\n document.getElementById('root')\r\n);\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}