{"version":3,"sources":["StandardLoan/Rework/api.ts","StandardLoan/OfferList/api.ts","StandardLoan/Rework/ReworkBanner.tsx","StandardLoan/Rework/utils.ts","StandardLoan/MicroTransaction/api.ts","StandardLoan/Rework/useReworkComparator.ts","StandardLoan/KYC/utils.tsx","StandardLoan/KYC/domain.ts","StandardLoan/Landing/Landing.treat.ts","StandardLoan/OfferList/OfferChooseCard.treat.ts","StandardLoan/Landing/ChooseBrokerButton.tsx","StandardLoan/Results/FinalFeedback.tsx","StandardLoan/OfferReview/OfferReviewCard.tsx","StandardLoan/OfferReview/OfferDocuments.tsx","StandardLoan/Select3P/BrokerEmailField.tsx","StandardLoan/Refinancing/CreditorAutocompleteField.tsx","StandardLoan/Results/Summary.treat.ts","StandardLoan/Landing/Landing.tsx","StandardLoan/RestoreDialog.tsx","StandardLoan/OfferList/OfferChooseCard.tsx","StandardLoan/Refinancing/LiabilityEditableItem.tsx","StandardLoan/Results/Summary.tsx","StandardLoan/PhoneAndEmailVerification/PhoneAndEmailVerification.tsx","StandardLoan/Landing/Configurator.tsx","StandardLoan/Landing/Tenor.tsx","StandardLoan/Landing/ChooseBrokerButton.treat.ts","StandardLoan/RestrictParallelFlowsWrapper.tsx","StandardLoan/OfferList/OfferList.tsx","StandardLoan/OfferList/OfferChoose.tsx","StandardLoan/OfferList/OfferChoose.treat.ts","StandardLoan/OfferList/Counteroffer.tsx","StandardLoan/KYC/KYC.tsx","StandardLoan/KYC/PersonalAndTaxInformation.tsx","StandardLoan/KYC/Transactions.tsx","StandardLoan/KYC/Transactions2.tsx","StandardLoan/SaveApplicationDialog.tsx","StandardLoan/Refinancing/RefinancingCreditsCheck.tsx","StandardLoan/Refinancing/RefinancingAccountSelection.tsx","StandardLoan/OfferReview/OfferReview.tsx","StandardLoan/OfferReview/OfferReviewDetailDialog.tsx","StandardLoan/OfferReview/OfferReviewSelect3P.tsx","StandardLoan/OfferReview/ApplicationBrokerForBankerDialog.tsx","StandardLoan/Select3P/BrokerEmailField.treat.ts","StandardLoan/Refinancing/AccountsForRefinancing.tsx","StandardLoan/Refinancing/InternalLiabilityRow.tsx","StandardLoan/Refinancing/ExternalLiabilitiesEditForm.tsx","StandardLoan/Refinancing/ExternalLiabilitiesEditableItem.tsx","StandardLoan/Refinancing/MaskedCreditCardField.tsx","StandardLoan/MicroTransaction/MicroTransaction.tsx","StandardLoan/MicroTransaction/BankIdentitiesDropdown.tsx","StandardLoan/MicroTransaction/domain.ts","StandardLoan/Results/SLSummary.tsx","StandardLoan/Results/SummaryExistingClient.tsx","StandardLoan/Rework/ConfirmClientData.tsx","StandardLoan/MicroTransaction/MicroTransactionOverview.tsx","StandardLoan/OfferReview/OfferReviewPush.tsx","StandardLoan/ReloadSuspense.tsx","StandardLoan/OfferList/CheckExpensesOffers.tsx","StandardLoan/OfferList/SendAdditionalIncome.tsx","StandardLoan/Select3P/Select3P.tsx","StandardLoan/RepaidLoans/RepaidLoans.tsx","StandardLoan/RepaidLoans/RepaidLiabilitiesEditForm.tsx","StandardLoan/RepaidLoans/RepaidLiabilitiesEditableItem.tsx"],"names":["ReworkStep","t","ACCOUNTS_FOR_REFINANCING","REPAID_LOANS","ADDITIONAL_INCOME","AUTHORIZATION_PAGE","INCOME_AND_PERSONAL_DATA","PERSONAL_DATA","UPLOAD_DOCUMENTS","ReworkStepsOutput","needContractsUpdate","steps","nonEmptyArray","reworkAll","reworkDetails","apiCall","path","inputCodec","inputEq","eq","fromEquals","constFalse","outputCodec","ReworkActionCategory","PERSONAL_ID","BONITA","CONTRACT","DOCUMENT","StepCommentsInput","reworkCategories","StepCommentsOutput","stepComments","optionFromUndefined","ReworkIncomeOutputBase","allowanceInfo","AllowanceInfo","companyInfo","CompanyInfo","contractInfo","ContractInfo","ReworkIncomeSourceInfo","incomeSource","IncomeSourceType","specialTypeOfIncome","SpecialIncomeSourceType","ReworkIncomeInfo","IncomeInfoNoSource","ReworkIncomeOutput","incomeInfo","ReworkIncomeAndPersonalData","income","personalData","PersonalDataFromOutput","ReworkAdditionalIncomeMap","ReworkAccountsForRefinancingOutput","accountNumber","NonEmptyString","accountCurrency","Currency","internalLoans","InternalLoansListRework","externalLoans","ExternalLoansListRework","ClientDataReworkOCR","documentType","DocumentType","PersonalDataOCR","documentDetails","PersonalDocumentOCR","permanentAddress","AddressOCR","addressSuggestions","AddressWrite","validationErrors","withFallback","PersonalInfoError","option","none","ReworkOldValuesOutput","accountsForRefinancingData","additionalIncomeMap","incomeAndPersonalData","personalDataConfirmation","primary","secondary","getReworkOldValues","UpsellOfferList","applicationId","clientId","offers","GenericLoanOffer","CheckOfferStatus","PENDING","RECEIVED","TIMEOUT","CheckOffersOutput","status","checkOffers","checkExpensesOffers","getCounterOffers","getSelectedOffer","getUpsellOffers","saveSelectedOffer","GenericLoanResponseOutput","saveCustomerSelectedOffer","ReworkBanner","props","formatMessage","useFormatMessage","currency","useTenantCurrency","isMobileLayout","useIsMobileLayout","showDetails","setShowDetails","useState","jobPositions","pipe","useQuery","api","tuple","fst","remoteData","constant","identity","config","r6Enabled","useAppContext","renderItemValue","valueType","item","type","stringValue","oldValue","newValue","label","jobPosition","array","findFirst","o","getOrElse","toLowerCase","key","jobPositionName","fold","name","some","size","value","moneyValue","amount","dateValue","format","booleanValue","changesHeader","grow","units","shrink","weight","change","variant","basis","renderComments","comments","column","hAlignContent","vAlignContent","align","unsafeLocalizedString","isSome","map","comment","renderNoChangesBanner","content","title","actions","onDismiss","filterChanges","changes","filter","c","areDifferent","old","constNull","val","shouldDisplay","areReworkChanges","length","action","icon","InfoIcon","subtitle","forceDisplayComments","hideChangesSection","mergeExtractDataDocumentsReworkOutput","isThereAnAdditionalDocument","alt","document","additionalDocumentType","chain","additionalDocumentDetails","useGetPersonalDataStepChanges","clientData","oldDocument","formatCitizenshipOrOther","useFormatCitizenshipOrOther","formatMaritalStatus","useFormatMaritalStatus","formatSex","useFormatSex","doc","p","v","titleAfter","surname","sex","maritalStatus","dateOfBirth","birthNumber","placeOfBirth","countryOfBirth","citizenship","compact","idNumber","dateOfIssuing","validUntil","authority","issuer","country","city","streetName","streetNumber","zipCode","useGetCreditChecksStepChanges","formatIncomeSourceType","useFormatIncomeSourceType","formatYearValue","useFormatYearValue","isLowerThanTwoYears","contractInfo_","startingDate","monthYear","then","moment","year","month","diff","formatMonthYearValue","useFormatMonthYearValue","formatEmploymentType","useFormatEmploymentType","formatPaymentMethod","useFormatPaymentMethod","formatPercentageLike","useFormatPercentageLike","formatTypeOfRent","useFormatTypeOfRent","formatAllowanceType","useFormatAllowanceType","formatPensionType","useFormatPensionType","formatCurrency","useFormatIncomeCurrency","oldIncome","i","salaryCurrency","monthlyIncome","equityFromLastYear","sumOfPaidShareOfProfit","employedInCompany","taxBase","tax","businessGrossIncome","keepsAccountancy","grossIncomes","r101BruttoIncomes","r37PartialTaxBase","r74TaxAfterClaimedRelief","incomeFromRentContract","r201IncomeFromLease","r38PartialTaxBase","r39PartialTaxBase","typeOfRent","reCoOwned","reInPersonalOwnership","reUsedAsCollateral","amortizationOfRentedRe","isCooperativeOwnership","isApplicantDeclareAsUserInDeclaration","maternityOrParentalIncomeDetails","m","allowanceType","monthlySocialBenefit","pensionerIncomeDetails","pensionType","monthlyPension","monthlyRent","alimonyIncomeDetails","monthlyAlimonyIncome","alimonyChildrenInvolved","toString","alimonyIdentifiable","alimonyOutsideCountry","alimonyCurrency","companyName","companyIco","applicantsShareHigherThan33","stakeInCompany","equityPositive","freelancerType","businessStartingDate","businessSector","employmentType","contractIndefinitePeriod","contractPeriodExpiration","employedInSpecificProfessions","lengthOfUninterruptedCurrentEmployment","inProbation","workBasedOnAgreementOnWorkingActivity","lengthOfUninterruptedOverallEmployment","paymentMethod","receivesAllowance","allowanceAmount","useGetAdditionalIncomeStepChanges","additionalIncomeList","oldAdditionalIncomeList","getCreditChecksStepChanges","oldAddIncome","ad","getEq","eqString","equals","uniqueId","hasPreapprovedLimits","newAddIncome","useGetAccountsForRefinancingStepChanges","externalLoansList","oldExternalLoansList","chainWithIndex","index","oldExtenalLoan","lookup","newExtenalLoan","getTypeOfProductLabel","creditor","originalAmount","remainingAmount","accountForDisbursment","variableSymbol","newVal","useGetPersonalDataChanges","oldPersonalData","oldPersonalDataEntry","personalDataEntry","foldPersonalDataField","boolField","dateField","numberField","stringField","options","findFirstMap","companyICOField","companyNameField","BankIdentityOutput","BankIdentity","bankIdentities","constTrue","MicroTransactionDetailsOutput","bankCode","prefixCode","optionFromNullable","microTransactionDetails","BasicPersonalDataOutput","basicPersonalData","bankAccountSubmitInput","bankName","LocalizedString","confirmationLabel","eqBankAccountSubmitInput","getStructEq","bankAccountSubmit","SaveMicroPaymentDataConfirmationInput","consent","eqSaveMicroPaymentDataConfirmationInput","eqBoolean","saveMicroPaymentDataConfirmation","QRCodeInput","QRCodeOutput","FileContent","getQRCode","useReworkComparator","reworkData","isReworked","rework","objectName","fieldName","base","data","extract","formatIssues","existingIssues","isNone","fieldIssues","warning","isDisabled","reworkFieldProps","fieldProps","disabled","overrideFieldName","issues","specialFieldsReworkFieldProps","reworkDependent","reworked","warnings","useReworkPersonalDataComparator","reworkPersonalData","findIndex","useFormatPaymentDestination","paymentDestination","useFormatTransactionType","transactionType","useFormatAverageIncomingPayments","paymentAmount","useFormatSourceOfFunds","sourceOfFunds","PaymentDestination","Domestic","ForeignEU","OutsideEU","TransactionType","CashAndCashless","Cashless","Cash","incomeSourcesWithIndustry","stepNumber","cardContent","cardContentMobile","angleIcon","ChooseBrokerButton","fluid","className","classes","onClick","heading","labels","normal","buttonLabel","loading","success","error","taskEither","fromIO","foldProps","matches","decision","whenApproved","whenPending","whenRejected","FinalFeedback","getFeedbackType","isSummary","clientExists","isRefinancing","rejectionReason","getTitle","subheading","isNonWorkingDay","getText","onGotoClientsPage","flowType","inlineLoaderMessage","OfferReviewCard","isDetailDialogOpen","setIsDetailDialogOpen","formatMoneyAmount","useFormatMoneyAmountValue","formatPercentage","width","offer","installment","duration","tenor","rate","interestRate","monthlyInsuranceAmount","apSecond","insurance","included","InsuranceIcon","totalAmount","rightContent","buttonLink","OfferDocuments","requiredDocumentsList","setRequiredDocumentsList","requiredDocuments","useCommand","scrollTop","window","scrollTo","usePollingEffect","intervalMS","shouldPollingContinue","requiredDocumentsReceived","onSuccess","bimap","list","onError","pattern","NotReceived","Pending","Received","documentList","documentName","isNonEmpty","color","listStyle","BrokerEmailField","fetchBrokerSuggestions","skipTracking","lastSelectedTerm","setLastSelectedTerm","queryTerms","useDebounceState","undefined","queryString","brokerEmailSuggestions","useRemoteData","useMemo","previousTerm","currentTerm","term","partialEmail","right","showNativeTooltip","suggestionsStatus","query","suggestionsMap","suggestion","email","suggestions","isLoading","onSelectSuggestion","s","selectedValue","onChange","loadingMessage","CreditorAutocompleteField","loanProviders","includes","ico","code","errorColor","successColor","Landing","startApplication","initDefaults","enableCashLoanId3PInBranch","isInPersonChannel","useIsInPersonChannel","is3PChannel","useIs3PChannel","initialLoanOffer","setInitialLoanOffer","stackBasis","boolean","handleError","errors","id","onAgeValidationFail","constVoid","left","onClaimLinkClick","orElse","description","orientation","children","CheckIcon","onContinue","initialOffer","RestoreDialog","isApplicationSigned","applicationStatus","useEffect","isErrorFetchingRestoredData","isCredentialsAndSigningRemote","restoredData","feStep","onRestore","restrictParallelFlowsWrapper","onBack","onExit","continueNewApp","onNotRestore","transitionToMasterCard","hasCAFlowInProgress","parallelFlowParameters","hasCAFlowSentToBO","hasCFFlowSentToBO","isFromClientProfile","date","existingApplicationId","onReturnToPrev","mainContent","loanAmount","instalment","cardProviderChange","palette","warning500","shouldDisplayRestrictParallelFlowsWrapper","stepper","OfferChooseCard","apis","onOfferChoose","selectedOffer","onComplete","isCollapsed","setIsCollapsed","expanded","isContentVisible","hasRefinancing","offerType","newMoneyAmount","selected","currencyCode","borrowedAmount","installmentAmount","interestRateDecimal","cpimonthlyAmount","cpiSelectedName","cpiName","LiabilityEditableItem","isMobile","formatDate","useFormatDate","labelId","useUniqueID","startDateField","startDate","readonly","onChangeValues","recordId","selectedForRepaid","showRepaidLoans","style","alignItems","divider","OnboardingResultSuccessDialog","result","stepsResults","every","r","cta","cx","message","Summary","slResult","setSLResult","successDialogOpen","setSuccessDialogOpen","goToMicrotransaction","feedback","summaryHeading","unicreditBranchesMapURL","navigateToFindBranches","location","href","isCf","isChild","finalChecksComplete","checkPendingActions","banner","render","PhoneAndEmailVerification","generateLinkNow","linkGenerationNow","needsCaptchaCommand","needsCaptcha","headingWhenNon3PFlow","hideOnMobile","foldFlowType","when3P","whenInPerson","whenTLSAgent","whenHomeBanking","whenSmartBanking","whenPWSRemote","initialPromoCode","onPhoneVerified","coApplicant","generateOTP","verifyOTP","hideInstructions","onMaxNumberChangesReached","makeClampAndRound","params","rounded","Math","round","step","max","min","Configurator","formatRichMessage2","useFormatRichMessage2","useFormatMoneyAmount","unsafeNonNegativeInteger","useFormatCurrency","updateLoanOffer","representativeExampleTemplate","documentAPI","representativeExampleContent","currentLoanOffer","setCurrentLoanOffer","showRepresentativeExampleModal","setShowRepresentativeExampleModal","amountStep","foldCurrency","CZK","maxAmount","minAmount","EUR","unsafePositiveInteger","tenorStep","clampAndRoundAmount","clampAndRoundTenor","minTenor","maxTenor","debounceUpdate","delay","timeoutRef","useRef","input","current","currentTimeout","clearTimeout","setTimeout","useDebounceAction","values","NonNegative","decode","fromEither","PositiveInteger","updatedOffer","onAmountUpdate","formatLabelContent","unsafeNonNegative","isNaN","flow","minLabelContent","maxLabelContent","onBlur","file","docsets","items","docId","Tenor","isEditing","setIsEditing","either","months","button","RestrictParallelFlowsWrapper","RestrictParallelFlowsWrapperInner","isInPerson","showDeletionConfirmation","setShowDeletionConfirmation","applicationType","existingApplicationDate","inPersonFlow","product","remoteFlow","PWSURL","remoteFlowCAInProgress","OldApplicationDeletionConfirmation","deleteApplication","showAppSuccessfullyCanceled","setShowAppSuccessfullyCanceled","showErrorBanner","setShowErrorBanner","appId","processId","mapLeft","handleDeleteApplication","appSuccessfullyCanceled","errorContent","OfferList","checkOfferStatus","usePolling","offerListApi","renderLoader","renderOfferType","offerState","onSelectOffer","whenCounteroffer","onLoading","onReady","onTimeout","SelectedOffer","UpsellOffers","upsellOffers","OfferChoose","containerMobile","Counteroffer","counterOffer","renderOffers","UmbrellaIcon","renderBackButton","KYC","activeItem","setActiveItem","transactionsInfo","KYCSubmitCommand","transactions","setTransactions","itemsAccordion","down","onNext","initialPersonalAndTaxInfo","mainIncomeSource","existingClient","personalAndTaxInfo","answers","needsMicropayment","emptyOtherTaxPayerCountry","countryRequiresTIN","TIN","note","noTIN","getOtherTaxPayerCountries","taxPayerOutsideCzechRepublic","countries","otherTaxPayingCountries","dropdownOptionToValue","getCountryCode","taxCountry","toNullable","countryCode","PersonalAndTaxInformation","defined","definedNoExtract","nonBlankString","maxLength","useValidators","formatReasonNote","useFormatReasonNote","CRSCountryURL","FATCAURL","r6NewSironMapping","newSironMapping","remoteCountries","kycApi","showRiskyActivitiesModal","setShowRiskyActivitiesModal","shouldAskSecondCitizenship","shouldAskSsn","usCitizenOrTaxPayer","exists","shouldAskOtherTaxPayerCountries","shouldAskIndustry","shouldAskCompany","ssnFormatValidator","validators","regex","ssnValidator","inSequence","tinValidator","countryOptions","countryName","noteOptions","ReasonNote","keys","record","formatIndustry","useFormatIndustry","industryOptions","Industry","industry","fieldArray","handleSubmit","useForm","initialValues","politicallyExposedPerson","otherTaxPayerCountries","selectedDropdownOption","ssn","specialRelationships","riskyActivities","secondCitizenshipField","secondCitizenship","secondCitizenshipRadio","fieldValidators","otherIndustry","fieldArrayValidators","foldPredicate","trim","onSubmit","otherTaxPayerCountriesFieldArray","useLayoutEffect","push","link","remove","namePrefix","onRemove","showRemoveButton","PlusIcon","placeholder","clearable","searchable","Transactions","initialTransactionsInfo","Transactions1","getPaymentDestinationLabel","getTransactionTypeLabel","shouldAskPaymentDestinationCountries","shouldAskCashTransactionMotivation","paymentDestionationCountries","paymentDestinationCountries","cashTransactionMotivation","paymentDestinationLabel","transactionTypeLabel","paymentDestinationOptions","transactionTypeOptions","optionKey","isOptionDisabled","renderOption","renderOptionChildren","Transactions2","apiParameters","tenant","portalBlocked","usePortalStatusContext","countriesToDropdownOptions","initialSelectedCountries","paymentDestinationCountriesWithLabels","selectedCountries","setSelectedCountries","embargoedCountriesOrOther","setEmbargoedCountriesOrOther","getEmbargoedCountriesApi","isEmbargoedCountrySelected","drowpDowns","countryEq","eqStrict","resp","sort","ord","ordString","contramap","uniq","insertAt","getIncomingPaymentsLabel","getSourceOfFundsLabel","workAroundAlwaysRightValidator","fromPredicate","averageMonthlyIncomePayments","reasonOfTransactions","source","otherFunds","otherSource","flatten","employerName","companyICO","dropdownCountry","incomeId","fundsId","sourceOfIncome","join","PaymentDestination2","averageIncomeOptions","foldTenant","Object","AverageIncomingPaymentsIdSk","AverageIncomingPaymentsIdCz","sourceOfFundsOptions","SourceOfFundsId","cancelLabel","noResultsLabel","clearSelectionLabel","filterInputPlaceholder","isMulti","ctaLabel","shouldAskOtherFundsDetails","SaveApplicationDialog","confirmLabel","onConfirm","onSave","onCancel","RefinancingCreditsCheck","isPanelOpen","setIsPanelOpen","topUp","preapprovedLimit","limit","preapprovedLimitCurrency","isTopUpActive","internal","external","maximumPreapprovedLimit","liabilities","onLoanSelection","refinancingLimitExceeded","maxLoanAmount","eligibleForPreapproved","isOpen","headerIcon","onSelect","prevState","RefinancingAccountSelection","enableCfRepaidLoans","selectLoanCommand","selectLoanForRefinancing","selectedLoansForRefinancing","selectedInternalLoans","liabilitiesList","loan","selectedForRefinance","selectedExternalLoans","selectedRepaidLoans","count","reduce","res","repaid","initSelectedLoansForRefinancing","showAmountIsTooHighError","setAmountIsTooHighError","success800","error900","internalFieldArray","externalFieldArray","selectLoan","origin","loanData","response","countDifference","countRepaidDifference","amountDifference","console","log","OfferReview","appStateRequiredDocuments","setDisbursementAccount","disbursementAccount","continueButton","authenticationMethod","accountsLoading","setAccountsLoading","documentsLoading","setDocumentsLoading","onFinishLoading","OfferReviewDetailDialog","enableBankFee50FE","enableBankFee50","formatMoneyAmountValueInteger","cpiMonthlyAmount","apr","totalPayableAmount","bankingFee","bankingFeeIncluded","feeIncluded","OfferReviewSelect3P","assignedBrokerData","refreshAssignedData","dialogOpen","setDialogOpen","unwrap","isAssigned","assignedBroker","firstName","lastName","phoneNumber","renderBrokerData","brokerageCompany","renderCard","brokerInfo","ApplicationBrokerForBankerDialog","nonEmptyString","validEmail","saveAssignedBrokerForBanker","brokerSelectionError","setBrokerSelectionError","setValues","_","activeQueryTerms","emailField","AccountsForRefinancing","getAccounts","getAccountsForRefinancing","submitAccounts","submitAccountsForRefinancing","reworkedAccounts","oldValues","accounts","getAccountsForRefinancingStepChanges","el","reworkApi","reworkComments","areReworkComments","reworkBanner","liability","account","InternalLiabilityRow","typeOfProductField","originalAmountField","remainingAmountField","ExternalLiabilitiesEditForm","loanProviderListQuery","ExternalLiabilitiesEditFormInternal","loanProviderList","digitsOnly","loanProviderSelectedCommand","loanProviderSelected","defaultCreditorConfig","accountPlaceholder","variableSymbolPlaceholder","accountReadonly","creditorConfigs","setCreditorConfigs","Array","fill","modulo11Weights","externalLiabilities","creditorName","creditCardNumber","text","lp","textWithoutWhiteChars","replace","test","parts","split","zipWith","reverse","parseInt","prev","next","lengthRange","creditorCode","submitButton","externalLiabilitiesFieldArray","setCreditorConfigByIndex","creditorConfig","newConfig","onCreditorNameChanged","loanType","provider","accountForDisbursmentHint","variableSymbolHint","updateCreditorConfig","ExternalLiabilitiesEdititableItem","isSubmitting","useLoadingStatusRead","wrapper","renderAccountForDisbursement","inputMode","MaskedCreditCardField","splittedMaskedCardNumber","initialNumbers","finalNumbers","toUpperCase","readerTaskEither","submit","autoFocus","focus","bankIdentity","idConfirmation","MicroTransaction","modulo11Compliant","submitBankAccount","getBasicPersonalData","checked","fullName","form","multiline","BankIdentitiesDropdown","initialValue","SLSummary","goToMicroPayments","lfStatus","isRLProductType","productType","onGoToClientPage","goToClient","SummaryExistingClient","foldStatus","useCheckDay","whenLoading","whenReady","info","dayInfo","isWorkingDay","getFeedbackText","ConfirmClientData","formatDocumentType","useFormatDocumentType","defaultCountry","useDefaultCountryCode","reworkDocument","pd","documentPayload","personalDataFormState","formStateFromPersonalDataOCR","permanentAddressFromOCR","formStateFromAddressOCR","renderDocumentDetailsForm","personalDocument","readOnly","formStateFromPersonalDocumentOCR","issue","authorityMandatory","issuerMandatory","reworkDocumentDetails","dd","authorityCountry","reworkClientProfile","nationality","titleBefore","isTouchScreen","useIsTouchScreen","displayCountryOfBirth","details","hint","reworkAddress","lockCzSk","MicroTransactionOverview","showInfoBanner","setShowInfoBanner","QRCodeFile","sequenceS","MicroPaymentCard","qrCode","promotionBenefit","formattedAccount","leftSide","rightSide","white","blue600","data-test-id","OfferReviewPush","ReloadSuspense","onReload","CheckExpensesOffers","onApproved","SendAdditionalIncome","sendAdditionalIncome","errorNo","setErrorNo","canPoll","setCanPoll","lfDecision","restartPoll","getBonitaStatus","bonitaStatus","curr","proceedWithAdditionalIncomeResponse","onCounterOffer","onRejected","Select3P","setEditing","removeAssignedBrokerForBanker","isRemovingAssignedBroker","setIsRemovingAssignedBroker","brokerSelected","setBrokerSelected","cannotContinueError","setCannotContinueError","renderEmailInput","paddingTop","UCInfoIcon","justifyContent","loanOffer","getOrElseW","RepaidLoans","repaidLoans","getRepaidLoans","submitLoans","submitRepaidLoans","resposne","RepaidLiabilitiesEditForm","RepaidLiabilitiesEditFormInternal","RepaidLiabilitiesEdititableItem"],"mappings":"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","file":"static/js/index~0f315254.177e61c4.chunk.js","sourcesContent":["import { eq, option } from \"fp-ts\";\nimport { constFalse } from \"fp-ts/function\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport * as t from \"io-ts\";\nimport { nonEmptyArray } from \"io-ts-types/lib/nonEmptyArray\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { apiCall } from \"../../APICall\";\nimport { Currency, optionFromUndefined } from \"../../globalDomain\";\nimport { LocaleKey } from \"../../intl\";\nimport { PersonalDataFromOutput } from \"../Confirmation/domain\";\nimport {\n ExternalLoansListRework,\n IncomeAndPersonalData,\n InternalLoansListRework,\n} from \"../api\";\nimport {\n AllowanceInfo,\n CompanyInfo,\n ContractInfo,\n IncomeInfoNoSource,\n IncomeSourceType,\n SpecialIncomeSourceType,\n} from \"../IncomeForm/domain\";\nimport {\n AddressOCR,\n AddressWrite,\n PersonalDataOCR,\n PersonalDocumentOCR,\n PersonalInfoError,\n} from \"../../IdUpload/domain\";\nimport { withFallback } from \"io-ts-types/lib/withFallback\";\nimport { DocumentType } from \"../../UploadDocuments/domain\";\nimport { Option } from \"fp-ts/Option\";\nimport { LocalizedString } from \"design-system\";\n\nconst ReworkStep = t.keyof(\n {\n ACCOUNTS_FOR_REFINANCING: true,\n REPAID_LOANS: true,\n ADDITIONAL_INCOME: true,\n AUTHORIZATION_PAGE: true,\n INCOME_AND_PERSONAL_DATA: true,\n PERSONAL_DATA: true,\n UPLOAD_DOCUMENTS: true,\n },\n \"ReworkStep\"\n);\n\nexport type ReworkStep = t.TypeOf;\n\nconst ReworkStepsOutput = t.type(\n {\n needContractsUpdate: t.boolean,\n steps: nonEmptyArray(ReworkStep),\n reworkAll: t.boolean,\n },\n \"ReworkStepsOutput\"\n);\n\nexport type ReworkStepsOutput = t.TypeOf;\n\nexport const reworkDetails = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"rework\", \"reworkDetails\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: ReworkStepsOutput,\n});\n\nconst ReworkActionCategory = t.keyof(\n {\n PERSONAL_ID: true,\n PERSONAL_DATA: true,\n BONITA: true,\n CONTRACT: true,\n DOCUMENT: true,\n },\n \"ReworkActionCategory\"\n);\n\nexport type ReworkActionCategory = t.TypeOf;\n\nconst StepCommentsInput = t.type(\n {\n reworkCategories: t.array(ReworkActionCategory),\n },\n \"StepCommentsInput\"\n);\n\nexport type StepCommentsInput = t.TypeOf;\n\nconst StepCommentsOutput = t.type(\n {\n stepComments: optionFromUndefined(t.array(t.string)),\n },\n \"StepCommentsOutput\"\n);\n\nexport type StepCommentsOutput = t.TypeOf;\n\nexport const stepComments = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"rework\", \"stepComments\"],\n inputCodec: StepCommentsInput,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: StepCommentsOutput,\n});\n\nconst ReworkIncomeOutputBase = t.type(\n {\n allowanceInfo: optionFromUndefined(AllowanceInfo),\n companyInfo: optionFromUndefined(CompanyInfo),\n contractInfo: optionFromUndefined(ContractInfo),\n },\n \"ReworkIncomeOutputBase\"\n);\n\nconst ReworkIncomeSourceInfo = t.type(\n {\n incomeSource: optionFromUndefined(IncomeSourceType),\n specialTypeOfIncome: optionFromUndefined(SpecialIncomeSourceType),\n },\n \"ReworkIncomeSourceInfo\"\n);\n\nconst ReworkIncomeInfo = t.intersection(\n [IncomeInfoNoSource, ReworkIncomeSourceInfo],\n \"ReworkIncomeInfo\"\n);\n\nexport const ReworkIncomeOutput = t.intersection(\n [\n ReworkIncomeOutputBase,\n t.type({ incomeInfo: optionFromUndefined(ReworkIncomeInfo) }),\n ],\n \"ReworkIncomeOutput\"\n);\n\nexport type ReworkIncomeOutput = t.TypeOf;\n\nexport const ReworkIncomeNoSourceOutput = t.intersection(\n [\n ReworkIncomeOutputBase,\n t.type({ incomeInfo: optionFromUndefined(IncomeInfoNoSource) }),\n ],\n \"ReworkIncomeNoSourceOutput\"\n);\n\nexport type ReworkIncomeNoSourceOutput = t.TypeOf<\n typeof ReworkIncomeNoSourceOutput\n>;\n\nconst ReworkIncomeAndPersonalData = t.type({\n income: optionFromUndefined(ReworkIncomeOutput),\n personalData: optionFromUndefined(\n t.type({\n personalData: PersonalDataFromOutput,\n })\n ),\n});\n\nexport type ReworkIncomeAndPersonalData = t.TypeOf<\n typeof ReworkIncomeAndPersonalData\n>;\n\nconst ReworkAdditionalIncomeMap = t.record(\n t.string,\n ReworkIncomeOutput,\n \"ReworkAdditionalIncomeMap\"\n);\n\nexport type ReworkAdditionalIncomeMap = t.TypeOf<\n typeof ReworkAdditionalIncomeMap\n>;\n\nconst ReworkAccountsForRefinancingOutput = t.type(\n {\n accountNumber: optionFromUndefined(NonEmptyString),\n accountCurrency: optionFromUndefined(Currency),\n internalLoans: optionFromUndefined(InternalLoansListRework),\n externalLoans: optionFromUndefined(ExternalLoansListRework),\n },\n \"ReworkAccountsForRefinancingOutput\"\n);\n\nexport type ReworkAccountsForRefinancingOutput = t.TypeOf<\n typeof ReworkAccountsForRefinancingOutput\n>;\n\nexport const ClientDataReworkOCR = t.type({\n documentType: optionFromUndefined(DocumentType),\n personalData: optionFromUndefined(PersonalDataOCR),\n documentDetails: optionFromUndefined(PersonalDocumentOCR),\n permanentAddress: optionFromUndefined(AddressOCR),\n addressSuggestions: optionFromUndefined(nonEmptyArray(AddressWrite)),\n validationErrors: withFallback(\n optionFromUndefined(PersonalInfoError),\n option.none\n ),\n});\nexport type ClientDataReworkOCR = t.TypeOf;\n\nexport type ExtractedDataReworkResult = {\n documentType: Option;\n additionalDocumentType: Option;\n personalData: Option;\n documentDetails: Option;\n additionalDocumentDetails: Option;\n permanentAddress: Option;\n validationErrors: Option;\n addressSuggestions: Option>;\n};\n\nconst ReworkOldValuesOutput = t.type(\n {\n accountsForRefinancingData: optionFromUndefined(\n ReworkAccountsForRefinancingOutput\n ),\n additionalIncomeMap: optionFromUndefined(ReworkAdditionalIncomeMap),\n // allPreApprovedLimitsResponse: optionFromNullable(TLAndCLLimits),\n // genericLoanResponse: GenericLoanResponseOutput,\n // personalDataResponse: PersonalDataOutput,\n incomeAndPersonalData: optionFromUndefined(ReworkIncomeAndPersonalData),\n //microTransactionData: optionFromUndefined(MicroTransactionDataOutput),\n //standardLoanKycRequest: optionFromUndefined(StandardLoanKycRequest),\n //startStandardLoanApplicationRequest: StartLoanApplicationInput,\n //creditBureauStatusResponse: CreditBureauStatus,\n //proceedNextResponse: optionFromUndefined(OfferTypeOutput),\n personalDataConfirmation: optionFromUndefined(\n t.type({\n primary: optionFromUndefined(ClientDataReworkOCR),\n secondary: optionFromUndefined(ClientDataReworkOCR),\n })\n ),\n },\n \"ReworkOldValuesOutput\"\n);\n\nexport type ReworkOldValuesOutput = t.TypeOf;\n\nexport const getReworkOldValues = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"rework\", \"oldValues\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: ReworkOldValuesOutput,\n});\n\nexport type ReworkChangesItemData = {\n variant: \"item\";\n label: LocaleKey;\n} & (\n | {\n type: \"string\";\n oldValue: Option;\n newValue: Option;\n }\n | {\n type: \"money\";\n oldValue: Option;\n newValue: Option;\n }\n | {\n type: \"date\";\n oldValue: Option;\n newValue: Option;\n }\n | {\n type: \"boolean\";\n oldValue: Option;\n newValue: Option;\n }\n);\n\nexport type ReworkChangesItem = { variant: \"divider\" } | ReworkChangesItemData;\n\nexport type ReworkChanges = NonEmptyArray;\n\nexport type IncomeAndPersonalDataRework = {\n oldValues: ReworkOldValuesOutput;\n newValues: IncomeAndPersonalData;\n};\n","import { eq } from \"fp-ts\";\nimport { constFalse } from \"fp-ts/function\";\nimport * as t from \"io-ts\";\nimport { nonEmptyArray } from \"io-ts-types/lib/nonEmptyArray\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { apiCall } from \"../../APICall\";\nimport { GenericLoanOffer, GenericLoanResponseOutput } from \"../api\";\n\nexport const UpsellOfferList = t.type(\n {\n applicationId: NonEmptyString,\n clientId: NonEmptyString,\n offers: nonEmptyArray(GenericLoanOffer),\n },\n \"StandardLoanOfferList\"\n);\n\nconst CheckOfferStatus = t.keyof(\n {\n PENDING: true,\n RECEIVED: true,\n TIMEOUT: true,\n },\n \"CheckOfferStatus\"\n);\nexport type CheckOfferStatus = t.TypeOf;\n\nconst CheckOffersOutput = t.type(\n {\n status: CheckOfferStatus,\n },\n \"CheckOffersOutput\"\n);\nexport type CheckOffersOutput = t.TypeOf;\n\nexport const checkOffers = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"offer\", \"checkOffers\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: CheckOffersOutput,\n});\n\nexport const checkExpensesOffers = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"offer\", \"checkExpensesOffers\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: CheckOffersOutput,\n});\n\nexport const getCounterOffers = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"offer\", \"getCounterOffers\"],\n inputCodec: t.void,\n outputCodec: UpsellOfferList,\n});\n\nexport const getSelectedOffer = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"offer\", \"getSelectedOffer\"],\n inputCodec: t.void,\n outputCodec: GenericLoanOffer,\n});\n\nexport const getUpsellOffers = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"offer\", \"getUpsellOffers\"],\n inputCodec: t.void,\n outputCodec: UpsellOfferList,\n});\n\nexport const saveSelectedOffer = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\"packages\", \"loans\", \"standard-loan\", \"offer\", \"saveSelectedOffer\"],\n inputCodec: GenericLoanOffer,\n outputCodec: GenericLoanResponseOutput,\n});\n\nexport const saveCustomerSelectedOffer = apiCall({\n inputEq: eq.fromEquals(constFalse),\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"offer\",\n \"saveCustomerSelectedOffer\",\n ],\n inputCodec: t.void,\n outputCodec: GenericLoanResponseOutput,\n});\n","import { useFormatMessage } from \"../../intl\";\nimport { array, option, tuple } from \"fp-ts\";\nimport { constant, constNull, identity, pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport {\n Banner,\n Box,\n Dialog,\n Divider,\n Heading,\n InfoIcon,\n ReadOnlyField,\n FormRow,\n Space,\n Stack,\n useIsMobileLayout,\n Body,\n ContentRow,\n unsafeLocalizedString,\n} from \"design-system\";\nimport { useState } from \"react\";\nimport {\n ReworkChangesItem,\n ReworkChangesItemData,\n StepCommentsOutput,\n} from \"./api\";\nimport { ReadOnlyDateField } from \"../../Common/ReadOnlyDateField/ReadOnlyDateField\";\nimport { ReadOnlyMoneyAmountField } from \"../../Common/ReadOnlyMoneyAmountField/ReadOnlyMoneyAmountField\";\nimport { useTenantCurrency } from \"../../Common/useTenantCurrency\";\nimport { ReadOnlyYesNoField } from \"../../Common/ReadOnlyYesNoField/ReadOnlyYesNoField\";\nimport { useQuery } from \"../../useAPI\";\nimport * as api from \"../IncomeForm/api\";\nimport * as remoteData from \"../../RemoteData\";\nimport { useAppContext } from \"../../useAppContext\";\n\ntype Props = {\n changes: Option;\n stepComments: Option;\n hideChangesSection?: boolean;\n forceDisplayComments?: boolean;\n};\n\nexport function ReworkBanner(props: Props) {\n const formatMessage = useFormatMessage();\n const currency = useTenantCurrency();\n const isMobileLayout = useIsMobileLayout();\n\n const [showDetails, setShowDetails] = useState(false);\n\n const jobPositions = pipe(\n useQuery(api.jobPositions),\n tuple.fst,\n remoteData.fold(constant([]), constant([]), identity)\n );\n\n const {\n config: { r6Enabled },\n } = useAppContext();\n\n const renderItemValue = (valueType: \"old\" | \"new\") => (\n item: ReworkChangesItemData\n ) => {\n switch (item.type) {\n case \"string\":\n let stringValue = valueType === \"old\" ? item.oldValue : item.newValue;\n if (item.label === \"StandardLoan.EmployedCard.jobPosition\") {\n const jobPosition = pipe(\n jobPositions,\n array.findFirst(\n o =>\n pipe(\n stringValue,\n option.getOrElse(constant(\"\"))\n ).toLowerCase() === o.key.toLowerCase()\n )\n );\n const jobPositionName = pipe(\n jobPosition,\n option.fold(\n () => stringValue,\n ({ name }) => option.some(name)\n )\n );\n stringValue = jobPositionName;\n }\n return (\n \n );\n case \"money\":\n const moneyValue = valueType === \"old\" ? item.oldValue : item.newValue;\n return pipe(\n moneyValue,\n option.fold(\n constant(\n \n ),\n value => (\n \n )\n )\n );\n case \"date\":\n const dateValue = valueType === \"old\" ? item.oldValue : item.newValue;\n return (\n \n );\n case \"boolean\":\n const booleanValue =\n valueType === \"old\" ? item.oldValue : item.newValue;\n return pipe(\n booleanValue,\n option.fold(\n constant(\n \n ),\n value => (\n \n )\n )\n );\n }\n };\n\n const changesHeader = isMobileLayout ? (\n \n \n \n {formatMessage(\"StandardLoan.Rework.Dialog.oldValues\")}\n \n \n \n \n {formatMessage(\"StandardLoan.Rework.Dialog.newValues\")}\n \n \n \n ) : (\n \n \n {formatMessage(\"StandardLoan.Rework.Dialog.oldValues\")}\n \n \n {formatMessage(\"StandardLoan.Rework.Dialog.newValues\")}\n \n \n );\n\n const change = (change: ReworkChangesItem) =>\n change.variant === \"item\" ? (\n isMobileLayout ? (\n \n \n {pipe(change, renderItemValue(\"old\"))}\n \n \n {pipe(change, renderItemValue(\"new\"))}\n \n \n ) : (\n \n {pipe(change, renderItemValue(\"old\"))}\n {pipe(change, renderItemValue(\"new\"))}\n \n )\n ) : (\n <>\n \n \n \n \n );\n\n function shouldDisplay(c: ReworkChangesItem) {\n if (c.variant === \"item\") {\n let areDifferent = false;\n if (c.type === \"string\") {\n let old = pipe(\n c.oldValue,\n option.fold(constNull, val => val)\n );\n areDifferent =\n pipe(\n c.newValue,\n option.fold(constNull, val => val)\n ) != old && old != \"\";\n } else if (c.type === \"boolean\") {\n areDifferent =\n pipe(\n c.newValue,\n option.fold(constNull, val => val)\n ) !=\n pipe(\n c.oldValue,\n option.fold(constNull, val => val)\n );\n } else if (c.type === \"money\") {\n areDifferent =\n pipe(\n c.newValue,\n option.fold(constNull, val => val)\n ) !=\n pipe(\n c.oldValue,\n option.fold(constNull, val => val)\n );\n } else if (c.type === \"date\") {\n areDifferent =\n pipe(\n c.newValue,\n option.fold(constNull, val => val)\n ) !=\n pipe(\n c.oldValue,\n option.fold(constNull, val => val)\n );\n }\n return (\n option.isSome(c.oldValue) &&\n option.isSome(c.newValue) &&\n areDifferent\n );\n }\n return false;\n }\n\n const renderComments = pipe(\n props.stepComments,\n option.fold(\n () => <>,\n comments => (\n \n \n \n \n {unsafeLocalizedString(\"Comments\")}\n \n \n {option.isSome(comments.stepComments) &&\n comments.stepComments.value.map(comment => (\n \n \n {unsafeLocalizedString(comment)}\n \n \n ))}\n \n \n \n \n )\n )\n );\n\n const renderNoChangesBanner = (\n \n );\n\n const filterChanges = pipe(\n props.changes,\n option.map(\n array.filter(\n c =>\n c.variant === \"divider\" || (c.variant === \"item\" && shouldDisplay(c))\n )\n )\n );\n\n const areReworkChanges =\n option.isSome(filterChanges) && filterChanges.value.length > 0;\n\n return (\n \n setShowDetails(true),\n variant: \"secondary\",\n },\n ])}\n onDismiss={option.none}\n title={option.none}\n />\n {showDetails && (\n setShowDetails(false))}\n actions={[]}\n icon={InfoIcon}\n title={formatMessage(\"StandardLoan.Rework.Dialog.title\")}\n size=\"medium\"\n variant=\"center\"\n subtitle={formatMessage(\"StandardLoan.Rework.Dialog.subtitle\")}\n >\n {r6Enabled &&\n (areReworkChanges || props.forceDisplayComments) &&\n renderComments}\n {!props.hideChangesSection &&\n pipe(\n filterChanges,\n option.fold(constant(renderNoChangesBanner), changes =>\n changes.length > 0 ? (\n \n {changesHeader}\n {changes.map(change)}\n \n ) : (\n renderNoChangesBanner\n )\n )\n )}\n \n )}\n \n \n );\n}\n","import { LocalizedString } from \"design-system\";\nimport { array, eq, option } from \"fp-ts\";\n\nimport { constant, constFalse, pipe } from \"fp-ts/function\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport { Option } from \"fp-ts/Option\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport {\n RuntimeLocaleKey,\n useFormatCitizenshipOrOther,\n useFormatIncomeCurrency,\n useFormatMaritalStatus,\n useFormatMessage,\n useFormatMonthYearValue,\n useFormatPercentageLike,\n useFormatSex,\n useFormatYearValue,\n} from \"../../intl\";\nimport {\n foldPersonalDataField,\n PersonalDataFromOutput,\n} from \"../Confirmation/domain\";\nimport { ExtractedDataResult } from \"../../UploadDocuments/types\";\nimport { ExternalLoanItem, ExternalLoanItemRework } from \"../api\";\nimport { getTypeOfProductLabel } from \"../domain\";\nimport { useFormatTypeOfRent } from \"../IncomeForm/commons/Utils\";\nimport {\n ContractInfo,\n IncomeOutput,\n useFormatAllowanceType,\n useFormatEmploymentType,\n useFormatIncomeSourceType,\n useFormatPaymentMethod,\n} from \"../IncomeForm/domain\";\nimport { useFormatPensionType } from \"../IncomeForm/Forms/PensionerForm/utils\";\nimport {\n ClientDataReworkOCR,\n ExtractedDataReworkResult,\n ReworkChangesItem,\n ReworkIncomeOutput,\n} from \"./api\";\nimport moment from \"moment\";\n\nexport const mergeExtractDataDocumentsReworkOutput = (\n primary: Option,\n secondary: Option\n): Option => {\n const isThereAnAdditionalDocument =\n option.isSome(primary) && option.isSome(secondary);\n return pipe(\n primary,\n option.alt(constant(secondary)),\n option.map(document => ({\n documentType: document.documentType,\n additionalDocumentType: pipe(\n secondary,\n option.chain(document => document.documentType),\n option.filter(constant(isThereAnAdditionalDocument))\n ),\n personalData: document.personalData,\n permanentAddress: document.permanentAddress,\n documentDetails: document.documentDetails,\n addressSuggestions: document.addressSuggestions,\n additionalDocumentDetails: pipe(\n secondary,\n option.chain(document => document.documentDetails),\n option.filter(constant(isThereAnAdditionalDocument))\n ),\n validationErrors: document.validationErrors,\n }))\n );\n};\n\nexport function useGetPersonalDataStepChanges(\n clientData: ExtractedDataResult,\n oldDocument: Option\n): Option {\n const formatCitizenshipOrOther = useFormatCitizenshipOrOther();\n const formatMaritalStatus = useFormatMaritalStatus();\n const formatSex = useFormatSex();\n\n return pipe(\n oldDocument,\n option.map(doc => [\n ...pipe(\n doc.personalData,\n option.fold(constant([]), p =>\n pipe[], ReworkChangesItem[]>(\n [\n pipe(\n p.title,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.title\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: clientData.personalData.title,\n }))\n ),\n pipe(\n p.titleAfter,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.titleAfter\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: clientData.personalData.titleAfter,\n }))\n ),\n pipe(\n p.name,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.name\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: clientData.personalData.name,\n }))\n ),\n pipe(\n p.surname,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.surname\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: clientData.personalData.surname,\n }))\n ),\n pipe(\n p.sex,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.sex\",\n type: \"string\",\n oldValue: option.some(pipe(v, formatSex)),\n newValue: pipe(\n clientData.personalData.sex,\n option.map(formatSex)\n ),\n }))\n ),\n pipe(\n p.maritalStatus,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.maritalStatus\",\n type: \"string\",\n oldValue: option.some(pipe(v, formatMaritalStatus)),\n newValue: pipe(\n clientData.personalData.maritalStatus,\n option.map(formatMaritalStatus)\n ),\n }))\n ),\n pipe(\n p.dateOfBirth,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.birthDate\",\n type: \"date\",\n oldValue: option.some(v),\n newValue: clientData.personalData.dateOfBirth,\n }))\n ),\n pipe(\n p.birthNumber,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.birthNumber\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: clientData.personalData.birthNumber,\n }))\n ),\n pipe(\n p.placeOfBirth,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.birthPlace\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: clientData.personalData.placeOfBirth,\n }))\n ),\n pipe(\n p.countryOfBirth,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.countryOfBirth.label\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: clientData.personalData.countryOfBirth,\n }))\n ),\n pipe(\n p.citizenship,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.citizenship\",\n type: \"string\",\n oldValue: option.some(pipe(v, formatCitizenshipOrOther)),\n newValue: pipe(\n clientData.personalData.citizenship,\n option.map(formatCitizenshipOrOther)\n ),\n }))\n ),\n ],\n array.compact\n )\n )\n ),\n ...pipe(\n doc.documentDetails,\n option.fold(constant([]), v =>\n pipe[], ReworkChangesItem[]>(\n [\n pipe(\n v.idNumber,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.idNumber\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: clientData.documentDetails.idNumber,\n }))\n ),\n pipe(\n v.dateOfIssuing,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.dateOfIssuing\",\n type: \"date\",\n oldValue: option.some(v),\n newValue: clientData.documentDetails.dateOfIssuing,\n }))\n ),\n pipe(\n v.validUntil,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.validUntil\",\n type: \"date\",\n oldValue: option.some(v),\n newValue: clientData.documentDetails.validUntil,\n }))\n ),\n pipe(\n v.authority,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.authority\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: clientData.documentDetails.authority,\n }))\n ),\n pipe(\n v.issuer,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.personalData.placeOfIssue\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: clientData.documentDetails.issuer,\n }))\n ),\n ],\n array.compact\n )\n )\n ),\n ...pipe(\n doc.permanentAddress,\n option.fold(constant([]), v =>\n pipe[], ReworkChangesItem[]>(\n [\n pipe(\n v.country,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.address.country\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: pipe(\n clientData.permanentAddress,\n option.chain(p => p.country)\n ),\n }))\n ),\n pipe(\n v.city,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.address.city\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: pipe(\n clientData.permanentAddress,\n option.chain(p => p.city)\n ),\n }))\n ),\n pipe(\n v.streetName,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.address.streetName\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: pipe(\n clientData.permanentAddress,\n option.chain(p => p.streetName)\n ),\n }))\n ),\n pipe(\n v.streetNumber,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.address.streetNumber\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: pipe(\n clientData.permanentAddress,\n option.chain(p => p.streetNumber)\n ),\n }))\n ),\n pipe(\n v.zipCode,\n option.map(v => ({\n variant: \"item\",\n label: \"Identification.address.zipCode\",\n type: \"string\",\n oldValue: option.some(v),\n newValue: pipe(\n clientData.permanentAddress,\n option.chain(p => p.zipCode)\n ),\n }))\n ),\n ],\n array.compact\n )\n )\n ),\n ])\n );\n}\n\nexport function useGetCreditChecksStepChanges(): (\n income: IncomeOutput,\n oldIncome: Option\n) => Option {\n const formatIncomeSourceType = useFormatIncomeSourceType();\n const formatYearValue = useFormatYearValue();\n const isLowerThanTwoYears = (contractInfo: Option) => {\n return pipe(\n contractInfo,\n option.fold(constFalse, contractInfo_ =>\n pipe(\n contractInfo_.startingDate,\n option.fold(constFalse, monthYear => {\n const then = moment(\n monthYear.year + \"-\" + (monthYear.month - 1) + \"-\" + \"1\",\n \"YYYY-MM-DD\"\n );\n const now = moment();\n return now.diff(then, \"year\") > 2;\n })\n )\n )\n );\n };\n const formatMonthYearValue = useFormatMonthYearValue();\n const formatEmploymentType = useFormatEmploymentType();\n const formatPaymentMethod = useFormatPaymentMethod();\n const formatPercentageLike = useFormatPercentageLike();\n const formatTypeOfRent = useFormatTypeOfRent();\n const formatAllowanceType = useFormatAllowanceType();\n const formatPensionType = useFormatPensionType();\n const formatCurrency = useFormatIncomeCurrency();\n\n return (income: IncomeOutput, oldIncome: Option) =>\n pipe(\n oldIncome,\n option.map(oldIncome => [\n {\n variant: \"item\",\n label: \"StandardLoan.IncomeForm.sourceOfIncome\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.map(i =>\n pipe(\n i.incomeSource,\n option.fold(() => \"\", formatIncomeSourceType)\n )\n )\n ),\n newValue: pipe(\n income.incomeInfo,\n option.map(i => pipe(i.incomeSource, formatIncomeSourceType))\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.IncomeForm.specialSourceOfIncome\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.specialTypeOfIncome)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i =>\n i.incomeSource === \"SpecialType\"\n ? option.some(\n pipe(i.specialTypeOfIncome, formatIncomeSourceType)\n )\n : option.none\n )\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.salaryCurrency\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.map(i =>\n pipe(\n i.salaryCurrency,\n option.fold(() => \"\", formatCurrency)\n )\n )\n ),\n newValue: pipe(\n income.incomeInfo,\n option.map(i =>\n pipe(\n i.salaryCurrency,\n option.fold(() => \"\", formatCurrency)\n )\n )\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.monthlyIncome\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.monthlyIncome)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.monthlyIncome)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.lastYearEquityAmountLabel\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.equityFromLastYear)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.equityFromLastYear)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.sumOfPaidShareLabel\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.sumOfPaidShareOfProfit)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.sumOfPaidShareOfProfit)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.CompanyOwner.ContractSection.isEmployOfTheCompanyLabel\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.employedInCompany)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.employedInCompany)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.FreelancerCard.taxBase\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.taxBase)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.taxBase)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.FreelancerCard.tax\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.tax)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.tax)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.FreelancerCard.businessGrossIncome\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.businessGrossIncome)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.businessGrossIncome)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.FreelancerCard.keepsAccountancy\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.keepsAccountancy)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.keepsAccountancy)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.FreelancerCard.grossIncomes\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.grossIncomes)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.grossIncomes)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.FreelancerCard.r101BruttoIncomes\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.r101BruttoIncomes)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.r101BruttoIncomes)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.FreelancerCard.r37PartialTaxBase\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.r37PartialTaxBase)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.r37PartialTaxBase)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.FreelancerCard.r74TaxAfterClaimedRelief\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.r74TaxAfterClaimedRelief)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.r74TaxAfterClaimedRelief)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.incomeFromRentContractLabel\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.incomeFromRentContract)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.incomeFromRentContract)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.incomeOnlyFromLeaseLabel\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.r201IncomeFromLease)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.r201IncomeFromLease)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.partialTaxFromCapitalLabel\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.r38PartialTaxBase)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.r38PartialTaxBase)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.partialTaxFromActivityLeaseLabel\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.r39PartialTaxBase)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.r39PartialTaxBase)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.AdditionalIncome.IncomeSection.typeOfRent\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.typeOfRent),\n option.map(formatTypeOfRent)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => pipe(i.typeOfRent, option.map(formatTypeOfRent)))\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.IsReCoOwnedByAnotherPerson\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.reCoOwned)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.reCoOwned)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.IsReInPersonalOwnershipLabel\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.reInPersonalOwnership)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.reInPersonalOwnership)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.IsReUsedCollateral\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.reUsedAsCollateral)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.reUsedAsCollateral)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.amortizationOfRentedLabel\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.amortizationOfRentedRe)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.amortizationOfRentedRe)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.IsCooperativeOwnership\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.isCooperativeOwnership)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.isCooperativeOwnership)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.IsApplicantDeclareAsUserInDeclaration\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.isApplicantDeclareAsUserInDeclaration)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.isApplicantDeclareAsUserInDeclaration)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.allowanceType\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.maternityOrParentalIncomeDetails),\n option.chain(m => m.allowanceType),\n option.map(formatAllowanceType)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.maternityOrParentalIncomeDetails),\n option.chain(i =>\n pipe(i.allowanceType, option.map(formatAllowanceType))\n )\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.MaternityLeave.monthlySocialBenefit\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.maternityOrParentalIncomeDetails),\n option.chain(m => m.monthlySocialBenefit)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.maternityOrParentalIncomeDetails),\n option.chain(i => i.monthlySocialBenefit)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.PensionerForm.IncomeSection.pensionType\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.pensionerIncomeDetails),\n option.chain(m => m.pensionType),\n option.map(formatPensionType)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.pensionerIncomeDetails),\n option.chain(i =>\n pipe(i.pensionType, option.map(formatPensionType))\n )\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.PensionerForm.IncomeSection.monthlyIncome\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.pensionerIncomeDetails),\n option.chain(m => m.monthlyPension)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.pensionerIncomeDetails),\n option.chain(i => i.monthlyPension)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.PensionerForm.IncomeSection.monthlyRent\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.pensionerIncomeDetails),\n option.chain(m => m.monthlyRent)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.pensionerIncomeDetails),\n option.chain(i => i.monthlyRent)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.monthlyIncome\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.alimonyIncomeDetails),\n option.chain(m => m.monthlyAlimonyIncome)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.alimonyIncomeDetails),\n option.chain(i => i.monthlyAlimonyIncome)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.AlimonyCard.childrenInvolved\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.alimonyIncomeDetails),\n option.chain(m => m.alimonyChildrenInvolved),\n option.map(toString)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.alimonyIncomeDetails),\n option.chain(i =>\n pipe(i.alimonyChildrenInvolved, option.map(toString))\n )\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.AlimonyCard.alimonyIdentifiable\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.alimonyIncomeDetails),\n option.chain(m => m.alimonyIdentifiable)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.alimonyIncomeDetails),\n option.chain(i => i.alimonyIdentifiable)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.AlimonyCard.alimonyOutsideCountry\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.alimonyIncomeDetails),\n option.chain(m => m.alimonyOutsideCountry)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.alimonyIncomeDetails),\n option.chain(i => i.alimonyOutsideCountry)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.salaryCurrency\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.incomeInfo,\n option.chain(i => i.alimonyIncomeDetails),\n option.chain(m => m.alimonyCurrency),\n option.map(formatCurrency)\n ),\n newValue: pipe(\n income.incomeInfo,\n option.chain(i => i.alimonyIncomeDetails),\n option.chain(i =>\n pipe(i.alimonyCurrency, option.map(formatCurrency))\n )\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.CompanySection.companyNameLabel\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.companyInfo,\n option.chain(i => i.companyName)\n ),\n newValue: pipe(\n income.companyInfo,\n option.chain(i => i.companyName)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.CompanySection.companyIcoLabel\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.companyInfo,\n option.chain(i => i.companyIco)\n ),\n newValue: pipe(\n income.companyInfo,\n option.chain(i => i.companyIco)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.applicantShare\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.companyInfo,\n option.chain(i => i.applicantsShareHigherThan33)\n ),\n newValue: pipe(\n income.companyInfo,\n option.chain(i => i.applicantsShareHigherThan33)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.CompanyOwner.StakeInCompany\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.companyInfo,\n option.chain(i => i.stakeInCompany),\n option.map(formatPercentageLike)\n ),\n newValue: pipe(\n income.companyInfo,\n option.chain(i =>\n pipe(i.stakeInCompany, option.map(formatPercentageLike))\n )\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.AdditionalIncome.IncomeSection.isEquityPositiveLabel\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.companyInfo,\n option.chain(i => i.equityPositive)\n ),\n newValue: pipe(\n income.companyInfo,\n option.chain(i => i.equityPositive)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.FreelancerCard.freelancerType\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.companyInfo,\n option.chain(i => i.freelancerType)\n ),\n newValue: pipe(\n income.companyInfo,\n option.chain(i => i.freelancerType)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.FreelancerCard.startingDate\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.companyInfo,\n option.chain(i => i.businessStartingDate),\n option.map(formatMonthYearValue)\n ),\n newValue: pipe(\n income.companyInfo,\n option.chain(i =>\n pipe(i.businessStartingDate, option.map(formatMonthYearValue))\n )\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.Tradesman.CompanySection.BusinessSector.label\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.companyInfo,\n option.chain(i => i.businessSector)\n ),\n newValue: pipe(\n income.companyInfo,\n option.chain(i => i.businessSector)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.Contract.startingDate\",\n type: \"string\",\n oldValue: isLowerThanTwoYears(oldIncome.contractInfo)\n ? pipe(\n oldIncome.contractInfo,\n option.chain(i => i.startingDate),\n option.map(formatYearValue)\n )\n : pipe(\n oldIncome.contractInfo,\n option.chain(i => i.startingDate),\n option.map(formatMonthYearValue)\n ),\n newValue: isLowerThanTwoYears(income.contractInfo)\n ? pipe(\n income.contractInfo,\n option.chain(i => i.startingDate),\n option.map(formatYearValue)\n )\n : pipe(\n income.contractInfo,\n option.chain(i => i.startingDate),\n option.map(formatMonthYearValue)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.jobPosition\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.contractInfo,\n option.chain(i => i.jobPosition)\n ),\n newValue: pipe(\n income.contractInfo,\n option.chain(i => i.jobPosition)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.employmentType\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.contractInfo,\n option.chain(i => i.employmentType),\n option.map(formatEmploymentType)\n ),\n newValue: pipe(\n income.contractInfo,\n option.chain(i =>\n pipe(i.employmentType, option.map(formatEmploymentType))\n )\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.contractIndefinitePeriod\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.contractInfo,\n option.chain(i => i.contractIndefinitePeriod)\n ),\n newValue: pipe(\n income.contractInfo,\n option.chain(i => i.contractIndefinitePeriod)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.contractPeriodExpiration\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.contractInfo,\n option.chain(i => i.contractPeriodExpiration),\n option.map(formatMonthYearValue)\n ),\n newValue: pipe(\n income.contractInfo,\n option.chain(i =>\n pipe(i.contractPeriodExpiration, option.map(formatMonthYearValue))\n )\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.employedInSpecificProfessions\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.contractInfo,\n option.chain(i => i.employedInSpecificProfessions)\n ),\n newValue: pipe(\n income.contractInfo,\n option.chain(i => i.employedInSpecificProfessions)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.EmployedCard.lengthOfUninterruptedCurrentEmployment\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.contractInfo,\n option.chain(i => i.lengthOfUninterruptedCurrentEmployment),\n option.map(toString)\n ),\n newValue: pipe(\n income.contractInfo,\n option.chain(i =>\n pipe(\n i.lengthOfUninterruptedCurrentEmployment,\n option.map(toString)\n )\n )\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.inProbation\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.contractInfo,\n option.chain(i => i.inProbation)\n ),\n newValue: pipe(\n income.contractInfo,\n option.chain(i => i.inProbation)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.EmployedCard.workBasedOnAgreementOnWorkingActivity\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.contractInfo,\n option.chain(i => i.workBasedOnAgreementOnWorkingActivity)\n ),\n newValue: pipe(\n income.contractInfo,\n option.chain(i => i.workBasedOnAgreementOnWorkingActivity)\n ),\n },\n {\n variant: \"item\",\n label:\n \"StandardLoan.EmployedCard.lengthOfUninterruptedOverallEmployment\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.contractInfo,\n option.chain(i => i.lengthOfUninterruptedOverallEmployment),\n option.map(toString)\n ),\n newValue: pipe(\n income.contractInfo,\n option.chain(i =>\n pipe(\n i.lengthOfUninterruptedOverallEmployment,\n option.map(toString)\n )\n )\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.PaymentMethod.label\",\n type: \"string\",\n oldValue: pipe(\n oldIncome.contractInfo,\n option.chain(i => i.paymentMethod),\n option.map(formatPaymentMethod)\n ),\n newValue: pipe(\n income.contractInfo,\n option.chain(i =>\n pipe(i.paymentMethod, option.map(formatPaymentMethod))\n )\n ),\n },\n\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.receivesAllowance\",\n type: \"boolean\",\n oldValue: pipe(\n oldIncome.allowanceInfo,\n option.chain(i => i.receivesAllowance)\n ),\n newValue: pipe(\n income.allowanceInfo,\n option.chain(i => i.receivesAllowance)\n ),\n },\n {\n variant: \"item\",\n label: \"StandardLoan.EmployedCard.allowanceAmount\",\n type: \"money\",\n oldValue: pipe(\n oldIncome.allowanceInfo,\n option.chain(i => i.allowanceAmount)\n ),\n newValue: pipe(\n income.allowanceInfo,\n option.chain(i => i.allowanceAmount)\n ),\n },\n ])\n );\n}\n\nexport function useGetAdditionalIncomeStepChanges(\n additionalIncomeList: IncomeOutput[],\n oldAdditionalIncomeList: Option<\n (ReworkIncomeOutput & { uniqueId: Option })[]\n >\n): Option {\n const getCreditChecksStepChanges = useGetCreditChecksStepChanges();\n\n return pipe(\n oldAdditionalIncomeList,\n option.map(oldAdditionalIncomeList =>\n pipe(\n oldAdditionalIncomeList,\n array.chain(oldAddIncome => [\n ...pipe(\n additionalIncomeList,\n array.findFirst(ad =>\n option\n .getEq(eq.eqString)\n .equals(ad.uniqueId, oldAddIncome.uniqueId)\n ),\n option.fold(\n () =>\n getCreditChecksStepChanges(\n {\n allowanceInfo: option.none,\n companyInfo: option.none,\n contractInfo: option.none,\n incomeInfo: option.none,\n uniqueId: oldAddIncome.uniqueId,\n hasPreapprovedLimits: false,\n },\n option.some(oldAddIncome)\n ),\n newAddIncome =>\n getCreditChecksStepChanges(\n newAddIncome,\n option.some(oldAddIncome)\n )\n ),\n option.getOrElse(constant([]))\n ),\n {\n variant: \"divider\",\n },\n ])\n )\n )\n );\n}\n\nexport function useGetAccountsForRefinancingStepChanges(\n externalLoansList: ExternalLoanItem[],\n oldExternalLoansList: Option\n): Option {\n const formatMessage = useFormatMessage();\n\n return pipe(\n oldExternalLoansList,\n option.map(oldExternalLoansList =>\n pipe(\n oldExternalLoansList,\n array.chainWithIndex((index, oldExtenalLoan) =>\n pipe(\n externalLoansList,\n array.lookup(index),\n option.map(newExtenalLoan =>\n pipe[], ReworkChangesItem[]>(\n [\n pipe(\n oldExtenalLoan.type,\n option.map(type => ({\n variant: \"item\",\n label: \"StandardLoan.LiabilityItem.typeOfProductLabel\",\n type: \"string\",\n oldValue: option.some(\n formatMessage(getTypeOfProductLabel(type))\n ),\n newValue: option.some(\n formatMessage(\n getTypeOfProductLabel(newExtenalLoan.type)\n )\n ),\n }))\n ),\n pipe(\n oldExtenalLoan.creditor,\n option.map(creditor => ({\n variant: \"item\",\n label:\n \"StandardLoan.AccountsForRefinancing.creditorLabel\",\n type: \"string\",\n oldValue: option.some(creditor),\n newValue: newExtenalLoan.creditor,\n }))\n ),\n pipe(\n oldExtenalLoan.originalAmount,\n option.map(originalAmount => ({\n variant: \"item\",\n label: \"StandardLoan.LiabilityItem.originalAmountLabel\",\n type: \"money\",\n oldValue: option.some(originalAmount.amount),\n newValue: option.some(\n newExtenalLoan.originalAmount.amount\n ),\n }))\n ),\n pipe(\n oldExtenalLoan.remainingAmount,\n option.map(remainingAmount => ({\n variant: \"item\",\n label: \"StandardLoan.LiabilityItem.remainingAmountLabel\",\n type: \"money\",\n oldValue: option.some(remainingAmount.amount),\n newValue: option.some(\n newExtenalLoan.remainingAmount.amount\n ),\n }))\n ),\n pipe(\n oldExtenalLoan.accountForDisbursment,\n option.map(accountForDisbursment => ({\n variant: \"item\",\n label:\n \"StandardLoan.AccountsForRefinancing.accountForDisbursmentLabel\",\n type: \"string\",\n oldValue: option.some(accountForDisbursment),\n newValue: newExtenalLoan.accountForDisbursment,\n }))\n ),\n pipe(\n oldExtenalLoan.variableSymbol,\n option.map(variableSymbol => ({\n variant: \"item\",\n label:\n \"StandardLoan.AccountsForRefinancing.variableSymbolLabel\",\n type: \"string\",\n oldValue: option.some(variableSymbol.toString()),\n newValue: pipe(\n newExtenalLoan.variableSymbol,\n option.map(newVal => newVal.toString())\n ),\n }))\n ),\n ],\n array.compact\n )\n ),\n option.getOrElse(constant([]))\n )\n )\n )\n )\n );\n}\n\nexport function useGetPersonalDataChanges(\n personalData: Option,\n oldPersonalData: Option\n) {\n const formatMessage = useFormatMessage();\n\n return pipe(\n personalData,\n option.chain(personalData =>\n pipe(\n oldPersonalData,\n option.map(oldPersonalData =>\n pipe(\n oldPersonalData,\n array.map(oldPersonalDataEntry =>\n pipe(\n personalData,\n array.findFirst(ad =>\n eq.eqString.equals(ad.key, oldPersonalDataEntry.key)\n ),\n option.map(personalDataEntry =>\n pipe(\n oldPersonalDataEntry,\n foldPersonalDataField(\n boolField => ({\n variant: \"item\",\n label: oldPersonalDataEntry.key,\n type: \"boolean\",\n oldValue: option.some(boolField.value),\n newValue: option.some(\n personalDataEntry.value as boolean\n ),\n }),\n dateField => ({\n variant: \"item\",\n label: oldPersonalDataEntry.key,\n type: \"date\",\n oldValue: option.some(dateField.value),\n newValue: option.some(personalDataEntry.value as Date),\n }),\n numberField => ({\n variant: \"item\",\n label: oldPersonalDataEntry.key,\n type: \"money\",\n oldValue: numberField.value,\n newValue: personalDataEntry.value as Option,\n }),\n stringField => ({\n variant: \"item\",\n label: oldPersonalDataEntry.key,\n type: \"string\",\n oldValue: pipe(\n personalData,\n array.findFirst(v => v.key === stringField.key),\n option.chain(v =>\n pipe(\n v.options as Option>,\n option.chain(\n array.findFirstMap(v =>\n v.value === stringField.value\n ? pipe(\n v.name,\n option.map(v =>\n formatMessage(v as RuntimeLocaleKey)\n )\n )\n : option.none\n )\n )\n )\n )\n ),\n newValue: option.some(\n pipe(\n personalData,\n array.findFirst(\n v => v.key === personalDataEntry.key\n ),\n option.chain(v =>\n pipe(\n v.options as Option>,\n option.chain(\n array.findFirstMap(v =>\n v.value === personalDataEntry.value\n ? pipe(\n v.name,\n option.map(v =>\n formatMessage(v as RuntimeLocaleKey)\n )\n )\n : option.none\n )\n )\n )\n ),\n option.getOrElse(constant(stringField.value))\n )\n ),\n }),\n numberField => ({\n variant: \"item\",\n label: oldPersonalDataEntry.key,\n type: \"money\",\n oldValue: numberField.value,\n newValue: personalDataEntry.value as Option,\n }),\n companyICOField => ({\n variant: \"item\",\n label: oldPersonalDataEntry.key,\n type: \"string\",\n oldValue: option.some(companyICOField.value),\n newValue: option.some(\n personalDataEntry.value as LocalizedString\n ),\n }),\n companyNameField => ({\n variant: \"item\",\n label: oldPersonalDataEntry.key,\n type: \"string\",\n oldValue: option.some(companyNameField.value),\n newValue: option.some(\n personalDataEntry.value as LocalizedString\n ),\n })\n )\n )\n )\n )\n ),\n array.compact\n )\n )\n )\n )\n );\n}\n","import { apiCall } from \"../../APICall\";\nimport * as t from \"io-ts\";\nimport { constFalse, constTrue } from \"fp-ts/function\";\nimport { eq } from \"fp-ts\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { BankIdentity } from \"./domain\";\nimport { FileContent, LocalizedString } from \"design-system\";\nimport { optionFromNullable } from \"io-ts-types/lib/optionFromNullable\";\n\nexport const BankIdentityOutput = t.array(BankIdentity);\n\nexport const bankIdentities = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constTrue),\n outputCodec: BankIdentityOutput,\n path: [\"packages\", \"loans\", \"microTransaction\", \"bankCodes\"],\n});\n\nexport const MicroTransactionDetailsOutput = t.type({\n accountNumber: NonEmptyString,\n bankCode: NonEmptyString,\n prefixCode: optionFromNullable(NonEmptyString),\n});\nexport type MicroTransactionDetailsOutput = t.TypeOf<\n typeof MicroTransactionDetailsOutput\n>;\n\nexport const microTransactionDetails = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constTrue),\n outputCodec: MicroTransactionDetailsOutput,\n path: [\"packages\", \"loans\", \"microTransaction\", \"getBankAccountData\"],\n});\n\nexport const BasicPersonalDataOutput = t.type({\n name: NonEmptyString,\n surname: NonEmptyString,\n});\n\nexport const basicPersonalData = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: BasicPersonalDataOutput,\n path: [\"clients\", \"identification\", \"basicPersonalData\"],\n});\n\nexport const bankAccountSubmitInput = t.type({\n prefixCode: t.string,\n accountNumber: NonEmptyString,\n bankCode: NonEmptyString,\n bankName: LocalizedString,\n confirmationLabel: LocalizedString,\n});\n\nexport type BankAccountSubmitInput = t.TypeOf;\n\nconst eqBankAccountSubmitInput = eq.getStructEq({\n prefixCode: eq.eqString,\n accountNumber: eq.eqString,\n bankCode: eq.eqString,\n confirmationLabel: eq.eqString,\n});\n\nexport const bankAccountSubmit = apiCall({\n inputCodec: bankAccountSubmitInput,\n inputEq: eqBankAccountSubmitInput,\n outputCodec: t.unknown,\n path: [\"packages\", \"loans\", \"microTransaction\", \"accountData\"],\n});\n\nconst SaveMicroPaymentDataConfirmationInput = t.type({\n consent: t.boolean,\n});\n\nconst eqSaveMicroPaymentDataConfirmationInput = eq.getStructEq({\n consent: eq.eqBoolean,\n});\n\nexport const saveMicroPaymentDataConfirmation = apiCall({\n inputCodec: SaveMicroPaymentDataConfirmationInput,\n inputEq: eqSaveMicroPaymentDataConfirmationInput,\n outputCodec: t.unknown,\n path: [\"packages\", \"loans\", \"microTransaction\", \"accountDataConfirmation\"],\n});\n\nconst QRCodeInput = t.type({\n size: t.number,\n});\n\nconst QRCodeOutput = FileContent;\n\nexport const getQRCode = apiCall({\n inputEq: eq.fromEquals(constTrue),\n path: [\"packages\", \"loans\", \"microTransaction\", \"QRCode\"],\n inputCodec: QRCodeInput,\n outputCodec: QRCodeOutput,\n});\n","import { ComputedFieldProps, fieldIssues, Issues } from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { constFalse, constTrue, pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { useFormatMessage } from \"../../intl\";\nimport { PersonalDataFromOutput } from \"../Confirmation/domain\";\n\nexport function useReworkComparator<\n A extends Record>,\n B extends Record>\n>(reworkData: Option) {\n const formatMessage = useFormatMessage();\n\n function extract>, K>(\n base: Option,\n fieldName: keyof T\n ): Option {\n return pipe(\n base,\n option.chain(data => data[fieldName])\n );\n }\n\n function isReworked(\n rework: Option,\n objectName: keyof A,\n fieldName: keyof B\n ) {\n return pipe(\n rework,\n option.chain(rework => extract(rework[objectName], fieldName)),\n option.fold(constFalse, constTrue)\n );\n }\n\n function formatIssues(\n objectName: keyof A,\n fieldName: keyof B,\n existingIssues: Option\n ): Option {\n return option.isNone(existingIssues) &&\n isReworked(reworkData, objectName, fieldName)\n ? option.some([\n fieldIssues.warning(\n formatMessage(\"StandardLoan.Rework.fieldChangedMessage\")\n ),\n ])\n : existingIssues;\n }\n\n function isDisabled(objectName: keyof A, fieldName: keyof B): boolean {\n return (\n option.isSome(reworkData) &&\n !isReworked(reworkData, objectName, fieldName)\n );\n }\n\n function reworkFieldProps(\n fieldProps: ComputedFieldProps,\n objectName: keyof A,\n disabled: boolean,\n overrideFieldName?: string\n ) {\n return {\n ...fieldProps,\n issues: formatIssues(\n objectName,\n overrideFieldName ? overrideFieldName : fieldProps.name,\n fieldProps.issues\n ),\n disabled:\n disabled ||\n isDisabled(\n objectName,\n overrideFieldName ? overrideFieldName : fieldProps.name\n ),\n };\n }\n\n function specialFieldsReworkFieldProps(\n fieldProps: ComputedFieldProps,\n reworkDependent: boolean,\n reworked: boolean,\n disabled: boolean,\n reworkAll: boolean\n ): ComputedFieldProps {\n return {\n ...fieldProps,\n issues:\n option.isNone(fieldProps.issues) && reworked\n ? option.some(\n fieldIssues.warnings([\n formatMessage(\"StandardLoan.Rework.fieldChangedMessage\"),\n ])\n )\n : fieldProps.issues,\n disabled:\n !reworkAll &&\n (disabled ||\n (option.isSome(reworkData) && !reworkDependent && !reworked)),\n };\n }\n\n return {\n formatIssues,\n isDisabled,\n reworkFieldProps,\n specialFieldsReworkFieldProps,\n };\n}\n\nexport function useReworkPersonalDataComparator(\n reworkPersonalData: Option\n) {\n const formatMessage = useFormatMessage();\n\n function isReworked(\n rework: Option,\n fieldName: string\n ) {\n return pipe(\n rework,\n option.map(rework => {\n const k = rework.findIndex(item => item.key === fieldName);\n return k >= 0;\n }),\n option.getOrElse(() => false)\n );\n }\n\n function formatIssues(\n fieldName: string,\n existingIssues: Option\n ): Option {\n return option.isNone(existingIssues) &&\n isReworked(reworkPersonalData, fieldName)\n ? option.some(\n fieldIssues.warnings([\n formatMessage(\"StandardLoan.Rework.fieldChangedMessage\"),\n ])\n )\n : existingIssues;\n }\n\n function isDisabled(fieldName: string): boolean {\n return (\n option.isSome(reworkPersonalData) &&\n !isReworked(reworkPersonalData, fieldName)\n );\n }\n\n return { formatIssues, isDisabled };\n}\n\nexport function isReworked<\n A extends Record>,\n B extends Record>\n>(rework: Option, objectName: keyof A, fieldName: keyof B) {\n return pipe(\n rework,\n option.chain(rework => extract(rework[objectName], fieldName)),\n option.fold(constFalse, constTrue)\n );\n\n function extract>, K>(\n base: Option,\n fieldName: keyof T\n ): Option {\n return pipe(\n base,\n option.chain(data => data[fieldName])\n );\n }\n}\n","import { LocaleKey, useFormatMessage } from \"../../intl\";\nimport { PaymentDestination, TransactionType } from \"./domain\";\nimport {\n AverageIncomingPaymentsId,\n PaymentDestination2,\n SourceOfFundsId,\n} from \"../../KYC/domain\";\n\nexport function useFormatPaymentDestination() {\n const formatMessage = useFormatMessage();\n return (paymentDestination: PaymentDestination | PaymentDestination2) =>\n formatMessage(\n `StandardLoan.KYC.Transactions.PaymentDestination.${paymentDestination}` as LocaleKey\n );\n}\n\nexport function useFormatTransactionType() {\n const formatMessage = useFormatMessage();\n return (transactionType: TransactionType) =>\n formatMessage(\n `StandardLoan.KYC.Transactions.TransactionType.${transactionType}` as LocaleKey\n );\n}\n\nexport function useFormatAverageIncomingPayments() {\n const formatMessage = useFormatMessage();\n return (paymentAmount: AverageIncomingPaymentsId) =>\n formatMessage(\n `StandardLoan.KYC.Transactions.averageIncomingPayments.${paymentAmount}` as LocaleKey\n );\n}\n\nexport function useFormatSourceOfFunds() {\n const formatMessage = useFormatMessage();\n return (sourceOfFunds: SourceOfFundsId) =>\n formatMessage(\n `StandardLoan.KYC.Transactions.sourceOfFunds.${sourceOfFunds}` as LocaleKey\n );\n}\n","import * as t from \"io-ts\";\nimport { IncomeSourceType } from \"../IncomeForm/domain\";\n\nexport const PaymentDestination = t.keyof({\n Domestic: true,\n ForeignEU: true,\n OutsideEU: true,\n});\nexport type PaymentDestination = t.TypeOf;\n\nexport const TransactionType = t.keyof({\n CashAndCashless: true,\n Cashless: true,\n Cash: true,\n});\nexport type TransactionType = t.TypeOf;\n\nexport const incomeSourcesWithIndustry: Array = [\n \"Employed\",\n \"Freelancer\",\n \"EmployedAbroad\",\n \"CompanyOwner\",\n \"TradesmanCoOperatingPerson\",\n];\n","import \"!../../../../node_modules/extract-css-chunks-webpack-plugin/dist/loader.js!css-loader?{\\\"modules\\\":false,\\\"url\\\":false}!./Landing.treat.3Zu2D0J.css\";\nexport var stepNumber = '_1wVqc';","import \"!../../../../node_modules/extract-css-chunks-webpack-plugin/dist/loader.js!css-loader?{\\\"modules\\\":false,\\\"url\\\":false}!./OfferChooseCard.treat.DPWD7vJ.css\";\nexport var cardContent = '_3QOFI';\nexport var cardContentMobile = '_3edTC';\nexport var angleIcon = '_19W0d';","import {\n Body,\n Box,\n LoadingButton,\n LocalizedString,\n Space,\n Stack,\n} from \"design-system\";\nimport * as classes from \"./ChooseBrokerButton.treat\";\nimport { taskEither } from \"fp-ts\";\nimport { useFormatMessage } from \"../../intl\";\n\ntype Props = {\n heading: LocalizedString;\n buttonLabel: LocalizedString;\n action: () => unknown;\n};\n\nexport function ChooseBrokerButton(props: Props) {\n const formatMessage = useFormatMessage();\n return (\n \n \n \n \n {props.heading}\n \n \n \n \n \n \n \n );\n}\n","import { FeedbackBlock, Action, LocalizedString } from \"design-system\";\nimport { useFormatMessage } from \"../../intl\";\nimport { option } from \"fp-ts\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { ComponentProps } from \"react\";\nimport { IO } from \"fp-ts/IO\";\nimport { pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { RejectionReason } from \"../StandardLoanState\";\nimport { StandardLoanFlowType } from \"../domain\";\n\ntype BasicProps = {\n onGotoClientsPage: Option>;\n};\n\ntype ApprovalProps = BasicProps & {\n decision: \"Approved\";\n isNonWorkingDay: boolean;\n isSummary: boolean;\n clientExists: boolean;\n flowType: StandardLoanFlowType;\n};\n\ntype PendingProps = BasicProps & {\n decision: \"Pending\";\n isRefinancing: boolean;\n isSummary: boolean;\n flowType: StandardLoanFlowType;\n};\n\ntype RejectionProps = BasicProps & {\n decision: \"Rejected\";\n rejectionReason: RejectionReason;\n flowType: StandardLoanFlowType;\n};\n\ntype Props = ApprovalProps | PendingProps | RejectionProps;\n\nfunction foldProps(matches: {\n whenApproved: Reader;\n whenPending: Reader;\n whenRejected: Reader;\n}): Reader {\n return props => {\n switch (props.decision) {\n case \"Approved\":\n return matches.whenApproved(props);\n case \"Pending\":\n return matches.whenPending(props);\n case \"Rejected\":\n return matches.whenRejected(props);\n }\n };\n}\n\nexport function FinalFeedback(props: Props) {\n const formatMessage = useFormatMessage();\n\n function getTitle(): LocalizedString {\n switch (props.decision) {\n case \"Approved\":\n return props.isSummary\n ? props.clientExists\n ? formatMessage(\"StandardLoan.Approval.summary.title\")\n : formatMessage(\"StandardLoan.Approval.newClient.summary.title\")\n : formatMessage(\"StandardLoan.Approval.title\");\n case \"Pending\":\n return props.isSummary\n ? formatMessage(\"StandardLoan.Pending.summary.title\")\n : props.isRefinancing\n ? formatMessage(\"StandardLoan.Refinancing.title\")\n : formatMessage(\"StandardLoan.Pending.title\");\n case \"Rejected\":\n switch (props.rejectionReason) {\n case \"LFRejected\":\n return formatMessage(\"StandardLoan.Rejection.LoanFactory.title\");\n case \"CBRejected\":\n return formatMessage(\"StandardLoan.Rejection.CreditBureau.title\");\n case \"BonitaRejected\":\n return formatMessage(\"StandardLoan.Rejection.Bonita.title\");\n case \"RejectedWithLead\":\n return formatMessage(\"StandardLoan.Rejection.WithLead.title\");\n case \"ExposureExceeded\":\n return formatMessage(\"StandardLoan.Rejection.CustomerOffer.title\");\n case \"RestoredTooEarly\":\n return formatMessage(\"StandardLoan.Rejection.Restore.title\");\n case \"hasBlockingNotesCF\":\n case \"invalidAgeCF\":\n case \"privateClient\":\n case \"phoneNumberNotVerifiedCF\":\n case \"phoneNumberMissingCF\":\n case \"highRiskClientCF\":\n case \"hasNotPasswordForCommunicationCF\":\n case \"foreignClientCF\":\n case \"KYC_ID_FIXED_EZY\":\n case \"KYC_ID_FIXED_EZY_UPDATE_CONTACTS\":\n case \"KYC_FIXED_EZY_UPDATE_CONTACTS\":\n case \"KYC_FIXED_EZY\":\n case \"UPDATE_CONTACTS\":\n case \"ID_FIXED_EZY_UPDATE_CONTACTS\":\n case \"ID_FIXED_EZY\":\n case \"UPDATE_ID_CONTACTS\":\n case \"UPDATE_ID\":\n case \"UPDATE_PASSWORD\":\n case \"UPDATE_ID_PASSWORD\":\n case \"UPDATE_ID_CONTACTS_PASSWORD\":\n case \"UPDATE_ID_OTHER_THAN_AUTH_ID\":\n case \"UPDATE_ID_MISSING_INFORMATION\":\n case \"USER_VALIDATION_KO_REDIRECT_BRANCH\":\n return formatMessage(\"UserValidation.loading.title\");\n }\n }\n }\n\n function getText(): LocalizedString {\n switch (props.decision) {\n case \"Approved\":\n return props.isNonWorkingDay\n ? formatMessage(\"StandardLoan.Approval.text.nonWorkingDay\")\n : props.isSummary\n ? props.clientExists\n ? formatMessage(\"StandardLoan.Approval.summary.text\")\n : formatMessage(\"StandardLoan.Approval.newClient.summary.text\")\n : formatMessage(\"StandardLoan.Approval.text\");\n case \"Pending\":\n return props.isSummary\n ? formatMessage(\"StandardLoan.Pending.summary.text\")\n : props.isRefinancing\n ? formatMessage(\"StandardLoan.Refinancing.text\")\n : formatMessage(\"StandardLoan.Pending.text\");\n case \"Rejected\":\n switch (props.rejectionReason) {\n case \"LFRejected\":\n return formatMessage(\"StandardLoan.Rejection.LoanFactory.message\");\n case \"CBRejected\":\n return formatMessage(\"StandardLoan.Rejection.CreditBureau.message\");\n case \"BonitaRejected\":\n return formatMessage(\"StandardLoan.Rejection.Bonita.message\");\n case \"RejectedWithLead\":\n return formatMessage(\"StandardLoan.Rejection.WithLead.message\");\n case \"ExposureExceeded\":\n return formatMessage(\n \"StandardLoan.Rejection.CustomerOffer.message\"\n );\n case \"RestoredTooEarly\":\n return formatMessage(\"StandardLoan.Rejection.Restore.message\");\n case \"hasBlockingNotesCF\":\n return formatMessage(\n \"ClientProfile.cfExisting.blockingNotes.failure.message\"\n );\n case \"invalidAgeCF\":\n return formatMessage(\n \"ClientProfile.cfExisting.minimumAge.failure.message\"\n );\n case \"privateClient\":\n return formatMessage(\n \"ClientProfile.savingsAccountOpening.privateClient.failure.message\"\n );\n case \"phoneNumberNotVerifiedCF\":\n return formatMessage(\n \"ClientProfile.cfExisting.phoneNumberNotVerified.failure.message\"\n );\n case \"phoneNumberMissingCF\":\n return formatMessage(\n \"ClientProfile.phoneNumberMissing.failure.message\"\n );\n case \"highRiskClientCF\":\n return formatMessage(\n \"ClientProfile.cfExisting.kycCheck.failure.message\"\n );\n case \"hasNotPasswordForCommunicationCF\":\n return formatMessage(\n \"ClientProfile.cfExisting.passwordCommunication.failure.message\"\n );\n case \"foreignClientCF\":\n return formatMessage(\n \"ClientProfile.cfExisting.nonLocalCitizenBranch.failure.message\"\n );\n case \"KYC_ID_FIXED_EZY\":\n return formatMessage(\n \"ClientProfile.ukontoOpening.kycAndPrimaryIdToFix.failure.message\"\n );\n case \"KYC_ID_FIXED_EZY_UPDATE_CONTACTS\":\n return formatMessage(\n \"ClientProfile.ukontoOpening.kycAndPrimaryIdToFixWithContacts.failure.message\"\n );\n case \"KYC_FIXED_EZY_UPDATE_CONTACTS\":\n return formatMessage(\n \"ClientProfile.ukontoOpening.kycToFixWithContacts.failure.message\"\n );\n case \"KYC_FIXED_EZY\":\n return formatMessage(\n \"ClientProfile.ukontoOpening.kycToFix.failure.message\"\n );\n case \"UPDATE_CONTACTS\":\n return formatMessage(\n \"ClientProfile.ukontoOpening.updateClientContacts.failure.message\"\n );\n case \"ID_FIXED_EZY_UPDATE_CONTACTS\":\n return formatMessage(\n \"ClientProfile.ukontoOpening.primaryIdToFixWithContacts.failure.message\"\n );\n case \"ID_FIXED_EZY\":\n return formatMessage(\n \"ClientProfile.ukontoOpening.primaryIdToFix.failure.message\"\n );\n case \"UPDATE_ID_CONTACTS\":\n return formatMessage(\n \"ClientProfile.ukontoOpening.updatePrimaryIdWithContacts.failure.message\"\n );\n case \"UPDATE_ID\":\n return formatMessage(\n \"ClientProfile.ukontoOpening.updatePrimaryId.failure.message\"\n );\n case \"UPDATE_PASSWORD\":\n return formatMessage(\n \"ClientProfile.cfExisting.passwordCommunicationNeeded.failure.message\"\n );\n case \"UPDATE_ID_PASSWORD\":\n return formatMessage(\n \"ClientProfile.cfExisting.updateIdPassword.failure.message\"\n );\n case \"UPDATE_ID_CONTACTS_PASSWORD\":\n return formatMessage(\n \"ClientProfile.cfExisting.updateIdContactsPassword.failure.message\"\n );\n case \"UPDATE_ID_OTHER_THAN_AUTH_ID\":\n return formatMessage(\n \"ClientProfile.cfExisting.updateIdOtherThanAuthId.failure.message\"\n );\n case \"UPDATE_ID_MISSING_INFORMATION\":\n return formatMessage(\n \"ClientProfile.cfExisting.updateIdMissingInformation.failure.message\"\n );\n case \"USER_VALIDATION_KO_REDIRECT_BRANCH\":\n return formatMessage(\n \"ClientProfile.userValidation.failure.message.redirect.branch\"\n );\n }\n }\n }\n\n function getFeedbackType(): ComponentProps[\"type\"] {\n switch (props.decision) {\n case \"Approved\":\n return \"positive\"; // props.clientExists ? \"positive\" : \"loading\";\n case \"Pending\":\n return \"positive\";\n case \"Rejected\":\n return \"negative\";\n }\n }\n\n return (\n , [] | [Action]>(\n () => [],\n action => [\n {\n variant: \"primary\",\n label: pipe(\n props,\n foldProps({\n whenApproved: function () {\n return props.flowType === \"PWSRemote\"\n ? formatMessage(\"StandardLoan.FinalDecision.gotoHomePage\")\n : formatMessage(\n \"StandardLoan.FinalDecision.gotoClientPage\"\n );\n },\n whenPending: function () {\n return props.flowType === \"PWSRemote\"\n ? formatMessage(\"StandardLoan.FinalDecision.gotoHomePage\")\n : formatMessage(\n \"StandardLoan.FinalDecision.gotoClientPage\"\n );\n },\n whenRejected: function (props) {\n return props.flowType === \"3P\" ||\n props.flowType === \"PWSRemote\"\n ? formatMessage(\"StandardLoan.FinalDecision.gotoHomePage\")\n : props.rejectionReason === \"phoneNumberMissingCF\"\n ? formatMessage(\n \"ClientProfile.clientData.missingPhoneNumber\"\n )\n : formatMessage(\n \"StandardLoan.FinalDecision.gotoClientPage\"\n );\n },\n })\n ),\n action,\n },\n ]\n )\n )}\n {...pipe(\n props,\n foldProps({\n whenApproved: function (props) {\n return props.isSummary ? { size: \"medium\" } : { size: \"large\" };\n },\n whenPending: function (props) {\n return props.isSummary\n ? {\n size: \"medium\",\n inlineLoaderMessage: formatMessage(\n \"StandardLoan.Pending.summary.progress\"\n ),\n }\n : { size: \"large\" };\n },\n whenRejected: function () {\n return { size: \"large\" };\n },\n })\n )}\n />\n );\n}\n","import {\n Box,\n Stack,\n Body,\n buttonLink,\n Card,\n Divider,\n Space,\n ReadOnlyField,\n Upselling,\n CalculatedField,\n useIsMobileLayout,\n unsafeLocalizedString,\n InsuranceIcon,\n} from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { constNull, pipe } from \"fp-ts/function\";\nimport { useState } from \"react\";\nimport {\n useFormatMessage,\n useFormatMoneyAmountValue,\n useFormatPercentageLike,\n} from \"../../intl\";\nimport { GenericLoanResponseOutput } from \"../api\";\nimport { OfferReviewDetailDialog } from \"./OfferReviewDetailDialog\";\n\ntype Props = {\n offer: GenericLoanResponseOutput;\n};\n\nexport function OfferReviewCard(props: Props) {\n const [isDetailDialogOpen, setIsDetailDialogOpen] = useState(false);\n const formatMessage = useFormatMessage();\n const formatMoneyAmount = useFormatMoneyAmountValue();\n const formatPercentage = useFormatPercentageLike();\n const isMobileLayout = useIsMobileLayout();\n\n return (\n \n \n \n {formatMessage(\"StandardLoan.OfferApproved.OfferReview.yourOffer\")}\n \n \n \n \n \n \n \n \n\n {pipe(\n props.offer.monthlyInsuranceAmount,\n option.filter(amount => amount > 0),\n option.fold(constNull, amount => (\n \n ))\n )}\n \n {pipe(\n props.offer.monthlyInsuranceAmount,\n option.filter(amount => amount > 0),\n option.apSecond(props.offer.insurance),\n option.fold(constNull, insurance => (\n <>\n \n \n \n ))\n )}\n \n \n \n \n {buttonLink(\n () => setIsDetailDialogOpen(true),\n formatMessage(\"StandardLoan.OfferApproved.OfferReview.viewDetails\")\n )}\n \n \n {isDetailDialogOpen && (\n setIsDetailDialogOpen(false)}\n />\n )}\n \n );\n}\n","import {\n Body,\n Box,\n ErrorBanner,\n Loader,\n LocalizedString,\n Stack,\n UnorderedList,\n useIsMobileLayout,\n} from \"design-system\";\nimport { array, taskEither } from \"fp-ts\";\nimport { constant, pipe } from \"fp-ts/function\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { useState } from \"react\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useCommand, usePollingEffect } from \"../../useAPI\";\nimport * as api from \"../api\";\n\ntype DocumentListStatus =\n | {\n status: \"Pending\";\n }\n | { status: \"Received\"; list: api.UploadedDocumentData[] }\n | { status: \"NotReceived\" };\n\nfunction foldDocumentListStatus(pattern: {\n Pending: () => R;\n Received: (list: api.UploadedDocumentData[]) => R;\n NotReceived: () => R;\n}): Reader {\n return (status: DocumentListStatus) => {\n switch (status.status) {\n case \"NotReceived\":\n return pattern.NotReceived();\n case \"Received\":\n return pattern.Received(status.list);\n case \"Pending\":\n return pattern.Pending();\n }\n };\n}\n\nexport const OfferDocuments = () => {\n const formatMessage = useFormatMessage();\n const [\n requiredDocumentsList,\n setRequiredDocumentsList,\n ] = useState({ status: \"Pending\" });\n const requiredDocuments = useCommand(api.previewRequiredDocuments);\n const isMobileLayout = useIsMobileLayout();\n\n function scrollTop() {\n if (isMobileLayout) {\n window.scrollTo(0, 0);\n }\n }\n\n usePollingEffect(api.checkRequiredDocuments, {\n intervalMS: 1000,\n shouldPollingContinue: ({ requiredDocumentsReceived }) =>\n requiredDocumentsReceived === false,\n onSuccess: ({ requiredDocumentsReceived }) =>\n requiredDocumentsReceived &&\n pipe(\n requiredDocuments(),\n taskEither.bimap(\n () => {\n setRequiredDocumentsList({ status: \"NotReceived\" });\n scrollTop();\n },\n list => {\n setRequiredDocumentsList({ status: \"Received\", list });\n scrollTop();\n }\n )\n )(),\n onError: () => {\n setRequiredDocumentsList({ status: \"NotReceived\" });\n scrollTop();\n },\n });\n\n return pipe(\n requiredDocumentsList,\n foldDocumentListStatus({\n NotReceived: constant(\n \n {formatMessage(\"StandardLoan.UploadDocuments.loadingError\")}\n \n ),\n Pending: constant(\n \n \n \n \n \n \n {formatMessage(\n \"StandardLoan.OfferApproved.OfferReview.documentationLoading\"\n )}\n \n \n \n ),\n Received: list => {\n const documentList: LocalizedString[] = list.map(\n document => document.documentName\n );\n\n return array.isNonEmpty(documentList) ? (\n \n \n {formatMessage(\n \"StandardLoan.OfferApproved.OfferReview.documentation\"\n )}\n \n \n {formatMessage(\n \"StandardLoan.OfferApproved.OfferReview.documentationDescription\"\n )}\n \n \n {documentList}\n \n \n ) : null;\n },\n })\n );\n};\n","import {\n AutocompleteInputField,\n DropdownOption,\n SuggestionsStatus,\n} from \"design-system\";\nimport { option, taskEither } from \"fp-ts\";\nimport { constant, constFalse, pipe } from \"fp-ts/function\";\nimport { useMemo, useState } from \"react\";\nimport { useDebounceState } from \"../../Common/useDebounceState\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useCommand } from \"../../useAPI\";\nimport { useRemoteData } from \"../../useRemoteData\";\nimport { Option } from \"fp-ts/Option\";\nimport * as api from \"../api\";\nimport * as remoteData from \"../../RemoteData\";\nimport * as classes from \"./BrokerEmailField.treat\";\n\ntype Props = Omit<\n React.ComponentProps,\n \"suggestionsStatus\" | \"onSelectSuggestion\" | \"loadingMessage\"\n> & {\n onSelectSuggestion: (value: string) => unknown;\n queryString?: string;\n};\n\nconst MIN_BROKER_EMAIL_SEARCH_TERM_LENGTH = 2;\n\nexport function BrokerEmailField(props: Props) {\n const formatMessage = useFormatMessage();\n const fetchBrokerSuggestions = useCommand(api.getBrokers, {\n skipTracking: true,\n });\n\n const termEquals = (\n previousTerm: Option,\n currentTerm: string\n ): boolean => {\n return pipe(\n previousTerm,\n option.fold(constFalse, term => term === currentTerm)\n );\n };\n\n const [lastSelectedTerm, setLastSelectedTerm] = useState>(\n option.none\n );\n\n const queryTerms = useDebounceState(\n props.queryString !== undefined ? props.queryString : props.value,\n 500\n );\n\n const brokerEmailSuggestions = useRemoteData(\n useMemo(\n () =>\n queryTerms.length >= MIN_BROKER_EMAIL_SEARCH_TERM_LENGTH &&\n !termEquals(lastSelectedTerm, queryTerms)\n ? pipe(\n fetchBrokerSuggestions({\n partialEmail: queryTerms,\n }),\n taskEither.map(option.some)\n )\n : taskEither.right(option.none),\n [queryTerms]\n )\n );\n\n return (\n ([])))\n ),\n suggestion => ({\n value: suggestion,\n label: formatMessage(\"StandardLoan.Select3P.brokerEmailSuggestion\", {\n email: suggestion,\n }),\n })\n )}\n onSelectSuggestion={s => {\n const selectedValue = s.value as string;\n props.onChange(selectedValue);\n setLastSelectedTerm(option.some(selectedValue));\n props.onSelectSuggestion(selectedValue);\n }}\n loadingMessage={formatMessage(\"LoadingEllipsis\")}\n />\n );\n}\n\nfunction autocompleteInputStatusFromRemoteData(\n query: remoteData.RemoteData,\n suggestionsMap: (suggestion: I) => DropdownOption\n): SuggestionsStatus {\n return pipe(\n query,\n remoteData.fold(\n constant({\n status: \"loading\",\n } as SuggestionsStatus),\n constant({ status: \"ready\", suggestions: [] }),\n (suggestions, isLoading) =>\n isLoading\n ? {\n status: \"loading\",\n }\n : {\n status: \"ready\",\n suggestions: suggestions.map(suggestionsMap),\n }\n )\n );\n}\n","import { useState } from \"react\";\nimport { constFalse, pipe } from \"fp-ts/function\";\nimport * as api from \"../api\";\nimport { AutocompleteInputField } from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { useFormatMessage } from \"../../intl\";\nimport { Option } from \"fp-ts/Option\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\n\ntype Props = Omit<\n React.ComponentProps,\n \"suggestionsStatus\" | \"onSelectSuggestion\" | \"loadingMessage\"\n> & {\n onSelectSuggestion: (value: api.CreditorData) => unknown;\n loanProviders: NonEmptyArray;\n};\n\nconst MIN_CREDITOR_SEARCH_TERM_LENGTH = 2;\n\nexport function CreditorAutocompleteField(props: Props) {\n const formatMessage = useFormatMessage();\n\n const [lastSelectedTerm, setLastSelectedTerm] = useState>(\n option.none\n );\n\n const termEquals = (\n previousTerm: Option,\n currentTerm: string\n ): boolean => {\n return pipe(\n previousTerm,\n option.fold(constFalse, term => term === currentTerm)\n );\n };\n\n const queryTerms = props.value.toLowerCase();\n\n return (\n \n props.value.length >= MIN_CREDITOR_SEARCH_TERM_LENGTH &&\n !termEquals(lastSelectedTerm, props.value) &&\n item.name.toLowerCase().includes(queryTerms)\n )\n .map(suggestion => ({\n value: suggestion,\n label: formatMessage(\"Form.companyField.autocompleteLabel\", {\n name: suggestion.name,\n ico: suggestion.code,\n }),\n })),\n }}\n onSelectSuggestion={s => {\n props.onSelectSuggestion(s.value);\n props.onChange(s.value.name);\n setLastSelectedTerm(option.some(s.value.name));\n }}\n loadingMessage={formatMessage(\"LoadingEllipsis\")}\n />\n );\n}\n","import \"!../../../../node_modules/extract-css-chunks-webpack-plugin/dist/loader.js!css-loader?{\\\"modules\\\":false,\\\"url\\\":false}!./Summary.treat.2U_whx_.css\";\nexport var errorColor = '_20qVS';\nexport var successColor = 'BR9zH';","import {\n Body,\n Box,\n buttonLink,\n CheckIcon,\n ContentRow,\n FeatureList,\n Heading,\n LoadingButton,\n Stack,\n unsafeLocalizedString,\n useIsMobileLayout,\n} from \"design-system\";\nimport { constVoid, pipe } from \"fp-ts/function\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useCommand } from \"../../useAPI\";\nimport { PageHeading } from \"../../Common/PageHeading/PageHeading\";\nimport { MainContent } from \"../../Common/MainContent\";\n\nimport * as classes from \"./Landing.treat\";\nimport * as api from \"../api\";\nimport { boolean, option, taskEither } from \"fp-ts\";\nimport { useState } from \"react\";\nimport { Option } from \"fp-ts/Option\";\nimport { Configurator } from \"./Configurator\";\nimport { UnderAgeError } from \"../domain\";\nimport { GenericError } from \"../../globalDomain\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { useIs3PChannel, useIsInPersonChannel } from \"../../useChannel\";\nimport { ChooseBrokerButton } from \"./ChooseBrokerButton\";\n\ntype Props = {\n onContinue: (loanOffer: api.LoanOffer, show3P?: boolean) => unknown;\n onAgeValidationFail: Option<() => unknown>;\n};\n\nexport function Landing(props: Props) {\n const formatMessage = useFormatMessage();\n const startApplication = useCommand(api.startApplication);\n const initDefaults = useCommand(api.initDefaults);\n\n const {\n config: { enableCashLoanId3PInBranch },\n } = useAppContext();\n const isInPersonChannel = useIsInPersonChannel();\n const is3PChannel = useIs3PChannel();\n\n const [initialLoanOffer, setInitialLoanOffer] = useState<\n Option\n >(option.none);\n const isMobileLayout = useIsMobileLayout();\n const stackBasis = pipe(\n isMobileLayout,\n boolean.fold(\n () => \"25%\",\n () => \"auto\"\n )\n );\n\n const handleError = (errors: UnderAgeError | GenericError) => {\n if (errors.id === \"UnderAgeError\") {\n return pipe(\n props.onAgeValidationFail,\n option.fold(\n () => taskEither.fromIO(constVoid),\n onAgeValidationFail => taskEither.fromIO(onAgeValidationFail)\n )\n );\n }\n return taskEither.left(errors);\n };\n\n const onClaimLinkClick = pipe(\n startApplication(),\n taskEither.chain(offer =>\n taskEither.fromIO(() => pipe(offer, option.some, setInitialLoanOffer))\n ),\n taskEither.orElse(handleError)\n );\n\n return (\n \n \n \n \n \n \"horizontal\",\n () => \"vertical\"\n )\n )}\n size=\"medium\"\n children={[\n {\n label: formatMessage(\"StandardLoan.Landing.Heading.Feature1\"),\n icon: CheckIcon,\n },\n {\n label: formatMessage(\"StandardLoan.Landing.Heading.Feature2\"),\n icon: CheckIcon,\n },\n {\n label: formatMessage(\"StandardLoan.Landing.Heading.Feature3\"),\n icon: CheckIcon,\n },\n ]}\n />\n \n \n {formatMessage(\"StandardLoan.Landing.HowTo.Title\")}\n \n \n \n \n \n {unsafeLocalizedString(\"1\")}\n \n \n \n \n {formatMessage(\"StandardLoan.Landing.HowTo.Point1.Title\")}\n \n \n {formatMessage(\n \"StandardLoan.Landing.HowTo.Point1.Description\"\n )}\n \n \n \n\n \n \n \n {unsafeLocalizedString(\"2\")}\n \n \n \n \n {formatMessage(\"StandardLoan.Landing.HowTo.Point2.Title\")}\n \n \n {formatMessage(\n \"StandardLoan.Landing.HowTo.Point2.Description\"\n )}\n \n \n \n\n \n \n \n {unsafeLocalizedString(\"3\")}\n \n \n \n \n {formatMessage(\"StandardLoan.Landing.HowTo.Point3.Title\")}\n \n \n {formatMessage(\n \"StandardLoan.Landing.HowTo.Point3.Description\"\n )}\n \n \n \n\n \n \n \n {unsafeLocalizedString(\"4\")}\n \n \n \n \n {formatMessage(\"StandardLoan.Landing.HowTo.Point4.Title\")}\n \n \n {formatMessage(\n \"StandardLoan.Landing.HowTo.Point4.Description\"\n )}\n \n \n \n \n \n {pipe(\n initialLoanOffer,\n option.fold(\n () => (\n \n {enableCashLoanId3PInBranch &&\n isInPersonChannel &&\n !is3PChannel ? (\n \n \n taskEither.fromIO(() =>\n props.onContinue(offer, false)\n )\n ),\n taskEither.orElse(handleError)\n )}\n />\n \n taskEither.fromIO(() =>\n props.onContinue(offer, true)\n )\n ),\n taskEither.orElse(handleError)\n )}\n buttonLabel={formatMessage(\n \"Mortgage.Dashboard.Overview.brokerForBankerApp.choose\"\n )}\n />\n \n ) : (\n \n taskEither.fromIO(() =>\n props.onContinue(offer, false)\n )\n ),\n taskEither.orElse(handleError)\n )}\n />\n )}\n \n {formatMessage(\n \"StandardLoan.Landing.RepresentativeOffer.Claim.BeforeLink\"\n )}\n {buttonLink(\n onClaimLinkClick,\n formatMessage(\n \"StandardLoan.Landing.RepresentativeOffer.Claim.LinkText\"\n )\n )}\n \n \n ),\n offer => (\n \n )\n )\n )}\n \n \n \n \n );\n}\n","import {\n ActionButtonGroup,\n Body,\n Box,\n ContentRow,\n FeedbackBlock,\n Stack,\n useIsMobileLayout,\n Banner,\n Loader,\n} from \"design-system\";\nimport { option, readerTaskEither, taskEither } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { IO } from \"fp-ts/IO\";\nimport { constFalse, constVoid, pipe } from \"fp-ts/function\";\nimport { useFormatMessage, useFormatPercentageLike } from \"../intl\";\nimport { RestoredRecapData } from \"./domain\";\nimport { MainContent } from \"../Common/MainContent\";\nimport RestrictParallelFlowsWrapper from \"./RestrictParallelFlowsWrapper\";\nimport { Container } from \"../Common/MainContent/grid/Container\";\nimport { ParallelFlowParameters } from \"./api\";\nimport { useEffect } from \"react\";\nimport { ApplicationStatus } from \"../Common/ProcessStoreList/api\";\nimport { palette } from \"design-system/lib/styleConstants\";\n\ntype Props = {\n onExit: IO;\n onBack: () => unknown;\n onNotRestore: taskEither.TaskEither;\n parallelFlowParameters: ParallelFlowParameters;\n isCredentialsAndSigningRemote?: boolean;\n} & (\n | {\n isErrorFetchingRestoredData: false;\n restoredData: RestoredRecapData;\n applicationStatus: Option;\n onRestore: (\n restoreWithDialog: boolean\n ) => taskEither.TaskEither;\n transitionToMasterCard: readerTaskEither.ReaderTaskEither<\n void,\n unknown,\n unknown\n >;\n cardProviderChange: boolean;\n }\n | {\n isErrorFetchingRestoredData: true;\n }\n);\n\nexport function RestoreDialog(props: Props) {\n const formatMessage = useFormatMessage();\n const formatPercentageLike = useFormatPercentageLike();\n const isMobileLayout = useIsMobileLayout();\n\n const isApplicationSigned = (applicationStatus: Option) =>\n pipe(\n applicationStatus,\n option.fold(constFalse, status => \"SIGNED\" === status)\n );\n\n useEffect(() => {\n if (\n !props.isErrorFetchingRestoredData &&\n (props.isCredentialsAndSigningRemote ||\n props.restoredData.feStep === \"AUTHORIZE_PUSH\" ||\n isApplicationSigned(props.applicationStatus))\n ) {\n props.onRestore(false)();\n }\n }, [props.isErrorFetchingRestoredData]);\n\n const renderLoanDetails = () =>\n props.isErrorFetchingRestoredData ? (\n \n ) : (\n \n \n {formatMessage(\"StandardLoan.RestoreModalHeading\")}\n \n \n \n \n \n {formatMessage(\"StandardLoan.recapLoanAmountLabel\")}\n \n \n {formatMessage(\n \"StandardLoan.recapLoanAmountValue\",\n props.restoredData.loanAmount\n )}\n \n \n \n \n {formatMessage(\"StandardLoan.detailsModalInstalmentLabel\")}\n \n \n {formatMessage(\n \"StandardLoan.recapLoanAmountValue\",\n props.restoredData.instalment\n )}\n \n \n \n \n \n \n {formatMessage(\"StandardLoan.recapTenorLabel\")}\n \n \n {formatMessage(\"StandardLoan.recapTenorValue\", {\n tenor: props.restoredData.tenor,\n })}\n \n \n \n \n {formatMessage(\"StandardLoan.recapInterestRateLabel\")}\n \n \n {formatMessage(\"StandardLoan.recapInterestRateValue\", {\n interestRate: formatPercentageLike(\n props.restoredData.interestRate\n ),\n })}\n \n \n \n \n {props.cardProviderChange && (\n \n {formatMessage(\n \"StandardLoan.RestoreModal.transitionToMastercardWarning\"\n )}\n \n )}\n \n );\n\n const restrictParallelFlowsWrapper = (\n props.onRestore(true))\n )\n }\n title={formatMessage(\"StandardLoan.RestoreModalHeading\")}\n hasCAFlowInProgress={props.parallelFlowParameters.hasCAFlowInProgress}\n hasCAFlowSentToBO={props.parallelFlowParameters.hasCAFlowSentToBO}\n hasCFFlowSentToBO={props.parallelFlowParameters.hasCFFlowSentToBO}\n isFromClientProfile={true}\n date={props.parallelFlowParameters.date}\n existingApplicationId={props.parallelFlowParameters.existingApplicationId}\n onReturnToPrev={constVoid}\n />\n );\n\n const mainContent = (\n \n \n {!props.isErrorFetchingRestoredData &&\n (props.isCredentialsAndSigningRemote ||\n props.restoredData.feStep === \"AUTHORIZE_PUSH\" ||\n isApplicationSigned(props.applicationStatus)) ? (\n \n \n \n ) : (\n \n \n \n {renderLoanDetails()}\n props.onRestore(true))\n ),\n },\n ]}\n />\n \n \n )}\n \n \n );\n\n const shouldDisplayRestrictParallelFlowsWrapper =\n props.parallelFlowParameters.hasCFFlowSentToBO ||\n props.parallelFlowParameters.hasCAFlowSentToBO ||\n props.parallelFlowParameters.hasCAFlowInProgress;\n\n return (\n \n {shouldDisplayRestrictParallelFlowsWrapper\n ? restrictParallelFlowsWrapper\n : mainContent}\n \n );\n}\n","import {\n Button,\n SelectionCard,\n FormRow,\n FormSection,\n ReadOnlyField,\n Space,\n Stack,\n Upselling,\n InsuranceIcon,\n Heading,\n useIsMobileLayout,\n AngleDownIcon,\n AngleUpIcon,\n} from \"design-system\";\nimport {\n useFormatMessage,\n useFormatMoneyAmountValue,\n useFormatPercentageLike,\n} from \"../../intl\";\nimport { useCommand } from \"../../useAPI\";\nimport * as apis from \"./api\";\nimport { constFalse, constNull, pipe } from \"fp-ts/function\";\nimport { boolean, option, taskEither } from \"fp-ts\";\nimport * as classes from \"./OfferChooseCard.treat\";\nimport { useState } from \"react\";\nimport { GenericLoanOffer, GenericLoanResponseOutput } from \"../api\";\n\ntype Props = {\n selected?: boolean;\n onComplete: (selectedOffer: GenericLoanResponseOutput) => void;\n offer: GenericLoanOffer;\n expanded: boolean;\n};\n\nexport function OfferChooseCard(props: Props) {\n const formatMessage = useFormatMessage();\n const formatMoneyAmount = useFormatMoneyAmountValue();\n const formatPercentage = useFormatPercentageLike();\n\n const saveSelectedOffer = useCommand(apis.saveSelectedOffer);\n\n const onOfferChoose = pipe(\n saveSelectedOffer(props.offer),\n taskEither.chain(selectedOffer =>\n taskEither.fromIO(() => props.onComplete(selectedOffer))\n )\n );\n\n const isMobileLayout = useIsMobileLayout();\n const [isCollapsed, setIsCollapsed] = useState(!props.expanded);\n const isContentVisible = !isMobileLayout || (isMobileLayout && !isCollapsed);\n\n const cardTitle = () =>\n pipe(\n props.offer.offerType,\n option.fold(\n () =>\n formatMessage(\"StandardLoan.OfferApproved.ChooseCard.yourOfferTitle\"),\n offerType => {\n switch (offerType) {\n case \"EXTENDED_DURATION\":\n return formatMessage(\n \"StandardLoan.OfferApproved.ChooseCard.extendedDurationOffer\"\n );\n case \"HIGHER_AMOUNT\":\n return formatMessage(\n \"StandardLoan.OfferApproved.ChooseCard.higherAmountOffer\"\n );\n case \"COUNTER_OFFER\":\n return formatMessage(\n \"StandardLoan.CounterOffer.counterOfferTitle\"\n );\n case \"CUSTOMER_OFFER\":\n return formatMessage(\n \"StandardLoan.OfferApproved.ChooseCard.yourOfferTitle\"\n );\n }\n }\n )\n );\n\n const hasRefinancing = pipe(\n props.offer.offerType,\n option.fold(() => option.isSome(props.offer.newMoneyAmount), constFalse)\n );\n\n const variant = props.selected ? \"primary\" : \"secondary\";\n\n return (\n \n \n setIsCollapsed(!isCollapsed)}\n >\n \n {cardTitle()}\n \n {isMobileLayout &&\n (isCollapsed ? (\n \n ) : (\n \n ))}\n \n \n \n \n {pipe(\n props.offer.newMoneyAmount,\n option.fold(constNull, newMoneyAmount => (\n \n \n \n ))\n )}\n \n \n \n {isContentVisible && (\n \n \n \n )}\n {isContentVisible && (\n \n \n \n )}\n {isContentVisible && (\n \n \n \n )}\n {isContentVisible &&\n pipe(\n props.offer.cpimonthlyAmount,\n option.fold(constNull, cpimonthlyAmount => (\n \n \n \n ))\n )}\n \n {pipe(\n !hasRefinancing && !isMobileLayout,\n boolean.fold(\n () => <>,\n () => \n )\n )}\n \n \n {pipe(\n props.offer.cpiSelectedName,\n option.fold(constNull, cpiName =>\n pipe(\n props.offer.cpimonthlyAmount,\n option.fold(constNull, () => (\n \n ))\n )\n )\n )}\n {isContentVisible && (\n \n )}\n \n \n \n );\n}\n","import {\n Body,\n Box,\n CheckboxField,\n ComputedFieldProps,\n Divider,\n FieldHeader,\n FormRow,\n Space,\n unsafeLocalizedString,\n useIsMobileLayout,\n useUniqueID,\n} from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { constant, constNull, pipe } from \"fp-ts/function\";\nimport { useFormatDate, useFormatMessage } from \"../../intl\";\nimport { DisplayMoneyAmount } from \"../../Common/Price/DisplayMoneyAmount\";\nimport { getTypeOfProductLabel, LiabilityFormModel } from \"../domain\";\n\ntype Props = {\n namePrefix: string;\n onChangeValues: (value: LiabilityFormModel) => void;\n fieldProps: (\n name: K\n ) => ComputedFieldProps;\n divider: boolean;\n showRepaidLoans: boolean;\n};\n\nexport function LiabilityEditableItem(props: Props) {\n const isMobile = useIsMobileLayout();\n const formatMessage = useFormatMessage();\n const formatDate = useFormatDate(\"dd-mm-yyyy\");\n\n const labelId = useUniqueID();\n const startDateField = pipe(\n props.fieldProps(\"startDate\").value,\n option.fold(constNull, startDate => (\n \n {pipe(\n option.some(startDate),\n option.fold(constant(\"-\"), formatDate),\n unsafeLocalizedString\n )}\n \n ))\n );\n\n return (\n \n \n \n \n \n props.onChangeValues({\n type: props.fieldProps(\"type\").value,\n originalAmount: props.fieldProps(\"originalAmount\").value,\n remainingAmount: props.fieldProps(\"remainingAmount\").value,\n startDate: props.fieldProps(\"startDate\").value,\n selected,\n recordId: props.fieldProps(\"recordId\").value,\n selectedForRepaid:\n props.fieldProps(\"selectedForRepaid\").value && !selected,\n })\n }\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {startDateField}\n \n {props.showRepaidLoans && (\n <>\n \n \n \n \n props.onChangeValues({\n type: props.fieldProps(\"type\").value,\n originalAmount: props.fieldProps(\"originalAmount\").value,\n remainingAmount: props.fieldProps(\"remainingAmount\").value,\n startDate: props.fieldProps(\"startDate\").value,\n selected:\n props.fieldProps(\"selected\").value && !selectedForRepaid,\n recordId: props.fieldProps(\"recordId\").value,\n selectedForRepaid,\n })\n }\n />\n \n \n )}\n \n\n \n {props.divider && (\n \n \n \n )}\n \n );\n}\n","import { SummaryAndDownload } from \"../../UKontoSecondPart/SummaryAndDownload/SummaryAndDownload\";\nimport {\n Box,\n Body,\n Stack,\n Space,\n ErrorIcon,\n ContentRow,\n SuccessIcon,\n FeedbackBlock,\n FeedbackDialog,\n} from \"design-system\";\nimport { FinalFeedback } from \"./FinalFeedback\";\nimport { option, boolean } from \"fp-ts\";\nimport { useFormatMessage } from \"../../intl\";\nimport { usePollingEffect } from \"../../useAPI\";\nimport * as api from \"../api\";\nimport { useEffect, useState } from \"react\";\nimport { constVoid, pipe } from \"fp-ts/function\";\nimport cx from \"classnames\";\nimport * as classes from \"./Summary.treat\";\nimport { IO } from \"fp-ts/IO\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { StandardLoanFlowType } from \"../domain\";\nimport { MainContent } from \"../../Common/MainContent\";\n\ntype Props = {\n clientExists: boolean;\n goToMicrotransaction: IO;\n flowType: StandardLoanFlowType;\n};\n\nfunction isSuccess(result: api.SLResultsSuccess): boolean {\n return result.stepsResults.every(r => r.type !== \"ERROR\");\n}\n\nfunction OnboardingResultSuccessDialog(props: {\n result: api.SLResultsSuccess;\n onDismiss: () => unknown;\n}) {\n const formatMessage = useFormatMessage();\n return pipe(\n isSuccess(props.result),\n boolean.fold(\n () => (\n \n \n \n {props.result.stepsResults.map(result => (\n \n {result.type === \"SUCCESS\" ? (\n \n ) : (\n \n )}\n \n \n {result.message}\n \n \n ))}\n \n \n {formatMessage(\n \"StandardLoan.Summary.partialSuccessEmailReminder\"\n )}\n \n \n \n ),\n () => (\n \n )\n )\n );\n}\nexport const Summary = (props: Props) => {\n const formatMessage = useFormatMessage();\n\n const [slResult, setSLResult] = useState({\n status: \"PENDING\",\n });\n const [successDialogOpen, setSuccessDialogOpen] = useState(true);\n\n usePollingEffect(api.slResults, {\n intervalMS: 3000,\n shouldPollingContinue: result =>\n result.status === \"PENDING\" || result.status === \"CONTINUE\",\n onSuccess: setSLResult,\n onError: constVoid,\n });\n\n useEffect(() => {\n switch (slResult.status) {\n case \"MICROPAYMENT\":\n props.goToMicrotransaction();\n break;\n case \"CONTINUE\":\n case \"DONE\":\n case \"ERROR\":\n case \"NOTIFY_CLIENT_OF_DELAY\":\n case \"NOTIFY_CLIENT_OF_DELAY_ERRORS\":\n case \"PENDING\":\n case \"REDIRECT_TO_THE_BANK\":\n case \"REJECTED\":\n break;\n }\n }, [slResult.status]);\n\n const decision = slResult.status === \"DONE\" ? \"Approved\" : \"Pending\";\n\n const feedback = (\n \n \n \n );\n\n const summaryHeading = {\n title: formatMessage(\"StandardLoan.Summary.title\"),\n description: formatMessage(\"StandardLoan.Summary.description\"),\n };\n\n const {\n config: { unicreditBranchesMapURL },\n } = useAppContext();\n\n const navigateToFindBranches = () => {\n window.location.href = unicreditBranchesMapURL;\n };\n\n const render = () => {\n switch (slResult.status) {\n case \"PENDING\":\n return feedback;\n case \"CONTINUE\":\n return (\n <>\n {feedback}\n \n \n );\n case \"DONE\":\n return (\n <>\n {feedback}\n {!props.clientExists && (\n \n )}\n {successDialogOpen && (\n setSuccessDialogOpen(false)}\n />\n )}\n \n );\n case \"ERROR\":\n return (\n \n );\n case \"REJECTED\":\n return (\n \n );\n case \"MICROPAYMENT\":\n return null;\n case \"REDIRECT_TO_THE_BANK\":\n return (\n \n );\n case \"NOTIFY_CLIENT_OF_DELAY\":\n return (\n \n );\n case \"NOTIFY_CLIENT_OF_DELAY_ERRORS\":\n return (\n \n );\n }\n };\n\n return {render()};\n};\n","import { Box } from \"design-system\";\nimport { PhoneAndEmailFlow } from \"../../PhoneAndEmailVerification/PhoneAndEmailFlow\";\nimport { CoApplicantInput } from \"../../globalDomain\";\nimport { Option } from \"fp-ts/Option\";\nimport { TaskEither } from \"fp-ts/TaskEither\";\nimport { NonEmptyString } from \"io-ts-types/NonEmptyString\";\nimport { PageHeading } from \"../../Common/PageHeading/PageHeading\";\nimport { foldFlowType, StandardLoanFlowType } from \"../domain\";\nimport { pipe } from \"fp-ts/function\";\nimport { useFormatMessage } from \"../../intl\";\nimport {\n GenerateOTP,\n VerifyOTP,\n} from \"../../PhoneAndEmailVerification/PhoneVerification/PhoneVerification\";\n\nimport { OtpGenerationError } from \"../../PhoneAndEmailVerification/api\";\n\nimport { useCommand } from \"../../useAPI\";\nimport { linkGenerationNow, needsCaptcha } from \"../api\";\n\ntype Props = {\n initialPromoCode: Option;\n onPhoneVerified: (phoneNumber: string) => TaskEither;\n onComplete: () => unknown;\n generateOTP: GenerateOTP;\n verifyOTP: VerifyOTP;\n hideInstructions?: boolean;\n flowType: StandardLoanFlowType;\n onMaxNumberChangesReached?: (error: OtpGenerationError) => unknown;\n} & CoApplicantInput;\n\nexport function PhoneAndEmailVerification(props: Props) {\n const formatMessage = useFormatMessage();\n\n const generateLinkNow = useCommand(linkGenerationNow);\n const needsCaptchaCommand = useCommand(needsCaptcha);\n\n const headingWhenNon3PFlow = () => (\n \n );\n\n return (\n \n {pipe(\n props.flowType,\n foldFlowType({\n when3P: () => (\n \n ),\n whenInPerson: headingWhenNon3PFlow,\n whenTLSAgent: headingWhenNon3PFlow,\n whenHomeBanking: headingWhenNon3PFlow,\n whenSmartBanking: headingWhenNon3PFlow,\n whenPWSRemote: headingWhenNon3PFlow,\n })\n )}\n\n \n \n );\n}\n","import {\n Body,\n Box,\n Button,\n buttonLink,\n Card,\n Heading,\n InputSliderField,\n LocalizedString,\n NonNegative,\n Positive,\n PositiveInteger,\n Stack,\n unsafeLocalizedString,\n unsafeNonNegative,\n unsafePositiveInteger,\n} from \"design-system\";\nimport { boolean, option, taskEither } from \"fp-ts\";\nimport { constNull, constVoid, flow, identity, pipe } from \"fp-ts/function\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { useRef, useState } from \"react\";\nimport {\n Currency,\n foldCurrency,\n unsafeNonNegativeInteger,\n} from \"../../globalDomain\";\nimport {\n LocaleKey,\n useFormatCurrency,\n useFormatMessage,\n useFormatMoneyAmount,\n useFormatRichMessage2,\n} from \"../../intl\";\nimport { useCommand } from \"../../useAPI\";\nimport { FilePDFDialog } from \"../../Common/Dialogs/FilePDFDialog/FilePDFDialog\";\nimport * as api from \"../api\";\nimport * as documentAPI from \"../../Common/documentAPI\";\nimport { Tenor } from \"./Tenor\";\nimport { Option } from \"fp-ts/Option\";\nimport { ChooseBrokerButton } from \"./ChooseBrokerButton\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { useIs3PChannel, useIsInPersonChannel } from \"../../useChannel\";\n\ntype Props = {\n initialOffer: api.LoanOfferWithLimits;\n onContinue: (loanOffer: api.LoanOfferWithLimits, show3P?: boolean) => unknown;\n};\n\ninterface ConfiguratorValues {\n amount: NonNegative;\n tenor: PositiveInteger;\n}\n\nfunction useDebounceAction(\n action: Reader,\n delay: number\n): Reader {\n const timeoutRef = useRef>(option.none);\n\n return (input: I) => {\n pipe(\n timeoutRef.current,\n option.fold(constVoid, currentTimeout => {\n window.clearTimeout(currentTimeout);\n })\n );\n\n timeoutRef.current = option.some(\n window.setTimeout(() => {\n action(input);\n timeoutRef.current = option.none;\n }, delay)\n );\n };\n}\n\ninterface ClampAndRoundParams {\n min: number;\n max: number;\n step: Positive;\n}\n\nfunction makeClampAndRound(\n params: ClampAndRoundParams\n): Reader {\n return amount => {\n const rounded = Math.round(amount / params.step) * params.step;\n return Math.max(Math.min(rounded, params.max), params.min);\n };\n}\n\nexport function Configurator(props: Props) {\n const formatMessage = useFormatMessage();\n const formatRichMessage2 = useFormatRichMessage2();\n const formatMoneyAmount = useFormatMoneyAmount(unsafeNonNegativeInteger(0));\n const formatCurrency = useFormatCurrency();\n const updateLoanOffer = useCommand(api.updateLoanOffer);\n const representativeExampleTemplate = useCommand(documentAPI.templates);\n const representativeExampleContent = useCommand(documentAPI.content);\n\n const [currentLoanOffer, setCurrentLoanOffer] = useState({\n ...props.initialOffer,\n isLoading: false,\n });\n\n const [\n showRepresentativeExampleModal,\n setShowRepresentativeExampleModal,\n ] = useState(false);\n\n const amountStep = pipe(\n currentLoanOffer.currency,\n foldCurrency({\n CZK: () =>\n currentLoanOffer.maxAmount - currentLoanOffer.minAmount < 20000\n ? 500\n : 5000,\n EUR: () =>\n currentLoanOffer.maxAmount - currentLoanOffer.minAmount < 1000\n ? 100\n : 200,\n }),\n unsafePositiveInteger\n );\n\n const tenorStep = unsafePositiveInteger(3);\n\n const clampAndRoundAmount = makeClampAndRound({\n min: currentLoanOffer.minAmount,\n max: currentLoanOffer.maxAmount,\n step: amountStep,\n });\n\n const clampAndRoundTenor = makeClampAndRound({\n min: currentLoanOffer.minTenor,\n max: currentLoanOffer.maxTenor,\n step: tenorStep,\n });\n\n const debounceUpdate = useDebounceAction((values: ConfiguratorValues) => {\n setCurrentLoanOffer(offer => ({\n ...offer,\n isLoading: true,\n }));\n\n pipe(\n updateLoanOffer({\n amount: pipe(\n values.amount,\n clampAndRoundAmount,\n NonNegative.decode,\n option.fromEither\n ),\n tenor: pipe(\n values.tenor,\n clampAndRoundTenor,\n PositiveInteger.decode,\n option.fromEither\n ),\n }),\n taskEither.chain(updatedOffer =>\n taskEither.fromIO(() =>\n setCurrentLoanOffer({\n ...updatedOffer,\n isLoading: false,\n })\n )\n )\n )();\n }, 750);\n\n const onAmountUpdate: Reader = amount => {\n setCurrentLoanOffer(offer => ({\n ...offer,\n amount,\n }));\n\n debounceUpdate({\n amount,\n tenor: currentLoanOffer.tenor,\n });\n };\n\n const onTenorUpdate: Reader = tenor => {\n setCurrentLoanOffer(offer => ({\n ...offer,\n tenor,\n }));\n\n debounceUpdate({\n amount: currentLoanOffer.amount,\n tenor,\n });\n };\n\n function formatLabelContent(\n currency: Currency,\n message: LocaleKey\n ): Reader {\n return value =>\n formatMessage(\n message,\n formatMoneyAmount(\n { amount: unsafeNonNegative(value), currency },\n identity\n )\n );\n }\n\n const {\n config: { enableCashLoanId3PInBranch },\n } = useAppContext();\n const isInPersonChannel = useIsInPersonChannel();\n const is3PChannel = useIs3PChannel();\n\n return (\n \n \n {formatMessage(\"StandardLoan.Landing.Configurator.Title\")}\n \n \n \n \n \n \n {formatMessage(\"PreApprovedLoanSaleConfigurator.amountLabel\")}\n \n \n pipe(\n isNaN(val) ? 0 : val,\n flow(unsafeNonNegative, onAmountUpdate)\n )\n }\n min={currentLoanOffer.minAmount}\n max={currentLoanOffer.maxAmount}\n step={amountStep}\n minLabelContent={formatLabelContent(\n currentLoanOffer.currency,\n \"PreApprovedLoanSaleConfigurator.minAmountLabel\"\n )}\n maxLabelContent={formatLabelContent(\n currentLoanOffer.currency,\n \"PreApprovedLoanSaleConfigurator.maxAmountLabel\"\n )}\n name=\"amount\"\n issues={option.none}\n label={unsafeLocalizedString(\"\")}\n onBlur={constVoid}\n rightContent={formatCurrency(currentLoanOffer.currency)}\n disabled={currentLoanOffer.isLoading}\n />\n \n \n \n \n
\n {formatRichMessage2(\"PreApprovedLoanSaleConfigurator.tenorFooter1\")}\n \n {buttonLink(\n () => setShowRepresentativeExampleModal(true),\n formatMessage(\"PreApprovedLoanSaleConfigurator.tenorFooter2\")\n )}\n \n
\n {enableCashLoanId3PInBranch && isInPersonChannel && !is3PChannel ? (\n \n props.onContinue(currentLoanOffer, false)}\n />\n props.onContinue(currentLoanOffer, true)}\n buttonLabel={formatMessage(\n \"Mortgage.Dashboard.Overview.brokerForBankerApp.choose\"\n )}\n />\n \n ) : (\n \n props.onContinue(currentLoanOffer, false)}\n />\n \n )}\n
\n {pipe(\n showRepresentativeExampleModal,\n boolean.fold(constNull, () => (\n setShowRepresentativeExampleModal(false)}\n file={pipe(\n representativeExampleTemplate({\n docsets: [\"representativeExample\"],\n }),\n taskEither.chain(items =>\n representativeExampleContent({ docId: items[0].docId })\n )\n )}\n />\n ))\n )}\n
\n );\n}\n","import {\n Box,\n Button,\n FormRow,\n FormSection,\n InputSliderField,\n Loader,\n PositiveInteger,\n ReadOnlyField,\n Space,\n unsafePositiveInteger,\n useIsMobileLayout,\n} from \"design-system\";\nimport { boolean, either, option } from \"fp-ts\";\nimport { constNull, constVoid, flow, pipe } from \"fp-ts/function\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { useState } from \"react\";\nimport { useFormatMessage, useFormatPercentageLike } from \"../../intl\";\nimport { ReadOnlyMoneyAmountField } from \"../../Common/ReadOnlyMoneyAmountField/ReadOnlyMoneyAmountField\";\nimport * as api from \"../api\";\n\ntype Props = {\n currentLoanOffer: api.LoanOfferWithLimits & { isLoading: boolean };\n onChange: Reader;\n};\n\nexport function Tenor(props: Props) {\n const formatMessage = useFormatMessage();\n const formatPercentageLike = useFormatPercentageLike();\n const isMobileLayout = useIsMobileLayout();\n const [isEditing, setIsEditing] = useState(false);\n\n return (\n \n \n {pipe(\n isEditing,\n boolean.fold(constNull, () => (\n <>\n unsafePositiveInteger(1)),\n props.onChange\n )}\n min={props.currentLoanOffer.minTenor}\n max={props.currentLoanOffer.maxTenor}\n step={unsafePositiveInteger(3)}\n minLabelContent={() =>\n formatMessage(\n \"PreApprovedLoanSaleConfigurator.minTenorLabel\",\n {\n months: props.currentLoanOffer.minTenor,\n }\n )\n }\n maxLabelContent={() =>\n formatMessage(\n \"PreApprovedLoanSaleConfigurator.maxTenorLabel\",\n {\n months: props.currentLoanOffer.maxTenor,\n }\n )\n }\n name=\"currentTenor\"\n issues={option.none}\n label={formatMessage(\n \"PreApprovedLoanSaleConfigurator.tenorLabelTenor\"\n )}\n onBlur={constVoid}\n rightContent={formatMessage(\n \"PreApprovedLoanSaleConfigurator.tenorSliderUnits\"\n )}\n disabled={props.currentLoanOffer.isLoading}\n />\n \n \n ))\n )}\n \n {pipe(\n isEditing,\n boolean.fold(\n () => (\n \n \n \n ),\n constNull\n )\n )}\n \n {pipe(\n props.currentLoanOffer.isLoading,\n boolean.fold(\n () => (\n \n ),\n () => \n )\n )}\n \n \n \n \n \n \n {pipe(\n isEditing,\n boolean.fold(\n () => (\n setIsEditing(true)}\n />\n ),\n constNull\n )\n )}\n \n );\n}\n","import \"!../../../../node_modules/extract-css-chunks-webpack-plugin/dist/loader.js!css-loader?{\\\"modules\\\":false,\\\"url\\\":false}!./ChooseBrokerButton.treat.2-TIpIQ.css\";\nexport var button = 'yaMBG';","import { option, taskEither } from \"fp-ts\";\nimport { constVoid, pipe } from \"fp-ts/function\";\nimport {\n ErrorBanner,\n FeedbackBlock,\n LocalizedString,\n unsafeLocalizedString,\n} from \"design-system\";\nimport { MainContent } from \"../Common/MainContent\";\nimport { useFormatMessage } from \"../intl\";\nimport { Container } from \"../Common/MainContent/grid/Container\";\nimport { useIsInPersonChannel } from \"../useChannel\";\nimport { useAppContext } from \"../useAppContext\";\nimport moment from \"moment\";\nimport { Option } from \"fp-ts/Option\";\nimport { useState } from \"react\";\nimport { useCommand } from \"../useAPI\";\nimport { IO } from \"fp-ts/IO\";\nimport * as api from \"./api\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\n\ntype Props = {\n onBack: () => unknown;\n onExit: IO;\n continueNewApp: () => unknown;\n title: LocalizedString;\n hasCAFlowInProgress: boolean;\n hasCAFlowSentToBO: boolean;\n hasCFFlowSentToBO: boolean;\n isFromClientProfile: boolean;\n date: Option;\n existingApplicationId: Option;\n onReturnToPrev: () => unknown;\n};\n\nexport default function RestrictParallelFlowsWrapper(props: Props) {\n return (\n \n \n \n );\n}\n\nfunction RestrictParallelFlowsWrapperInner(props: Props) {\n const formatMessage = useFormatMessage();\n const isInPerson = useIsInPersonChannel();\n const { config } = useAppContext();\n const [showDeletionConfirmation, setShowDeletionConfirmation] = useState(\n false\n );\n\n const applicationType = props.hasCFFlowSentToBO\n ? formatMessage(\"Applications.ProductType.CF.title\")\n : props.hasCAFlowSentToBO || props.hasCAFlowInProgress\n ? formatMessage(\"Applications.ProductType.Ukonto.title\")\n : \"\";\n const existingApplicationDate = pipe(\n props.date,\n option.fold(\n () => \"\",\n value => unsafeLocalizedString(\"\" + moment(value).format(\"DD/MM/YYYY\"))\n )\n );\n\n const inPersonFlow = (\n \n );\n\n const remoteFlow = (\n (window.location.href = config.PWSURL),\n },\n ]}\n />\n );\n\n const handleCancelExistingApplication = () => {\n setShowDeletionConfirmation(true);\n };\n\n const remoteFlowCAInProgress = (\n handleCancelExistingApplication(),\n },\n {\n variant: \"primary\",\n label: formatMessage(\n \"BankerLanding.anotherApplicationAlreadyInProgress.confirmButtonLabel\"\n ),\n action: props.isFromClientProfile\n ? props.onExit\n : () => (window.location.href = config.PWSURL),\n },\n ]}\n />\n );\n\n return (\n \n {!showDeletionConfirmation ? (\n props.hasCAFlowSentToBO || props.hasCFFlowSentToBO ? (\n isInPerson ? (\n inPersonFlow\n ) : (\n remoteFlow\n )\n ) : props.hasCAFlowInProgress ? (\n isInPerson ? (\n inPersonFlow\n ) : (\n remoteFlowCAInProgress\n )\n ) : (\n <>\n )\n ) : (\n setShowDeletionConfirmation(false)}\n />\n )}\n \n );\n}\n\nfunction OldApplicationDeletionConfirmation(props: Props) {\n const formatMessage = useFormatMessage();\n const deleteApplication = useCommand(api.deleteExistingApplication);\n const [\n showAppSuccessfullyCanceled,\n setShowAppSuccessfullyCanceled,\n ] = useState(false);\n const [showErrorBanner, setShowErrorBanner] = useState(false);\n\n const handleDeleteApplication = (props: Props) => {\n pipe(\n props.existingApplicationId,\n option.fold(constVoid, appId =>\n pipe(\n deleteApplication({ processId: appId }),\n taskEither.mapLeft(\n taskEither.fromIO(() => {\n setShowErrorBanner(true);\n })\n ),\n taskEither.chain(() =>\n taskEither.fromIO(() => setShowAppSuccessfullyCanceled(true))\n )\n )()\n )\n );\n };\n\n const applicationType = props.hasCFFlowSentToBO\n ? formatMessage(\"Applications.ProductType.CF.title\")\n : props.hasCAFlowSentToBO || props.hasCAFlowInProgress\n ? formatMessage(\"Applications.ProductType.Ukonto.title\")\n : \"\";\n const existingApplicationDate = pipe(\n props.date,\n option.fold(\n () => \"\",\n value => unsafeLocalizedString(\"\" + moment(value).format(\"DD/MM/YYYY\"))\n )\n );\n\n const inPersonFlow = (\n handleDeleteApplication(props),\n },\n ]}\n />\n );\n\n const appSuccessfullyCanceled = (\n \n );\n\n const errorContent = ;\n\n return (\n \n {showErrorBanner\n ? errorContent\n : showAppSuccessfullyCanceled\n ? appSuccessfullyCanceled\n : inPersonFlow}\n \n );\n}\n","import { Box, Loader } from \"design-system\";\nimport { constNull, pipe } from \"fp-ts/function\";\nimport { OfferChoose } from \"./OfferChoose\";\nimport { Counteroffer } from \"./Counteroffer\";\nimport { IO } from \"fp-ts/IO\";\nimport { Reader } from \"fp-ts/Reader\";\nimport * as api from \"../api\";\nimport * as offerListApi from \"./api\";\nimport { usePolling } from \"../../useAPI\";\nimport * as remoteData from \"../../RemoteData\";\nimport { MainContent } from \"../../Common/MainContent\";\n\nexport type OfferType = \"Approved\" | \"Counteroffer\";\n\ntype Props = {\n offerType: OfferType;\n onContinue: Reader;\n onBack: IO;\n};\n\nfunction foldOfferType(matches: {\n whenApproved: IO;\n whenCounteroffer: IO;\n}): Reader {\n return type => {\n switch (type) {\n case \"Approved\":\n return matches.whenApproved();\n case \"Counteroffer\":\n return matches.whenCounteroffer();\n }\n };\n}\n\nfunction foldOfferState(matches: {\n onLoading: IO;\n onReady: IO;\n onTimeout: IO;\n}): Reader {\n return type => {\n switch (type) {\n case \"PENDING\":\n return matches.onLoading();\n case \"RECEIVED\":\n return matches.onReady();\n case \"TIMEOUT\":\n return matches.onTimeout();\n }\n };\n}\n\nexport function OfferList(props: Props) {\n const [checkOfferStatus] = usePolling(offerListApi.checkOffers, {\n intervalMS: 2000,\n shouldPollingContinue: ({ status }) => status === \"PENDING\",\n });\n\n const renderLoader = (\n \n \n \n );\n\n const renderOfferType = (\n offerState: Exclude\n ) =>\n pipe(\n props.offerType,\n foldOfferType({\n whenApproved: () => (\n \n ),\n whenCounteroffer: () => (\n \n ),\n })\n );\n\n return (\n \n {pipe(\n checkOfferStatus,\n remoteData.fold(\n () => renderLoader,\n constNull,\n ({ status }) =>\n pipe(\n status,\n foldOfferState({\n onLoading: () => renderLoader,\n onReady: () => renderOfferType(\"RECEIVED\"),\n onTimeout: () => renderOfferType(\"TIMEOUT\"),\n })\n )\n )\n )}\n \n );\n}\n","import {\n Stack,\n Loader,\n Box,\n FeedbackBlock,\n useIsMobileLayout,\n} from \"design-system\";\nimport { useFormatMessage } from \"../../intl\";\nimport { OfferChooseCard } from \"./OfferChooseCard\";\nimport * as offerListApi from \"./api\";\nimport * as standardLoanApi from \"../api\";\nimport { useQuery } from \"../../useAPI\";\nimport { constNull, pipe } from \"fp-ts/function\";\nimport { array, boolean, option } from \"fp-ts\";\nimport * as remoteData from \"../../RemoteData\";\nimport { BackButton } from \"../../Common/BackButton/BackButton\";\nimport { IO } from \"fp-ts/IO\";\nimport { Reader } from \"fp-ts/Reader\";\nimport * as classes from \"./OfferChoose.treat\";\nimport cx from \"classnames\";\n\ntype Props = {\n onSelectOffer: Reader;\n onBack: IO;\n offerState: Exclude;\n};\n\ntype ChildProps = {\n onSelectOffer: Reader;\n isMobileLayout: boolean;\n};\n\nexport function SelectedOffer(props: ChildProps) {\n const [selectedOffer] = useQuery(offerListApi.getSelectedOffer);\n\n return pipe(\n selectedOffer,\n remoteData.fold(\n () => (\n \n \n \n ),\n constNull,\n offer => (\n \n \n \n )\n )\n );\n}\n\nexport function UpsellOffers(props: ChildProps) {\n const [upsellOffers] = useQuery(offerListApi.getUpsellOffers);\n\n return pipe(\n upsellOffers,\n remoteData.fold(constNull, constNull, ({ offers }) => (\n \n {pipe(\n offers,\n array.map(offer => (\n \n ))\n )}\n \n ))\n );\n}\n\nexport function OfferChoose(props: Props) {\n const formatMessage = useFormatMessage();\n\n const isMobileLayout = useIsMobileLayout();\n\n return (\n \n \n {pipe(\n props.offerState === \"RECEIVED\",\n boolean.fold(\n () => (\n \n ),\n () => (\n \n )\n )\n )}\n \n \n \n \n );\n}\n","import \"!../../../../node_modules/extract-css-chunks-webpack-plugin/dist/loader.js!css-loader?{\\\"modules\\\":false,\\\"url\\\":false}!./OfferChoose.treat.pxQH5MM.css\";\nexport var containerMobile = '_3QTfx';","import {\n Box,\n Stack,\n Card,\n Body,\n ReadOnlyField,\n Button,\n Upselling,\n UmbrellaIcon,\n FormSection,\n FormRow,\n FeedbackBlock,\n useIsMobileLayout,\n ContentRow,\n} from \"design-system\";\nimport {\n useFormatMessage,\n useFormatMoneyAmountValue,\n useFormatPercentageLike,\n} from \"../../intl\";\nimport * as offerListApi from \"./api\";\nimport * as standardLoanApi from \"../api\";\nimport { useQuery, useCommand } from \"../../useAPI\";\nimport { constNull, pipe } from \"fp-ts/function\";\nimport { array, taskEither, option, boolean } from \"fp-ts\";\nimport * as remoteData from \"../../RemoteData\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { IO } from \"fp-ts/IO\";\nimport { BackButton } from \"../../Common/BackButton/BackButton\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\n\ntype Props = {\n onSelectOffer: Reader;\n onBack: IO;\n offerState: Exclude;\n};\n\nexport function Counteroffer(props: Props) {\n const formatMessage = useFormatMessage();\n const formatMoneyAmount = useFormatMoneyAmountValue();\n const formatPercentage = useFormatPercentageLike();\n const saveSelectedOffer = useCommand(offerListApi.saveSelectedOffer);\n const [counterOffer] = useQuery(offerListApi.getCounterOffers);\n const isMobileLayout = useIsMobileLayout();\n\n const renderOffers = (\n offers: NonEmptyArray\n ) =>\n pipe(\n offers,\n array.map(offer => (\n \n \n \n {formatMessage(\"StandardLoan.CounterOffer.counterOfferTitle\")}\n \n {pipe(\n offer.newMoneyAmount,\n option.fold(\n () => (\n \n ),\n amount => (\n \n \n \n \n \n \n \n \n )\n )\n )}\n\n \n \n \n \n \n {pipe(\n offer.cpimonthlyAmount,\n option.fold(constNull, cpimonthlyAmount => (\n \n ))\n )}\n \n \n {pipe(\n offer.cpiSelectedName,\n option.fold(constNull, cpiName =>\n pipe(\n offer.cpimonthlyAmount,\n option.fold(constNull, () => (\n \n ))\n )\n )\n )}\n \n taskEither.fromIO(() => props.onSelectOffer(selectedOffer))\n )\n )}\n />\n \n \n ))\n );\n\n const renderBackButton = (\n \n \n \n \n \n );\n return pipe(\n props.offerState === \"RECEIVED\",\n boolean.fold(\n () => (\n \n \n {renderBackButton}\n \n ),\n () =>\n pipe(\n counterOffer,\n remoteData.fold(\n constNull,\n () => (\n \n \n <>\n \n ),\n ({ offers }) => (\n \n <>\n \n {renderOffers(offers)}\n \n {renderBackButton}\n \n )\n )\n )\n )\n );\n}\n","import { Option } from \"fp-ts/Option\";\nimport {\n Box,\n ContentRow,\n FlowAccordion,\n FlowAccordionItem,\n Space,\n useIsMobileLayout,\n} from \"design-system\";\nimport { useState } from \"react\";\nimport { useFormatMessage } from \"../../intl\";\nimport { PageHeading } from \"../../Common/PageHeading/PageHeading\";\nimport { PersonalAndTaxInformation } from \"./PersonalAndTaxInformation\";\nimport { Transactions } from \"./Transactions\";\nimport { option, taskEither } from \"fp-ts\";\nimport { constVoid, flow, pipe } from \"fp-ts/function\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport * as api from \"../api\";\nimport { useCommand } from \"../../useAPI\";\nimport { IO } from \"fp-ts/IO\";\nimport { BackButton } from \"../../Common/BackButton/BackButton\";\nimport { StandardLoanFlowType } from \"../domain\";\nimport { MainContent } from \"../../Common/MainContent\";\nimport { IncomeSourceType } from \"../IncomeForm/domain\";\n\ntype Props = {\n onNext: (needsMicropayment: boolean) => unknown;\n onBack: IO;\n mainIncomeSource: IncomeSourceType;\n flowType: StandardLoanFlowType;\n transactionsInfo: Option;\n existingClient: boolean;\n};\n\nexport function KYC(props: Props) {\n const formatMessage = useFormatMessage();\n const [activeItem, setActiveItem] = useState>(\n option.some(option.isSome(props.transactionsInfo) ? 1 : 0)\n );\n const KYCSubmitCommand = useCommand(api.submitKYC);\n const [transactions, setTransactions] = useState<\n Option\n >(props.transactionsInfo);\n\n const transactionsStep: FlowAccordionItem = {\n title: formatMessage(\"StandardLoan.KYC.Transactions.title\"),\n content: ({ down }) => (\n \n ),\n };\n\n const personalAndTaxInfoStep: FlowAccordionItem = {\n title: formatMessage(\"StandardLoan.KYC.PersonalAndTaxInformation.title\"),\n content: () => (\n \n pipe(\n transactions,\n option.fold(\n () => taskEither.fromIO(constVoid),\n transactions =>\n pipe(\n KYCSubmitCommand({\n answers: {\n transactionsInfo: transactions,\n personalAndTaxInfo: personalAndTaxInfo,\n },\n }),\n taskEither.chain(({ needsMicropayment }) =>\n taskEither.fromIO(() => props.onNext(needsMicropayment))\n )\n )\n )\n )\n }\n />\n ),\n };\n\n const itemsAccordion: NonEmptyArray = [\n transactionsStep,\n personalAndTaxInfoStep,\n ];\n\n const isMobileLayout = useIsMobileLayout();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { option, array, record } from \"fp-ts\";\nimport { constant, constFalse, identity, pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { TaskEither } from \"fp-ts/TaskEither\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useQuery } from \"../../useAPI\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { useValidators } from \"../../Common/useValidators\";\nimport { Industry, ReasonNote } from \"../../KYC/domain\";\nimport {\n TaxPayerCountryForm,\n TaxPayerCountryFormModel,\n} from \"../../KYC/TaxPayerCountryForm\";\nimport { PersonalAndTaxInfo } from \"../api\";\nimport * as kycApi from \"../../KYC/api\";\nimport { useLayoutEffect, useMemo, useState } from \"react\";\nimport * as remoteData from \"../../RemoteData\";\nimport {\n dropdownOptionToValue,\n selectedDropdownOption,\n} from \"../../Common/selectDropdownOption\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport {\n Banner,\n Body,\n Box,\n Button,\n Divider,\n DropdownOption,\n Form,\n FormRow,\n FormSection,\n link,\n LoadingButton,\n PlusIcon,\n Space,\n Stack,\n TextField,\n LocalizedString,\n useForm,\n validators,\n Field,\n} from \"design-system\";\nimport { shouldAskCompany } from \"../domain\";\nimport { useFormatIndustry } from \"../../KYC/utils\";\nimport { YesNoRadioGroupField } from \"../../Common/YesNoRadioGroup/YesNoRadioGroupField\";\nimport { PersonalDataProcessingDisclaimer } from \"../../Common/PersonalDataProcessingDisclaimer/PersonalDataProcessingDisclaimer\";\nimport { DropdownField } from \"../../Common/DropdownField/DropdownField\";\nimport { RiskyActivitiesDialog } from \"../../KYC/RiskyActivitiesDialog\";\nimport { IncomeSourceType } from \"../IncomeForm/domain\";\nimport { incomeSourcesWithIndustry } from \"./domain\";\nimport { SecondCitizenshipField } from \"../../IdUpload/ClientData/PersonalDataForm/SecondCitizenshipField\";\nimport { AllCitizenships } from \"../../IdUpload/domain\";\n\ntype Props = {\n onNext: (\n personalAndTaxInfo: PersonalAndTaxInfo\n ) => TaskEither;\n initialPersonalAndTaxInfo: Option;\n incomeSource: IncomeSourceType;\n existingClient: boolean;\n};\n\nconst emptyOtherTaxPayerCountry: TaxPayerCountryFormModel = {\n country: option.none,\n countryRequiresTIN: false,\n TIN: \"\",\n note: option.none,\n noTIN: false,\n};\n\nfunction useFormatReasonNote(): (note: ReasonNote) => LocalizedString {\n const formatMessage = useFormatMessage();\n\n return note => {\n switch (note) {\n case \"NotIssuedToMe\":\n return formatMessage(\"KYC.TaxPayerCountryForm.noteNotIssuedToMe\");\n case \"DoNotKnow\":\n return formatMessage(\"KYC.TaxPayerCountryForm.noteDoNotKnow\");\n case \"RefuseToProvide\":\n return formatMessage(\"KYC.TaxPayerCountryForm.noteRefuseToProvide\");\n }\n };\n}\n\nfunction getOtherTaxPayerCountries({\n taxPayerOutsideCzechRepublic,\n countries,\n}: {\n taxPayerOutsideCzechRepublic: boolean;\n countries: TaxPayerCountryFormModel[];\n}) {\n if (taxPayerOutsideCzechRepublic) {\n let otherTaxPayingCountries = [];\n for (let i = 0; i < countries.length; i++) {\n otherTaxPayingCountries[i] = {\n TIN: pipe(countries[i].TIN, NonEmptyString.decode, option.fromEither),\n note: dropdownOptionToValue(countries[i].note),\n country: getCountryCode(countries[i]),\n };\n }\n return otherTaxPayingCountries;\n }\n return [];\n}\n\nfunction getCountryCode(taxCountry: TaxPayerCountryFormModel) {\n let country = option.toNullable(dropdownOptionToValue(taxCountry.country));\n return country ? country.countryCode : \"\";\n}\n\nexport function PersonalAndTaxInformation(props: Props) {\n const formatMessage = useFormatMessage();\n const {\n defined,\n definedNoExtract,\n nonBlankString,\n maxLength,\n } = useValidators();\n\n const formatReasonNote = useFormatReasonNote();\n\n const {\n config: { CRSCountryURL, FATCAURL, r6NewSironMapping: newSironMapping },\n } = useAppContext();\n\n const [remoteCountries] = useQuery(kycApi.countries);\n\n const [showRiskyActivitiesModal, setShowRiskyActivitiesModal] = useState(\n false\n );\n\n const shouldAskSecondCitizenship = newSironMapping && props.existingClient;\n\n function shouldAskSsn(usCitizenOrTaxPayer: Option): boolean {\n return pipe(usCitizenOrTaxPayer, option.exists(identity));\n }\n\n function shouldAskOtherTaxPayerCountries(\n taxPayerOutsideCzechRepublic: Option\n ): boolean {\n return pipe(taxPayerOutsideCzechRepublic, option.exists(identity));\n }\n\n const shouldAskIndustry =\n !newSironMapping && shouldAskCompany(option.some(props.incomeSource));\n\n function shouldAskIndustryquestion(incomeSource: IncomeSourceType): boolean {\n return !newSironMapping && incomeSourcesWithIndustry.includes(incomeSource);\n }\n\n const shouldAskOtherIndustry = (\n industry: Option>\n ): boolean =>\n !newSironMapping &&\n pipe(\n industry,\n option.exists(industry => industry.value === \"Other\")\n );\n\n const ssnFormatValidator = validators.regex(\n /^(\\d{3}-\\d{2}-\\d{4}|\\d{2}-\\d{7})$/,\n formatMessage(\"KYC.PersonalAndTaxInformation.ssnField.warning.format\")\n );\n\n const ssnValidator = validators.inSequence(\n nonBlankString,\n ssnFormatValidator\n );\n\n const tinValidator = validators.inSequence(nonBlankString, maxLength(20));\n\n const countryOptions = useMemo(\n () =>\n pipe(\n remoteCountries,\n remoteData.fold(constant([]), constant([]), countries =>\n pipe(\n countries,\n array.map(country => ({\n label: country.countryName,\n value: country,\n }))\n )\n )\n ),\n [remoteCountries]\n );\n\n const noteOptions = pipe(\n ReasonNote.keys,\n record.keys,\n array.map(note => ({\n label: formatReasonNote(note),\n value: note,\n }))\n );\n\n const formatIndustry = useFormatIndustry();\n\n const industryOptions: Array> = pipe(\n Industry.keys,\n record.keys,\n array.map(industry => ({\n label: formatIndustry(industry),\n value: industry,\n }))\n );\n\n const { values, fieldProps, fieldArray, handleSubmit } = useForm(\n {\n initialValues: pipe(\n props.initialPersonalAndTaxInfo,\n option.map(personalAndTaxInfo => ({\n politicallyExposedPerson: option.some(\n personalAndTaxInfo.politicallyExposedPerson\n ),\n taxPayerOutsideCzechRepublic: option.some(\n personalAndTaxInfo.taxPayerOutsideCzechRepublic\n ),\n otherTaxPayerCountries: personalAndTaxInfo.otherTaxPayerCountries.map(\n taxCountry =>\n ({\n country: pipe(\n countryOptions,\n array.findFirst(\n option => option.value.countryCode === taxCountry.country\n )\n ),\n TIN: pipe(taxCountry.TIN, option.getOrElse(constant(\"\"))),\n note: selectedDropdownOption(taxCountry.note, noteOptions),\n countryRequiresTIN:\n option.isSome(taxCountry.TIN) ||\n option.isSome(taxCountry.note),\n noTIN: option.isSome(taxCountry.note),\n } as TaxPayerCountryFormModel)\n ),\n usCitizenOrTaxPayer: option.some(\n personalAndTaxInfo.usCitizenOrTaxPayer\n ),\n ssn: pipe(personalAndTaxInfo.ssn, option.getOrElse(constant(\"\"))),\n specialRelationships: option.some(\n personalAndTaxInfo.specialRelationships\n ),\n riskyActivities: personalAndTaxInfo.riskyActivities,\n industry: selectedDropdownOption(\n personalAndTaxInfo.industry,\n industryOptions\n ),\n secondCitizenshipField: personalAndTaxInfo.secondCitizenship,\n secondCitizenshipRadio: option.some(\n option.isSome(personalAndTaxInfo.secondCitizenship)\n ),\n })),\n option.getOrElse(\n constant({\n politicallyExposedPerson: option.none as Option,\n taxPayerOutsideCzechRepublic: option.none as Option,\n otherTaxPayerCountries: [] as TaxPayerCountryFormModel[],\n usCitizenOrTaxPayer: option.none as Option,\n ssn: \"\",\n riskyActivities: option.none as Option,\n specialRelationships: option.none as Option,\n industry: option.none as Option>,\n secondCitizenshipField: option.none as Option,\n secondCitizenshipRadio: option.some(false),\n })\n )\n ),\n fieldValidators: values => ({\n politicallyExposedPerson: defined(),\n taxPayerOutsideCzechRepublic: defined(),\n usCitizenOrTaxPayer: defined(),\n ssn: shouldAskSsn(values.usCitizenOrTaxPayer)\n ? ssnValidator\n : undefined,\n riskyActivities: newSironMapping ? undefined : definedNoExtract(),\n specialRelationships: defined(),\n industry: shouldAskIndustry\n ? validators.definedNoExtract(\n formatMessage(\"Form.fieldError.required\")\n )\n : undefined,\n otherIndustry:\n shouldAskIndustry && shouldAskOtherIndustry(values.industry),\n secondCitizenshipField:\n shouldAskSecondCitizenship &&\n pipe(values.secondCitizenshipRadio, option.getOrElse(constFalse))\n ? definedNoExtract()\n : undefined,\n }),\n fieldArrayValidators: (values, index) =>\n shouldAskOtherTaxPayerCountries(values.taxPayerOutsideCzechRepublic)\n ? {\n otherTaxPayerCountries: {\n country: defined(),\n TIN:\n values.otherTaxPayerCountries[index].countryRequiresTIN &&\n option.isNone(values.otherTaxPayerCountries[index].note) &&\n !values.otherTaxPayerCountries[index].noTIN\n ? tinValidator\n : undefined,\n note: validators.foldPredicate(\n () =>\n values.otherTaxPayerCountries[index].countryRequiresTIN &&\n values.otherTaxPayerCountries[index].TIN.trim().length ===\n 0,\n () => option.none,\n definedNoExtract()\n ),\n },\n }\n : {},\n },\n {\n onSubmit: ({\n politicallyExposedPerson,\n taxPayerOutsideCzechRepublic,\n usCitizenOrTaxPayer,\n otherTaxPayerCountries,\n ssn,\n specialRelationships,\n riskyActivities,\n industry,\n secondCitizenshipField,\n secondCitizenshipRadio,\n }) =>\n props.onNext({\n politicallyExposedPerson,\n taxPayerOutsideCzechRepublic,\n otherTaxPayerCountries: getOtherTaxPayerCountries({\n taxPayerOutsideCzechRepublic: taxPayerOutsideCzechRepublic,\n countries: otherTaxPayerCountries,\n }),\n usCitizenOrTaxPayer,\n ssn: usCitizenOrTaxPayer ? option.some(ssn) : option.none,\n specialRelationships,\n riskyActivities: newSironMapping ? option.none : riskyActivities,\n industry: dropdownOptionToValue(industry),\n secondCitizenship:\n shouldAskSecondCitizenship &&\n pipe(secondCitizenshipRadio, option.getOrElse(constFalse))\n ? secondCitizenshipField\n : option.none,\n }),\n }\n );\n\n const otherTaxPayerCountriesFieldArray = fieldArray(\"otherTaxPayerCountries\");\n\n useLayoutEffect(() => {\n if (\n shouldAskOtherTaxPayerCountries(values.taxPayerOutsideCzechRepublic) &&\n otherTaxPayerCountriesFieldArray.items.length === 0\n ) {\n otherTaxPayerCountriesFieldArray.push(emptyOtherTaxPayerCountry);\n }\n }, [otherTaxPayerCountriesFieldArray, values.taxPayerOutsideCzechRepublic]);\n\n return (\n <>\n
\n \n <>\n {shouldAskSecondCitizenship && (\n \n \n \n )}\n \n \n \n \n \n \n {shouldAskOtherTaxPayerCountries(\n values.taxPayerOutsideCzechRepublic\n ) && (\n \n \n \n )}\n {shouldAskOtherTaxPayerCountries(\n values.taxPayerOutsideCzechRepublic\n ) && (\n \n \n \n {labelId => (\n \n {otherTaxPayerCountriesFieldArray.items.map(\n ({\n fieldProps,\n remove,\n onChangeValues,\n namePrefix,\n }) => (\n 1\n }\n noteOptions={noteOptions}\n countryOptions={pipe(\n countryOptions,\n array.filter(country =>\n pipe(\n values.otherTaxPayerCountries,\n array.findFirst(c =>\n pipe(\n c.country,\n dropdownOptionToValue,\n option.exists(c => c === country.value)\n )\n ),\n option.isNone\n )\n )\n )}\n />\n )\n )}\n \n )}\n \n \n {values.otherTaxPayerCountries.length < 3 && (\n \n \n otherTaxPayerCountriesFieldArray.push(\n emptyOtherTaxPayerCountry\n )\n }\n label={formatMessage(\n \"StandardLoan.KYC.TaxPayerCountryForm.addCountry\"\n )}\n />\n \n \n {formatMessage(\n \"StandardLoan.KYC.TaxPayerCountryForm.addCountryHint\"\n )}\n \n \n )}\n \n \n \n )}\n \n \n \n {shouldAskSsn(values.usCitizenOrTaxPayer) && (\n \n \n \n )}\n {pipe(values.usCitizenOrTaxPayer, option.exists(identity)) ? (\n \n \n \n \n ) : null}\n \n \n \n {shouldAskIndustryquestion(props.incomeSource) && (\n \n \n \n )}\n {!newSironMapping && (\n \n setShowRiskyActivitiesModal(true),\n label: formatMessage(\"MoreInfo\"),\n }}\n />\n \n )}\n \n \n \n \n \n \n \n {showRiskyActivitiesModal && (\n setShowRiskyActivitiesModal(false)}\n />\n )}\n \n );\n}\n","import {\n Box,\n Form,\n FormRow,\n FormSection,\n RadioGroupField,\n Space,\n TextField,\n useForm,\n validators,\n} from \"design-system\";\nimport { useFormatMessage } from \"../../intl\";\nimport { constant, constFalse, identity, pipe } from \"fp-ts/function\";\nimport { option, record, taskEither } from \"fp-ts\";\nimport { PaymentDestination, TransactionType } from \"./domain\";\nimport { useValidators } from \"../../Common/useValidators\";\nimport { Option } from \"fp-ts/Option\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport { useFormatPaymentDestination, useFormatTransactionType } from \"./utils\";\nimport { NextButton } from \"../../Common/NextButton\";\nimport { TransactionsInfo } from \"../api\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { TransactionsInfo1, TransactionsInfo2 } from \"../../KYC/domain\";\nimport { Transactions2 } from \"./Transactions2\";\n\ntype PropsOld = {\n onNext: (transactions: TransactionsInfo) => unknown;\n transactionsInfo: Option;\n};\n\ntype PropsNew = {\n onNext: (transactions: TransactionsInfo) => unknown;\n transactionsInfo: Option;\n};\n\ntype Props = { transactionsInfo: Option } & (\n | Omit\n | Omit\n);\n\ntype InitialValues = {\n paymentDestination: Option;\n transactionType: Option;\n paymentDestionationCountries: string;\n cashTransactionMotivation: string;\n};\n\nexport function Transactions(props: Props) {\n const {\n config: { r6NewSironMapping: newSironMapping },\n } = useAppContext();\n\n return newSironMapping ? (\n transactions as TransactionsInfo2)\n )}\n />\n ) : (\n transactions as TransactionsInfo1)\n )}\n />\n );\n}\n\nexport function Transactions1(props: PropsOld) {\n const formatMessage = useFormatMessage();\n const getPaymentDestinationLabel = useFormatPaymentDestination();\n const getTransactionTypeLabel = useFormatTransactionType();\n const { nonBlankString, defined, maxLength } = useValidators();\n\n function shouldAskPaymentDestinationCountries(\n paymentDestination: Option\n ) {\n return pipe(\n paymentDestination,\n option.exists(paymentDestination => paymentDestination === \"OutsideEU\")\n );\n }\n\n function shouldAskCashTransactionMotivation(\n transactionType: Option\n ) {\n return pipe(\n transactionType,\n option.exists(transactionType => transactionType === \"Cash\")\n );\n }\n\n const initialValues = pipe(\n props.transactionsInfo,\n option.map(data => ({\n paymentDestination: option.some(data.paymentDestination),\n transactionType: option.some(data.transactionType),\n paymentDestionationCountries: pipe(\n data.paymentDestinationCountries,\n option.getOrElse(() => \"\")\n ),\n cashTransactionMotivation: pipe(\n data.cashTransactionMotivation,\n option.getOrElse(() => \"\")\n ),\n })),\n option.getOrElse(\n () =>\n ({\n paymentDestination: option.none,\n transactionType: option.none,\n paymentDestionationCountries: \"\",\n cashTransactionMotivation: \"\",\n } as InitialValues)\n )\n );\n\n const { values, fieldProps, handleSubmit } = useForm(\n {\n initialValues,\n fieldValidators: values => ({\n paymentDestination: defined(),\n transactionType: defined(),\n cashTransactionMotivation: shouldAskCashTransactionMotivation(\n values.transactionType\n )\n ? validators.inSequence(nonBlankString, maxLength(100))\n : undefined,\n paymentDestionationCountries: shouldAskPaymentDestinationCountries(\n values.paymentDestination\n )\n ? validators.inSequence(nonBlankString, maxLength(100))\n : undefined,\n }),\n },\n {\n onSubmit: ({\n paymentDestination,\n transactionType,\n cashTransactionMotivation,\n paymentDestionationCountries,\n }) =>\n taskEither.fromIO(() =>\n props.onNext({\n paymentDestination,\n paymentDestinationLabel: getPaymentDestinationLabel(\n paymentDestination\n ),\n paymentDestinationCountries: shouldAskPaymentDestinationCountries(\n option.some(paymentDestination)\n )\n ? option.some(paymentDestionationCountries)\n : option.none,\n transactionType,\n transactionTypeLabel: getTransactionTypeLabel(transactionType),\n cashTransactionMotivation: shouldAskCashTransactionMotivation(\n option.some(transactionType)\n )\n ? option.some(cashTransactionMotivation)\n : option.none,\n })\n ),\n }\n );\n\n const paymentDestinationOptions = pipe(\n PaymentDestination.keys,\n record.keys\n ) as NonEmptyArray;\n\n const transactionTypeOptions = pipe(\n TransactionType.keys,\n record.keys\n ) as NonEmptyArray;\n\n return (\n <>\n
\n \n <>\n \n \n \n {shouldAskPaymentDestinationCountries(values.paymentDestination) && (\n \n \n \n )}\n \n \n \n {shouldAskCashTransactionMotivation(values.transactionType) && (\n \n \n \n )}\n \n \n \n \n \n \n \n );\n}\n","import {\n Box,\n DropdownField as DropdownFieldDs,\n DropdownOption,\n Form,\n FormRow,\n FormSection,\n RadioGroupField,\n Space,\n TextField,\n useForm,\n validators,\n} from \"design-system\";\nimport { OptionsType } from \"react-select\";\nimport { Option } from \"fp-ts/Option\";\nimport { array, eq, option, ord, record, taskEither } from \"fp-ts\";\nimport {\n constant,\n constFalse,\n constNull,\n constTrue,\n flow,\n identity,\n pipe,\n} from \"fp-ts/function\";\nimport { DropdownField } from \"../../Common/DropdownField/DropdownField\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport { useEffect, useState } from \"react\";\nimport { TransactionsInfo2 } from \"../api\";\nimport { useFormatMessage } from \"../../intl\";\nimport { usePortalStatusContext } from \"../../PortalStatusContext\";\nimport {\n AverageIncomingPaymentsId,\n AverageIncomingPaymentsIdCz,\n AverageIncomingPaymentsIdSk,\n Country,\n PaymentDestination2,\n SourceOfFundsId,\n} from \"../../KYC/domain\";\nimport { useCommand } from \"../../useAPI\";\nimport * as kycApi from \"../../KYC/api\";\nimport {\n useFormatAverageIncomingPayments,\n useFormatPaymentDestination,\n useFormatSourceOfFunds,\n} from \"./utils\";\nimport { useValidators } from \"../../Common/useValidators\";\nimport { selectedDropdownOption } from \"../../Common/selectDropdownOption\";\nimport {\n shouldAskOtherFundsDetails,\n shouldAskPaymentDestinationCountries,\n} from \"../../KYC/utils\";\nimport { NextButton } from \"../../Common/NextButton\";\nimport { foldTenant } from \"../../globalDomain\";\nimport { useAppContext } from \"../../useAppContext\";\n\ntype Props = {\n onNext: (transactions: TransactionsInfo2) => unknown;\n initialTransactionsInfo: Option;\n};\n\nexport function Transactions2(props: Props) {\n const {\n apiParameters: { tenant },\n } = useAppContext();\n const formatMessage = useFormatMessage();\n const { portalBlocked } = usePortalStatusContext();\n\n const countriesToDropdownOptions = (countries: Country[]) =>\n pipe(\n countries,\n array.map(\n c =>\n ({\n value: c,\n label: c.countryName,\n } as DropdownOption)\n )\n );\n const initialSelectedCountries = pipe(\n props.initialTransactionsInfo,\n option.chain(\n transactions => transactions.paymentDestinationCountriesWithLabels\n ),\n option.map(countriesToDropdownOptions)\n );\n const [selectedCountries, setSelectedCountries] = useState<\n Option[]>\n >(initialSelectedCountries);\n\n const [embargoedCountriesOrOther, setEmbargoedCountriesOrOther] = useState<\n Option\n >(option.none);\n const getEmbargoedCountriesApi = useCommand(kycApi.embargoedCountries);\n\n const other = \"other\";\n\n const isEmbargoedCountrySelected = pipe(\n selectedCountries,\n option.filter(drowpDowns =>\n pipe(\n drowpDowns,\n array.findFirst(country => country.value.countryCode !== other),\n option.isSome\n )\n ),\n option.isSome\n );\n\n const countryEq = eq.getStructEq({\n countryCode: eq.eqStrict,\n countryName: eq.fromEquals(constTrue),\n TIN: eq.fromEquals(constTrue),\n });\n useEffect(() => {\n pipe(\n getEmbargoedCountriesApi(),\n taskEither.bimap(constNull, resp => {\n const countries = pipe(\n resp,\n array.sort(\n pipe(\n ord.ordString,\n ord.contramap(({ countryName }: Country) => countryName)\n )\n ),\n array.uniq(countryEq),\n array.insertAt(0, {\n countryName: formatMessage(\"KYC.Transactions.country.other\"),\n countryCode: other,\n TIN: false,\n })\n );\n setEmbargoedCountriesOrOther(countries);\n })\n )();\n }, []);\n\n const getPaymentDestinationLabel = useFormatPaymentDestination();\n const getIncomingPaymentsLabel = useFormatAverageIncomingPayments();\n const getSourceOfFundsLabel = useFormatSourceOfFunds();\n\n const { nonBlankString, definedNoExtract, maxLength } = useValidators();\n const workAroundAlwaysRightValidator = () =>\n validators.fromPredicate(constTrue, formatMessage(\"GenericError\"));\n\n const { values, fieldProps, handleSubmit } = useForm(\n {\n initialValues: pipe(\n props.initialTransactionsInfo,\n option.map(transactionsInfo => ({\n averageMonthlyIncomePayments: pipe(\n transactionsInfo.averageMonthlyIncomePayments,\n option.map(income => income.id)\n ),\n paymentDestination: transactionsInfo.paymentDestination,\n paymentDestinationCountriesWithLabels:\n transactionsInfo.paymentDestinationCountriesWithLabels,\n reasonOfTransactions: pipe(\n transactionsInfo.reasonOfTransactions,\n option.getOrElse(constant(\"\"))\n ),\n sourceOfFunds: pipe(\n transactionsInfo.sourceOfFunds,\n option.map(source => source.id)\n ),\n otherFunds: pipe(\n transactionsInfo.sourceOfFunds,\n option.map(sourceOfFunds => sourceOfFunds.otherSource),\n option.flatten,\n option.getOrElse(constant(\"\"))\n ),\n })),\n option.getOrElse(\n constant({\n averageMonthlyIncomePayments: option.none as Option,\n paymentDestination: option.none as Option,\n paymentDestinationCountriesWithLabels: option.none as Option<\n Country[]\n >,\n reasonOfTransactions: \"\",\n sourceOfFunds: option.none as Option,\n otherFunds: \"\",\n })\n )\n ),\n fieldValidators: values => ({\n averageMonthlyIncomePayments: definedNoExtract(),\n paymentDestination: definedNoExtract(),\n paymentDestinationCountriesWithLabels:\n shouldAskPaymentDestinationCountries(values.paymentDestination) &&\n option.isNone(selectedCountries)\n ? definedNoExtract()\n : workAroundAlwaysRightValidator(),\n reasonOfTransactions: isEmbargoedCountrySelected\n ? validators.inSequence(nonBlankString, maxLength(64))\n : undefined,\n sourceOfFunds: definedNoExtract(),\n otherFunds: pipe(\n values.sourceOfFunds,\n option.exists(v => v === \"Other\")\n )\n ? validators.inSequence(nonBlankString, maxLength(64))\n : undefined,\n employerName: workAroundAlwaysRightValidator(),\n companyICO: workAroundAlwaysRightValidator(),\n }),\n },\n {\n onSubmit: transactionsInfo =>\n taskEither.fromIO(() =>\n props.onNext({\n paymentDestination: transactionsInfo.paymentDestination,\n paymentDestinationLabel: pipe(\n transactionsInfo.paymentDestination,\n option.map(getPaymentDestinationLabel)\n ),\n paymentDestinationCountriesWithLabels: pipe(\n selectedCountries,\n option.map(\n flow(array.map(dropdownCountry => dropdownCountry.value))\n )\n ),\n reasonOfTransactions: isEmbargoedCountrySelected\n ? option.some(transactionsInfo.reasonOfTransactions)\n : option.none,\n averageMonthlyIncomePayments: pipe(\n transactionsInfo.averageMonthlyIncomePayments,\n option.map(incomeId => ({\n id: incomeId,\n value: getIncomingPaymentsLabel(incomeId),\n }))\n ),\n sourceOfFunds: pipe(\n transactionsInfo.sourceOfFunds,\n option.map(fundsId => ({\n id: fundsId,\n value: getSourceOfFundsLabel(fundsId),\n otherSource:\n fundsId === \"Other\"\n ? option.some(transactionsInfo.otherFunds)\n : option.none,\n }))\n ),\n sourceOfIncome: option.none,\n companyICO: option.none,\n employerName: option.none,\n paymentDestinationCountries: pipe(\n selectedCountries,\n option.map(\n flow(\n array.map(\n dropdownCountry => dropdownCountry.value.countryCode\n ),\n countries => countries.join(\",\")\n )\n )\n ),\n })\n ),\n }\n );\n\n const paymentDestinationOptions = pipe(\n PaymentDestination2.keys,\n record.keys\n ) as NonEmptyArray;\n\n const averageIncomeOptions = pipe(\n foldTenant(\n tenant,\n () =>\n Object.keys(\n AverageIncomingPaymentsIdSk.keys\n ) as Array,\n () =>\n Object.keys(\n AverageIncomingPaymentsIdCz.keys\n ) as Array\n ),\n array.map(income => ({\n value: income,\n label: getIncomingPaymentsLabel(income),\n }))\n );\n\n const sourceOfFundsOptions = pipe(\n Object.keys(SourceOfFundsId.keys) as Array,\n array.map(source => ({\n value: source,\n label: getSourceOfFundsLabel(source),\n }))\n );\n\n const handleOnChange = (\n val: Option>>\n ) => {\n if (option.isSome(val)) {\n const values: DropdownOption[] = val.value.map(item => {\n return item;\n });\n fieldProps(\"paymentDestinationCountriesWithLabels\").onChange(\n pipe(\n option.some(values),\n option.map(flow(array.map(dropdownCountry => dropdownCountry.value)))\n )\n );\n setSelectedCountries(option.some(values));\n } else {\n setSelectedCountries(option.none);\n fieldProps(\"paymentDestinationCountriesWithLabels\").onChange(option.none);\n }\n };\n return (\n <>\n
\n \n \n \n \n fieldProps(\"averageMonthlyIncomePayments\").onChange(\n pipe(\n val,\n option.map(val => val.value)\n )\n )\n }\n clearable={false}\n searchable={false}\n />\n \n \n {\n if (\n option.isNone(newValue) ||\n newValue.value === \"DomesticAndEU\"\n ) {\n setSelectedCountries(option.none);\n }\n fieldProps(\"paymentDestination\").onChange(newValue);\n }}\n options={paymentDestinationOptions}\n label={formatMessage(\"KYC.Transactions.paymentDestinationLabel\")}\n optionKey={identity}\n isOptionDisabled={constFalse}\n renderOption={getPaymentDestinationLabel}\n renderOptionChildren={constant(option.none)}\n disabled={portalBlocked}\n />\n \n {shouldAskPaymentDestinationCountries(values.paymentDestination) && (\n \n [] as DropdownOption[])\n )}\n onChange={handleOnChange}\n value={pipe(\n fieldProps(\"paymentDestinationCountriesWithLabels\").value,\n option.map(countriesToDropdownOptions)\n )}\n cancelLabel={formatMessage(\"Cancel\")}\n noResultsLabel={formatMessage(\"NoResultsFound\")}\n clearSelectionLabel={formatMessage(\"Dropdown.clearSelection\")}\n filterInputPlaceholder={formatMessage(\n \"Dropdown.filterInputPlaceholder\"\n )}\n isMulti\n ctaLabel={formatMessage(\"Confirm.buttonLabel\")}\n clearable\n searchable\n onBlur={\n fieldProps(\"paymentDestinationCountriesWithLabels\").onBlur\n }\n placeholder={formatMessage(\n \"KYC.Transactions.paymentDestinationCountriesEmbargoedPlaceholder\"\n )}\n />\n \n )}\n {isEmbargoedCountrySelected && (\n \n \n \n )}\n \n \n fieldProps(\"sourceOfFunds\").onChange(\n pipe(\n val,\n option.map(val => val.value)\n )\n )\n }\n clearable={false}\n searchable={false}\n />\n \n {shouldAskOtherFundsDetails(values.sourceOfFunds) && (\n \n \n \n )}\n \n \n \n \n \n \n \n );\n}\n","import { AlertDialog, InfoIcon } from \"design-system\";\nimport { useFormatMessage } from \"../intl\";\n\ntype Props = {\n onSave: () => unknown;\n onCancel: () => unknown;\n onDismiss: () => unknown;\n};\n\nexport function SaveApplicationDialog(props: Props) {\n const formatMessage = useFormatMessage();\n\n return (\n \n );\n}\n","import { Reader } from \"fp-ts/Reader\";\nimport { ContentRow, Panel } from \"design-system\";\nimport * as api from \"../api\";\nimport { useFormatMessage } from \"../../intl\";\nimport {\n RefinancingAccountSelection,\n SelectedLoansInformation,\n} from \"./RefinancingAccountSelection\";\nimport { LiabilityFormModel } from \"../domain\";\nimport { boolean, option } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { PreapprovedLimitState } from \"../CustomerOffer/UpdateCustomerOfferContext\";\nimport { useState } from \"react\";\nimport { Currency } from \"../../globalDomain\";\n\ntype Props = {\n onLoanSelection: Reader;\n liabilities: api.RefinancingLoanListOutput;\n clientExists: boolean;\n preapprovedLimitState: PreapprovedLimitState;\n refinancingLimitExceeded: boolean;\n maxLoanAmount: number;\n internal: LiabilityFormModel[];\n external: LiabilityFormModel[];\n preapprovedLimit: number;\n preapprovedLimitCurrency: Currency;\n isTopUpActive: boolean;\n eligibleForPreapproved: number;\n};\n\nexport function RefinancingCreditsCheck(props: Props) {\n const formatMessage = useFormatMessage();\n const [isPanelOpen, setIsPanelOpen] = useState(true);\n\n return (\n \n (\n 0,\n boolean.fold(\n () => option.none,\n () =>\n option.some({\n limit: {\n amount: props.preapprovedLimit,\n currency: props.preapprovedLimitCurrency,\n },\n })\n )\n )}\n isTopUpActive={props.isTopUpActive}\n internal={props.internal}\n external={props.external}\n maximumPreapprovedLimit={props.preapprovedLimit}\n liabilities={props.liabilities}\n onLoanSelection={props.onLoanSelection}\n refinancingLimitExceeded={props.refinancingLimitExceeded}\n maxLoanAmount={props.maxLoanAmount}\n eligibleForPreapproved={props.eligibleForPreapproved}\n />\n )}\n isOpen={isPanelOpen}\n status=\"active\"\n headerIcon={option.none}\n onSelect={option.some(() => setIsPanelOpen(prevState => !prevState))}\n width=\"100%\"\n className=\"refinancingCreditsCheck\"\n />\n \n );\n}\n","import { useFormatMessage } from \"../../intl\";\nimport { boolean, option, taskEither } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { constNull, constVoid, pipe } from \"fp-ts/function\";\n\nimport {\n Body,\n Box,\n ErrorBanner,\n ErrorIcon,\n Heading,\n NonNegative,\n Space,\n Stack,\n SuccessIcon,\n useForm,\n} from \"design-system\";\nimport { RefinancingLoanListOutput, selectLoanForRefinancing } from \"../api\";\nimport { MoneyAmount } from \"../../globalDomain\";\nimport { LiabilityEditableItem } from \"./LiabilityEditableItem\";\nimport { LiabilityFormModel } from \"../domain\";\nimport { palette } from \"design-system/lib/styleConstants\";\nimport { useCommand } from \"../../useAPI\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTenantCurrency } from \"../../Common/useTenantCurrency\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { useAppContext } from \"../../useAppContext\";\n\nexport type TopUpPAL = {\n limit: MoneyAmount;\n};\n\ntype LoanOrigin = \"internal\" | \"external\";\n\nexport interface SelectedLoansInformation {\n internal: {\n count: number;\n amount: number;\n };\n external: {\n count: number;\n amount: number;\n };\n repaid: {\n count: number;\n };\n}\n\ntype Props = {\n liabilities: RefinancingLoanListOutput;\n maximumPreapprovedLimit: number;\n topUp: Option;\n onLoanSelection: Reader;\n refinancingLimitExceeded: boolean;\n maxLoanAmount: number;\n internal: LiabilityFormModel[];\n external: LiabilityFormModel[];\n isTopUpActive: boolean;\n eligibleForPreapproved: number;\n};\n\nfunction initSelectedLoansForRefinancing(\n liabilities: RefinancingLoanListOutput\n): SelectedLoansInformation {\n const selectedInternalLoans = pipe(\n liabilities.internalLoans,\n option.fold(\n () => [],\n ({ liabilitiesList }) =>\n liabilitiesList.filter(loan => loan.selectedForRefinance)\n )\n );\n\n const selectedExternalLoans = pipe(\n liabilities.externalLoans,\n option.fold(\n () => [],\n ({ liabilitiesList }) =>\n liabilitiesList.filter(loan => loan.selectedForRefinance)\n )\n );\n\n const selectedRepaidLoans = pipe(\n liabilities.externalLoans,\n option.fold(\n () => [],\n ({ liabilitiesList }) =>\n liabilitiesList.filter(loan => loan.selectedForRepaid)\n )\n );\n\n return {\n internal: {\n count: selectedInternalLoans.length,\n amount: selectedInternalLoans.reduce(\n (res, loan) => res + loan.remainingAmount.amount,\n 0\n ),\n },\n external: {\n count: selectedExternalLoans.length,\n amount: selectedExternalLoans.reduce(\n (res, loan) => res + loan.remainingAmount.amount,\n 0\n ),\n },\n repaid: {\n count: selectedRepaidLoans.length,\n },\n };\n}\n\nexport function RefinancingAccountSelection(props: Props) {\n const {\n config: { enableCfRepaidLoans },\n } = useAppContext();\n const formatMessage = useFormatMessage();\n const currency = useTenantCurrency();\n const selectLoanCommand = useCommand(selectLoanForRefinancing);\n\n const selectedLoansForRefinancing = useRef(\n initSelectedLoansForRefinancing(props.liabilities)\n );\n\n const [showAmountIsTooHighError, setAmountIsTooHighError] = useState<\n Option\n >(option.none);\n\n useEffect(() => {\n props.onLoanSelection(selectedLoansForRefinancing.current);\n }, []);\n\n const { fieldArray } = useForm(\n {\n initialValues: {\n internal: props.internal,\n external: props.external,\n },\n fieldValidators: () => ({}),\n fieldArrayValidators: () => ({}),\n },\n {\n onSubmit: () => taskEither.fromIO(constVoid),\n }\n );\n\n const topUp = pipe(\n props.topUp,\n option.map(topUp => (\n \n \n {formatMessage(\"StandardLoan.RefinancingAccountSelection.topUpTitle\")}\n \n \n {formatMessage(\n \"StandardLoan.RefinancingAccountSelection.topUpMessage\",\n { ...topUp.limit }\n )}\n \n {props.isTopUpActive && (\n <>\n \n \n \n \n {formatMessage(\n \"StandardLoan.RefinancingAccountSelection.topUpActiveDetails\"\n )}\n \n \n \n )}\n {!props.isTopUpActive && (\n <>\n \n \n \n \n {formatMessage(\n \"StandardLoan.RefinancingAccountSelection.topUpNotActive\"\n )}\n \n \n \n )}\n \n )),\n option.getOrElse(() => <>)\n );\n\n const internalFieldArray = fieldArray(\"internal\");\n const externalFieldArray = fieldArray(\"external\");\n\n const selectLoan = (origin: LoanOrigin, loanData: LiabilityFormModel) =>\n pipe(\n selectLoanCommand({\n recordId: loanData.recordId,\n type: loanData.type,\n selectedForRefinance: loanData.selected,\n selectedForRepaid: loanData.selectedForRepaid,\n }),\n taskEither.chain(response =>\n taskEither.fromIO(() =>\n setAmountIsTooHighError(option.some(response.maxLoanAmount))\n )\n ),\n taskEither.chain(() =>\n taskEither.fromIO(() => {\n const countDifference = loanData.selected ? +1 : -1;\n const countRepaidDifference = loanData.selectedForRepaid ? +1 : -1;\n const amountDifference = loanData.selected\n ? loanData.remainingAmount.amount\n : -loanData.remainingAmount.amount;\n\n switch (origin) {\n case \"internal\":\n selectedLoansForRefinancing.current = {\n ...selectedLoansForRefinancing.current,\n internal: {\n count:\n selectedLoansForRefinancing.current.internal.count +\n countDifference,\n amount:\n selectedLoansForRefinancing.current.internal.amount +\n amountDifference,\n },\n };\n break;\n case \"external\":\n selectedLoansForRefinancing.current = {\n ...selectedLoansForRefinancing.current,\n external: {\n count:\n selectedLoansForRefinancing.current.external.count +\n countDifference,\n amount:\n selectedLoansForRefinancing.current.external.amount +\n amountDifference,\n },\n repaid: {\n count:\n selectedLoansForRefinancing.current.repaid.count +\n countRepaidDifference,\n },\n };\n break;\n }\n console.log(\">>>\", selectedLoansForRefinancing);\n props.onLoanSelection(selectedLoansForRefinancing.current);\n })\n )\n )();\n\n return (\n \n \n {formatMessage(\"StandardLoan.RefinancingAccountSelection.subTitle\")}\n \n \n {props.eligibleForPreapproved === 1 &&\n option.isSome(props.topUp) &&\n topUp}\n\n {internalFieldArray.items.length > 0 && (\n <>\n \n \n {formatMessage(\n \"StandardLoan.AccountsForRefinancing.InternalLiabilities.title\"\n )}\n \n \n \n )}\n\n {internalFieldArray.items.map(\n ({ fieldProps, namePrefix, onChangeValues }, index) => (\n <>\n {\n onChangeValues(value);\n selectLoan(\"internal\", value);\n }}\n divider={\n internalFieldArray.items.length > 1 &&\n index < internalFieldArray.items.length - 1\n }\n showRepaidLoans={false}\n />\n \n \n )\n )}\n\n {externalFieldArray.items.length > 0 && (\n <>\n \n \n {formatMessage(\n \"StandardLoan.AccountsForRefinancing.ExternalLiabilities.title\"\n )}\n \n \n \n )}\n {externalFieldArray.items.map(\n ({ fieldProps, namePrefix, onChangeValues }, index) => (\n <>\n {\n onChangeValues(value);\n selectLoan(\"external\", value);\n }}\n divider={\n externalFieldArray.items.length > 1 &&\n index < externalFieldArray.items.length - 1\n }\n showRepaidLoans={enableCfRepaidLoans}\n />\n \n \n )\n )}\n \n\n {pipe(\n props.refinancingLimitExceeded,\n boolean.fold(constNull, () => (\n \n {formatMessage(\n \"StandardLoan.AccountsForRefinancing.amountTooHigh\",\n {\n amount: pipe(\n showAmountIsTooHighError,\n option.fold(\n () => props.maxLoanAmount,\n maxAmount => maxAmount\n )\n ),\n currency: currency,\n }\n )}\n \n ))\n )}\n \n );\n}\n","import {\n Stack,\n LocalizedString,\n Loader,\n ErrorBanner,\n ContentRow,\n Box,\n useIsMobileLayout,\n useForm,\n Button,\n LoadingButton,\n} from \"design-system\";\nimport { boolean, option, taskEither } from \"fp-ts\";\nimport { IO } from \"fp-ts/IO\";\nimport { pipe, constVoid, constNull } from \"fp-ts/function\";\nimport { useFormatMessage } from \"../../intl\";\nimport { BackButton } from \"../../Common/BackButton/BackButton\";\nimport { PageHeading } from \"../../Common/PageHeading/PageHeading\";\nimport { OfferReviewCard } from \"./OfferReviewCard\";\nimport { useCommand, useQuery } from \"../../useAPI\";\nimport { RejectionReason } from \"../StandardLoanState\";\nimport * as remoteData from \"../../RemoteData\";\nimport * as api from \"../api\";\nimport { Option } from \"fp-ts/Option\";\nimport { ExistingClientAuthenticationMethod } from \"../../globalDomain\";\nimport { useValidators } from \"../../Common/useValidators\";\nimport { DisbursementAccountsField } from \"../DisbursementAccountsField\";\nimport { OfferDocuments } from \"./OfferDocuments\";\nimport { useState } from \"react\";\nimport OfferReviewSelect3P from \"./OfferReviewSelect3P\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { useIs3PChannel, useIsInPersonChannel } from \"../../useChannel\";\n\nexport type OnApplicationRejected = (result: RejectionReason) => void;\n\ntype Props = {\n onBack: IO;\n onComplete: () => unknown;\n onApplicationRejected: OnApplicationRejected;\n selectedOffer: api.GenericLoanResponseOutput;\n authenticationMethod: Option;\n existingClient: boolean;\n};\n\nexport function OfferReview(props: Props) {\n const formatMessage = useFormatMessage();\n\n const [appStateRequiredDocuments] = useQuery(\n api.appStateRequiredDocumentsReviewOffer\n );\n const isMobileLayout = useIsMobileLayout();\n\n const setDisbursementAccount = useCommand(api.setDisbursementAccount);\n\n const { definedNoExtract } = useValidators();\n\n const { fieldProps, handleSubmit } = useForm(\n {\n initialValues: {\n disbursementAccount: option.none as Option,\n },\n fieldValidators: () =>\n props.existingClient\n ? {\n disbursementAccount: definedNoExtract(),\n }\n : {},\n },\n {\n onSubmit: data =>\n pipe(\n data.disbursementAccount,\n option.fold(\n () => taskEither.fromIO(constVoid),\n disbursementAccount => setDisbursementAccount(disbursementAccount)\n ),\n taskEither.chain(() => taskEither.fromIO(props.onComplete))\n ),\n }\n );\n\n const continueButton = pipe(\n props.authenticationMethod,\n option.fold(\n () => (\n \n ),\n () => (\n \n )\n )\n );\n const [accountsLoading, setAccountsLoading] = useState(props.existingClient);\n const [documentsLoading, setDocumentsLoading] = useState(true);\n const handleAccountsFinishLoading = () => {\n setAccountsLoading(false);\n };\n const handleDocumentsSuccess = () => {\n if (documentsLoading) {\n setDocumentsLoading(false);\n }\n return ;\n };\n const handleDocumentsFailure = () => {\n if (documentsLoading) {\n setDocumentsLoading(false);\n }\n return (\n \n {formatMessage(\"StandardLoan.UploadDocuments.loadingError\")}\n \n );\n };\n const {\n config: { enableCashLoanId3PInBranch },\n } = useAppContext();\n const isInPersonChannel = useIsInPersonChannel();\n const is3PChannel = useIs3PChannel();\n\n return (\n \n \n \n \n \n \n {props.existingClient && (\n \n )}\n {pipe(\n appStateRequiredDocuments,\n remoteData.fold(\n constNull,\n handleDocumentsFailure,\n handleDocumentsSuccess\n )\n )}\n {(accountsLoading || documentsLoading) && (\n \n \n \n )}\n {enableCashLoanId3PInBranch &&\n isInPersonChannel &&\n !is3PChannel && }\n \n \n \n\n \n \n {pipe(\n isMobileLayout,\n boolean.fold(\n () => (\n \n \n {continueButton}\n \n ),\n () => (\n \n {continueButton}\n \n \n )\n )\n )}\n \n \n \n );\n}\n","import {\n Body,\n Dialog,\n Divider,\n FormRow,\n FormSection,\n Heading,\n ReadOnlyField,\n Space,\n Stack,\n unsafeLocalizedString,\n} from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { constNull, pipe } from \"fp-ts/function\";\nimport {\n useFormatMessage,\n useFormatMoneyAmountValue,\n useFormatPercentageLike,\n} from \"../../intl\";\nimport { GenericLoanResponseOutput } from \"../api\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { unsafeNonNegativeInteger } from \"../../globalDomain\";\n\ntype Props = {\n offer: GenericLoanResponseOutput;\n onDismiss: () => unknown;\n};\n\nexport function OfferReviewDetailDialog(props: Props) {\n const {\n config: { enableBankFee50FE: enableBankFee50 },\n } = useAppContext();\n\n const formatMessage = useFormatMessage();\n const formatMoneyAmount = useFormatMoneyAmountValue();\n const formatPercentage = useFormatPercentageLike();\n const formatMoneyAmountValueInteger = useFormatMoneyAmountValue(\n unsafeNonNegativeInteger(0)\n );\n\n const cpiMonthlyAmount = pipe(\n props.offer.monthlyInsuranceAmount,\n option.getOrElse(() => 0)\n );\n\n return (\n \n \n {formatMessage(\"StandardLoan.OfferApproved.OfferReview.Detail.title\")}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {cpiMonthlyAmount > 0 && (\n \n \n \n )}\n \n \n \n \n \n {cpiMonthlyAmount > 0 && (\n \n \n \n )}\n \n \n \n {pipe(\n props.offer.totalPayableAmount,\n option.fold(constNull, totalPayableAmount => (\n \n \n \n ))\n )}\n {enableBankFee50 &&\n pipe(\n props.offer.bankingFee,\n option.fold(constNull, bankingFee =>\n pipe(\n props.offer.bankingFeeIncluded,\n option.fold(\n () => (\n \n ),\n feeIncluded => (\n \n )\n )\n )\n )\n )}\n \n \n \n \n \n \n {formatMessage(\n \"StandardLoan.OfferApproved.OfferReview.Detail.description\"\n )}\n \n \n );\n}\n","import {\n Body,\n Box,\n Button,\n Card,\n Loader,\n Stack,\n unsafeLocalizedString,\n} from \"design-system\";\nimport { pipe, constant, constNull } from \"fp-ts/function\";\nimport { useState } from \"react\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useQuery } from \"../../useAPI\";\nimport * as api from \"../api\";\nimport { AssignedBrokerForBankerInfo } from \"../domain\";\nimport { Option } from \"fp-ts/Option\";\nimport { option } from \"fp-ts\";\nimport * as remoteData from \"../../RemoteData\";\nimport { ApplicationBrokerForBankerDialog } from \"./ApplicationBrokerForBankerDialog\";\n\nexport default function OfferReviewSelect3P() {\n const formatMessage = useFormatMessage();\n\n const [assignedBrokerData, refreshAssignedData] = useQuery(\n api.getAssignedBrokerForBanker\n );\n const [dialogOpen, setDialogOpen] = useState(false);\n\n const unwrap = (value: Option) =>\n pipe(value, option.getOrElse(constant(\"\")));\n\n const isAssigned = (assignedBroker: AssignedBrokerForBankerInfo) =>\n option.isSome(assignedBroker.firstName) ||\n option.isSome(assignedBroker.lastName) ||\n option.isSome(assignedBroker.phoneNumber) ||\n option.isSome(assignedBroker.email);\n\n const renderBrokerData = (assignedBroker: AssignedBrokerForBankerInfo) => (\n \n \n \n {formatMessage(\"StandardLoan.Select3P.assignedBroker\")}\n \n setDialogOpen(true)}\n />\n \n \n {unsafeLocalizedString(\n unwrap(assignedBroker.firstName) +\n \" \" +\n unwrap(assignedBroker.lastName)\n )}\n \n \n {unsafeLocalizedString(unwrap(assignedBroker.brokerageCompany))}\n \n \n {unsafeLocalizedString(unwrap(assignedBroker.phoneNumber))}\n \n \n {unsafeLocalizedString(unwrap(assignedBroker.email))}\n \n \n );\n\n const renderCard = (assignedBroker: AssignedBrokerForBankerInfo) => (\n \n {renderBrokerData(assignedBroker)}\n \n );\n\n return (\n <>\n {dialogOpen && (\n setDialogOpen(false)}\n onSubmit={() => {\n refreshAssignedData();\n setDialogOpen(false);\n }}\n initialValues={pipe(\n assignedBrokerData,\n remoteData.fold(\n () => option.none,\n () => option.none,\n assignedBroker =>\n option.isSome(assignedBroker.brokerInfo) &&\n option.isSome(assignedBroker.brokerInfo.value.email)\n ? option.some({\n email: assignedBroker.brokerInfo.value.email.value,\n })\n : option.none\n )\n )}\n />\n )}\n {pipe(\n assignedBrokerData,\n remoteData.fold(constant(), constNull, assignedBroker =>\n pipe(\n assignedBroker.brokerInfo,\n option.filter(isAssigned),\n option.map(renderCard),\n option.getOrElse(() => <>)\n )\n )\n )}\n \n );\n}\n","import {\n useForm,\n Dialog,\n validators,\n Form,\n FeedbackDialog,\n} from \"design-system\";\nimport { option, taskEither } from \"fp-ts\";\nimport { pipe, constant } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useValidators } from \"../../Common/useValidators\";\nimport { useCommand } from \"../../useAPI\";\nimport * as api from \"../api\";\nimport { BrokerEmailField } from \"../Select3P/BrokerEmailField\";\nimport { useRef, useState } from \"react\";\n\ntype BrokerData = {\n email: string;\n};\n\ntype Props = {\n onDismiss: () => void;\n onSubmit: () => void;\n initialValues: Option;\n};\n\nexport function ApplicationBrokerForBankerDialog(props: Props) {\n const formatMessage = useFormatMessage();\n const { nonEmptyString, validEmail } = useValidators();\n\n const saveAssignedBrokerForBanker = useCommand(\n api.saveAssignedBrokerForBanker\n );\n\n const [brokerSelectionError, setBrokerSelectionError] = useState(false);\n\n const { fieldProps, handleSubmit, setValues } = useForm(\n {\n initialValues: pipe(\n props.initialValues,\n option.fold(\n constant({\n email: \"\",\n }),\n initialValues => ({\n email: initialValues.email,\n })\n )\n ),\n fieldValidators: _ => ({\n email: validators.inSequence(nonEmptyString, validEmail),\n }),\n },\n {\n onSubmit: ({ email }) =>\n pipe({ email }, values =>\n pipe(\n saveAssignedBrokerForBanker(values),\n taskEither.map(({ status }) => {\n if (status === \"VALID\") {\n props.onSubmit();\n return taskEither.right(null);\n } else {\n setBrokerSelectionError(true);\n return taskEither.left(null);\n }\n })\n )\n ),\n }\n );\n\n const activeQueryTerms = useRef({\n email: \"\",\n });\n\n const syncFormState = (suggestion: string) =>\n setValues({\n email: suggestion,\n });\n\n return (\n <>\n \n
\n {\n activeQueryTerms.current = {\n email: value,\n };\n fieldProps(\"email\").onChange(value);\n }}\n />\n \n \n {brokerSelectionError && (\n setBrokerSelectionError(false),\n }}\n />\n )}\n \n );\n}\n","import \"!../../../../node_modules/extract-css-chunks-webpack-plugin/dist/loader.js!css-loader?{\\\"modules\\\":false,\\\"url\\\":false}!./BrokerEmailField.treat.1SqO2sO.css\";\nexport var emailField = 'pkXA-';","import {\n Body,\n Heading,\n Space,\n Stack,\n Card,\n Divider,\n Box,\n ContentRow,\n Loader,\n ErrorBanner,\n useIsMobileLayout,\n LoadingButton,\n} from \"design-system\";\nimport { useFormatMessage } from \"../../intl\";\nimport { PageHeading } from \"../../Common/PageHeading/PageHeading\";\nimport { pipe, constNull, constant } from \"fp-ts/function\";\nimport { option, taskEither } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { InternalLiabilityRow } from \"./InternalLiabilityRow\";\nimport { ExternalLiabilitiesEditForm } from \"./ExternalLiabilitiesEditForm\";\nimport { BackButton } from \"../../Common/BackButton/BackButton\";\nimport { IO } from \"fp-ts/IO\";\nimport {\n AccountsForRefinancingOutput,\n ExternalLoanItem,\n getAccountsForRefinancing,\n InternalLoansList,\n submitAccountsForRefinancing,\n} from \"../api\";\nimport { useCommand, useQuery } from \"../../useAPI\";\nimport * as remoteData from \"../../RemoteData\";\nimport { TaskEither } from \"fp-ts/TaskEither\";\nimport { Rework } from \"../StandardLoanState\";\nimport { ReworkBanner } from \"../Rework/ReworkBanner\";\nimport { useGetAccountsForRefinancingStepChanges } from \"../Rework/utils\";\nimport * as reworkApi from \"../Rework/api\";\nimport { StepCommentsOutput } from \"../Rework/api\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { useRemoteData } from \"../../useRemoteData\";\nimport { useMemo } from \"react\";\nimport { MainContent } from \"../../Common/MainContent\";\n\ntype Props = {\n onConfirm: TaskEither;\n onBack: IO;\n existingClient: boolean;\n reworkData: Rework;\n};\n\nexport function AccountsForRefinancing(props: Props) {\n const formatMessage = useFormatMessage();\n const [getAccounts] = useQuery(getAccountsForRefinancing);\n const submitAccounts = useCommand(submitAccountsForRefinancing);\n\n const internalLiabilities = (internalLoans: Option) =>\n pipe(\n internalLoans,\n option.fold(\n () => <>,\n internalLoans =>\n internalLoans.liabilitiesList.length > 0 && (\n \n \n {formatMessage(\n \"StandardLoan.AccountsForRefinancing.InternalLiabilities.title\"\n )}\n \n {internalLoans.liabilitiesList.map((liability, index) => (\n 1 &&\n index < internalLoans.liabilitiesList.length - 1\n }\n />\n ))}\n \n )\n )\n );\n\n const reworkedAccounts = pipe(\n props.reworkData.oldValues,\n option.chain(oldValues => oldValues.accountsForRefinancingData),\n option.chain(accounts => accounts.externalLoans)\n );\n\n const externalLiabilities = (accounts: AccountsForRefinancingOutput) =>\n pipe(\n accounts.externalLoans,\n option.fold(constNull, externalLoans =>\n externalLoans.liabilitiesList.length > 0 ? (\n \n \n \n {formatMessage(\n \"StandardLoan.AccountsForRefinancing.ExternalLiabilities.title\"\n )}\n \n \n {formatMessage(\n \"StandardLoan.AccountsForRefinancing.ExternalLiabilities.subTitle\"\n )}\n \n \n pipe(\n {\n ...accounts,\n externalLoans: option.some(externalLoansList),\n },\n submitAccounts,\n taskEither.chain(() => props.onConfirm)\n )\n }\n oldValues={reworkedAccounts}\n />\n \n ) : (\n \n \n props.onConfirm)\n )}\n />\n \n )\n )\n );\n const isMobileLayout = useIsMobileLayout();\n\n const getAccountsForRefinancingStepChanges = useGetAccountsForRefinancingStepChanges(\n pipe(\n getAccounts,\n remoteData.fold(constant([]), constant([]), accounts =>\n pipe(\n accounts.externalLoans,\n option.map(el => el.liabilitiesList),\n option.getOrElse(constant([]))\n )\n )\n ),\n pipe(\n reworkedAccounts,\n option.map(v => v.liabilitiesList)\n )\n );\n\n const stepComments = useCommand(reworkApi.stepComments);\n\n const {\n config: { r6Enabled },\n } = useAppContext();\n\n const comments = useRemoteData(\n useMemo(() => stepComments({ reworkCategories: [\"CONTRACT\"] }), [r6Enabled])\n );\n\n const reworkComments = pipe(\n comments,\n remoteData.fold(\n () => option.none,\n () => option.none,\n comments => option.some(comments)\n )\n );\n\n const reworkBanner = (comments: Option) => {\n return pipe(\n props.reworkData.oldValues,\n option.fold(constNull, () => (\n \n \n \n ))\n );\n };\n\n const areReworkChanges =\n option.isSome(getAccountsForRefinancingStepChanges) &&\n getAccountsForRefinancingStepChanges.value.length > 0;\n\n const areReworkComments =\n option.isSome(reworkComments) &&\n option.isSome(reworkComments.value.stepComments) &&\n reworkComments.value.stepComments.value.length > 0;\n\n return (\n \n \n {isMobileLayout && }\n \n {(areReworkChanges || areReworkComments) &&\n reworkBanner(reworkComments)}\n\n \n \n \n \n {formatMessage(\"StandardLoan.AccountsForRefinancing.subTitle\")}\n \n \n {pipe(\n getAccounts,\n remoteData.fold(\n () => ,\n () => (\n {formatMessage(\"GenericError\")}\n ),\n liabilities => (\n <>\n {internalLiabilities(liabilities.internalLoans)}\n {externalLiabilities(liabilities)}\n \n )\n )\n )}\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { Divider, FormRow, FormSection, ReadOnlyField } from \"design-system\";\nimport { getTypeOfProductLabel } from \"../domain\";\nimport { useFormatMessage } from \"../../intl\";\nimport { ReadOnlyMoneyAmountField } from \"../../Common/ReadOnlyMoneyAmountField/ReadOnlyMoneyAmountField\";\nimport { InternalLoanItem } from \"../api\";\nimport { ReadOnlyDateField } from \"../../Common/ReadOnlyDateField/ReadOnlyDateField\";\nimport { option } from \"fp-ts\";\nimport { constNull, pipe } from \"fp-ts/function\";\n\ntype Props = {\n index: number;\n liability: InternalLoanItem;\n divider: boolean;\n};\n\nexport function InternalLiabilityRow(props: Props) {\n const formatMessage = useFormatMessage();\n\n const typeOfProductField = (\n \n );\n\n const originalAmountField = (\n \n );\n\n const remainingAmountField = (\n \n );\n\n const startDateField = pipe(\n props.liability.startDate,\n option.fold(constNull, () => (\n \n ))\n );\n\n return (\n \n \n {typeOfProductField}\n {originalAmountField}\n {remainingAmountField}\n {startDateField}\n \n {props.divider && (\n \n \n \n )}\n \n );\n}\n","import { LocaleKey, useFormatMessage } from \"../../intl\";\nimport { array, boolean, option, taskEither } from \"fp-ts\";\nimport { constNull, constTrue, constVoid, pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport {\n Body,\n Box,\n ErrorBanner,\n Loader,\n LoadingButton,\n Space,\n Stack,\n useForm,\n validators,\n} from \"design-system\";\nimport {\n ExternalLoanItem,\n ExternalLoansList,\n ExternalLoansListRework,\n loanProviders,\n loanProviderSelected,\n LoanType,\n} from \"../api\";\nimport { ExternalLiabilitiesEdititableItem } from \"./ExternalLiabilitiesEditableItem\";\nimport { ExternalLiabilityFormModel } from \"../domain\";\nimport { useValidators } from \"../../Common/useValidators\";\nimport { Currency, foldTenant, MoneyAmount } from \"../../globalDomain\";\nimport { useCommand, useQuery } from \"../../useAPI\";\nimport * as remoteData from \"../../RemoteData\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { useState } from \"react\";\nimport { ReaderTaskEither } from \"fp-ts/ReaderTaskEither\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\n\nexport type CreditorConfig = {\n accountPlaceholder: LocaleKey;\n variableSymbolPlaceholder: Option;\n accountForDisbursment: Option;\n accountReadonly: boolean;\n};\n\ntype Props = {\n liabilities: ExternalLoanItem[];\n account: { account: Option; currency: Currency };\n onSubmit: ReaderTaskEither;\n existingClient: boolean;\n oldValues: Option;\n};\n\nexport function ExternalLiabilitiesEditForm(props: Props) {\n const [loanProviderListQuery] = useQuery(loanProviders);\n const formatMessage = useFormatMessage();\n\n return pipe(\n loanProviderListQuery,\n remoteData.fold(\n () => ,\n () => {formatMessage(\"GenericError\")},\n loanProviders => (\n \n )\n )\n );\n}\n\nfunction ExternalLiabilitiesEditFormInternal(\n props: Props & {\n loanProviderList: NonEmptyArray<{\n code: NonEmptyString;\n name: NonEmptyString;\n }>;\n }\n) {\n const formatMessage = useFormatMessage();\n const { nonEmptyString, digitsOnly, maxLength } = useValidators();\n\n const loanProviderSelectedCommand = useCommand(loanProviderSelected);\n const {\n apiParameters: { tenant },\n } = useAppContext();\n\n const defaultCreditorConfig: CreditorConfig = foldTenant(\n tenant,\n () => ({\n accountPlaceholder:\n \"StandardLoan.AccountsForRefinancing.accountForDisbursmentPlaceholder\",\n variableSymbolPlaceholder: option.some(\n \"StandardLoan.AccountsForRefinancing.vsDefaultPlaceholder\"\n ),\n accountForDisbursment: option.none,\n accountReadonly: false,\n }),\n () => ({\n accountPlaceholder:\n \"StandardLoan.AccountsForRefinancing.accountForDisbursmentPlaceholder\",\n variableSymbolPlaceholder: option.some(\n \"StandardLoan.AccountsForRefinancing.vsDefaultPlaceholder\"\n ),\n accountForDisbursment: option.none,\n accountReadonly: false,\n })\n );\n\n const [creditorConfigs, setCreditorConfigs] = useState(\n Array(props.liabilities.length).fill({ ...defaultCreditorConfig })\n );\n\n // This dummy validator is to avoid a known error in useForm fieldArrayValidator\n const workAroundAlwaysRightValidator = () =>\n validators.fromPredicate(constTrue, formatMessage(\"GenericError\"));\n\n // TODO: replace with the DS validator when split into multiple fields\n const modulo11Weights = [6, 3, 7, 9, 10, 5, 8, 4, 2, 1];\n const checkModulo11 = (value: string) => {\n return (\n pipe(\n array.zipWith(\n array.reverse(value.split(\"\")),\n array.reverse(modulo11Weights),\n (el, weight) => parseInt(el) * weight\n ),\n array.reduce(0, (prev, next) => prev + next)\n ) %\n 11 ===\n 0\n );\n };\n\n const { fieldArray, handleSubmit } = useForm(\n {\n initialValues: {\n externalLiabilities: props.liabilities.map(\n liability =>\n ({\n ...liability,\n creditorName: pipe(\n liability.creditor,\n option.getOrElse(() => \"\")\n ),\n creditCardNumber: pipe(\n liability.creditCardNumber,\n option.getOrElse(() => \"\")\n ),\n accountForDisbursment: pipe(\n liability.accountForDisbursment,\n option.getOrElse(() => \"\")\n ),\n variableSymbol: pipe(\n liability.variableSymbol,\n option.getOrElse(() => \"\")\n ),\n } as ExternalLiabilityFormModel)\n ),\n },\n fieldValidators: () => ({}),\n fieldArrayValidators: (_, index) => ({\n externalLiabilities: {\n creditorName: validators.inSequence(\n nonEmptyString,\n validators.fromPredicate(\n text =>\n props.loanProviderList.filter(lp => lp.name === text).length >\n 0,\n formatMessage(\"StandardLoan.AccountsForRefinancing.wrongBankName\")\n )\n ),\n accountForDisbursment: foldTenant(\n tenant,\n () => nonEmptyString,\n () =>\n validators.inSequence(\n nonEmptyString,\n validators.fromPredicate(text => {\n const textWithoutWhiteChars = text.replace(/\\s/g, \"\");\n if (\n /^([(]{0,1}\\d{1,6}[)]{0,1}-)?\\d{2,10}\\/\\d+$/.test(\n textWithoutWhiteChars\n ) === false\n ) {\n return false;\n }\n const cleanText = textWithoutWhiteChars.replace(/[()]/g, \"\");\n const parts = cleanText.split(/[-/]/g);\n const account = parts.length === 2 ? parts[0] : parts[1];\n return checkModulo11(account);\n }, formatMessage(\"Form.fieldError.invalidAccountNumber\"))\n )\n ),\n creditCardNumber:\n props.liabilities[index].type === \"CREDIT_CARD\"\n ? validators.inSequence(\n nonEmptyString,\n validators.lengthRange(\n 16,\n 16,\n formatMessage(\n \"StandardLoan.AccountsForRefinancing.wrongCreditCard\"\n )\n )\n )\n : workAroundAlwaysRightValidator(),\n variableSymbol: validators.inSequence(\n nonEmptyString,\n digitsOnly,\n maxLength(10)\n ),\n recordId: workAroundAlwaysRightValidator(),\n originalAmount: workAroundAlwaysRightValidator(),\n remainingAmount: workAroundAlwaysRightValidator(),\n type: workAroundAlwaysRightValidator(),\n },\n }),\n },\n {\n onSubmit: values =>\n pipe(\n {\n liabilitiesList: values.externalLiabilities.map(\n (liability, index) => ({\n creditCardNumber: option.some(liability.creditCardNumber),\n creditor: option.some(liability.creditorName),\n creditorCode: pipe(\n props.loanProviderList,\n array.findFirstMap(lp =>\n lp.name === liability.creditorName\n ? option.some(lp.code)\n : option.none\n )\n ),\n variableSymbol: pipe(\n creditorConfigs[index].variableSymbolPlaceholder,\n option.chain(() =>\n pipe(\n liability.variableSymbol,\n NonEmptyString.decode,\n option.fromEither\n )\n )\n ),\n accountForDisbursment: option.some(\n liability.accountForDisbursment\n ),\n recordId: liability.recordId,\n originalAmount: liability.originalAmount,\n remainingAmount: liability.remainingAmount,\n selectedForRepaid: liability.selectedForRepaid,\n type: liability.type,\n })\n ),\n },\n props.onSubmit\n ),\n }\n );\n\n const submitButton = (\n \n \n \n );\n\n const externalLiabilitiesFieldArray = fieldArray(\"externalLiabilities\");\n\n const setCreditorConfigByIndex = (\n creditorConfig: CreditorConfig,\n index: number\n ) => {\n const newConfig = { ...creditorConfigs };\n newConfig[index] = creditorConfig;\n setCreditorConfigs(newConfig);\n };\n\n const updateCreditorConfig = (\n creditor: NonEmptyString,\n loanType: LoanType,\n index: number\n ) =>\n foldTenant(tenant, constVoid, () =>\n pipe(\n loanProviderSelectedCommand({\n creditor,\n type: loanType,\n }),\n taskEither.fold(\n () =>\n taskEither.fromIO(() =>\n setCreditorConfigByIndex(defaultCreditorConfig, index)\n ),\n provider =>\n taskEither.fromIO(() =>\n pipe(\n provider,\n option.fold(\n () => setCreditorConfigByIndex(defaultCreditorConfig, index),\n provider =>\n setCreditorConfigByIndex(\n {\n accountPlaceholder: provider.accountForDisbursmentHint,\n variableSymbolPlaceholder: provider.variableSymbolHint,\n accountForDisbursment: provider.accountForDisbursment,\n accountReadonly: provider.accountReadonly,\n },\n index\n )\n )\n )\n )\n )\n )()\n );\n\n return (\n \n {externalLiabilitiesFieldArray.items.map(\n ({ fieldProps, namePrefix }, index) => (\n \n updateCreditorConfig(\n creditorCode,\n fieldProps(\"type\").value,\n index\n )\n }\n creditorConfig={creditorConfigs[index]}\n oldValues={pipe(\n props.oldValues,\n option.chain(oldValues => {\n // Sometimes we receive an undefined value that cause\n // problems to the ExternalLiabilitiesEdititableItem component\n const value = oldValues.liabilitiesList[index];\n if (value !== undefined) {\n return option.some(value);\n } else {\n return option.none;\n }\n })\n )}\n />\n )\n )}\n\n {pipe(\n props.existingClient,\n boolean.fold(\n () => (\n \n {formatMessage(\n \"StandardLoan.AccountsForRefinancing.footerNewClient\"\n )}\n \n ),\n () =>\n pipe(\n props.account.account,\n option.fold(constNull, accountNumber => (\n \n {formatMessage(\"StandardLoan.AccountsForRefinancing.footer\", {\n account: accountNumber,\n currency: props.account.currency,\n })}\n \n ))\n )\n )\n )}\n\n \n {submitButton}\n \n );\n}\n","import {\n Box,\n Card,\n ComputedFieldProps,\n Form,\n FormRow,\n FormSection,\n ReadOnlyField,\n TextField,\n useLoadingStatusRead,\n} from \"design-system\";\nimport { CreditorData, ExternalLoanItemRework } from \"../api\";\nimport { ExternalLiabilityFormModel, getTypeOfProductLabel } from \"../domain\";\nimport { CreditorAutocompleteField } from \"./CreditorAutocompleteField\";\nimport { ReadOnlyMoneyAmountField } from \"../../Common/ReadOnlyMoneyAmountField/ReadOnlyMoneyAmountField\";\nimport { LocaleKey, useFormatMessage } from \"../../intl\";\nimport { pipe } from \"fp-ts/function\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport { Option } from \"fp-ts/Option\";\nimport { boolean, option } from \"fp-ts\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { CreditorConfig } from \"./ExternalLiabilitiesEditForm\";\nimport { MaskedCreditCardField } from \"./MaskedCreditCardField\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { useReworkComparator } from \"../Rework/useReworkComparator\";\nimport { useEffect } from \"react\";\n\ntype Props = {\n namePrefix: string;\n fieldProps: (\n name: K\n ) => ComputedFieldProps;\n loanProviders: NonEmptyArray;\n onCreditorNameChanged: Reader;\n creditorConfig: CreditorConfig;\n oldValues: Option;\n};\n\nexport function ExternalLiabilitiesEdititableItem(props: Props) {\n const formatMessage = useFormatMessage();\n const { isSubmitting } = useLoadingStatusRead();\n\n const wrapper = pipe(\n props.oldValues,\n option.map(oldValues => ({ item: option.some(oldValues) }))\n );\n\n const { reworkFieldProps } = useReworkComparator(wrapper);\n\n useEffect(() => {\n if (\n props.fieldProps(\"accountForDisbursment\").value.length === 0 &&\n option.isSome(props.creditorConfig.accountForDisbursment) &&\n option.isNone(props.oldValues)\n ) {\n props\n .fieldProps(\"accountForDisbursment\")\n .onChange(props.creditorConfig.accountForDisbursment.value as string);\n }\n }, [props.creditorConfig]);\n\n const typeOfProductField = (\n \n );\n\n const originalAmountField = (\n \n );\n\n const remainingAmountField = (\n \n );\n\n const variableSymbolField = (placeholder: Option) =>\n pipe(\n placeholder,\n option.fold(\n () => (\n \n ),\n placeholder => (\n \n )\n )\n );\n const renderAccountForDisbursement = pipe(\n props.creditorConfig.accountForDisbursment,\n option.fold(\n () => (\n \n ),\n disbursementAccount => {\n return props.creditorConfig.accountReadonly ? (\n \n ) : (\n \n );\n }\n )\n );\n\n return (\n \n \n
\n \n \n {typeOfProductField}\n {\n props.fieldProps(\"accountForDisbursment\").onChange(\"\");\n props.onCreditorNameChanged(suggestion.code);\n }}\n loanProviders={props.loanProviders}\n />\n \n \n {originalAmountField}\n {remainingAmountField}\n \n \n {renderAccountForDisbursement}\n {variableSymbolField(\n props.creditorConfig.variableSymbolPlaceholder\n )}\n \n {pipe(\n props.fieldProps(\"type\").value === \"CREDIT_CARD\" &&\n option.isNone(props.oldValues),\n boolean.fold(\n () => <>,\n () => (\n \n \n \n )\n )\n )}\n \n
\n
\n
\n );\n}\n","import {\n FieldProps,\n FormRow,\n PositiveInteger,\n PinInput,\n Box,\n Space,\n Body,\n useIsMobileLayout,\n} from \"design-system\";\nimport { NonEmptyString } from \"io-ts-types/NonEmptyString\";\nimport { useMemo } from \"react\";\nimport * as option from \"fp-ts/Option\";\nimport { constVoid } from \"fp-ts/function\";\nimport { readerTaskEither } from \"fp-ts\";\nimport { useFormatMessage } from \"../../intl\";\n\ntype Props = FieldProps;\n\nconst hiddenNumbersValue = \"XXXXXXXX\";\n\nexport function MaskedCreditCardField(props: Props) {\n const formatMessage = useFormatMessage();\n\n const splittedMaskedCardNumber = useMemo(() => {\n const [initialNumbers, finalNumbers] = props.value\n .toUpperCase()\n .split(hiddenNumbersValue);\n\n return {\n initialNumbers,\n finalNumbers: finalNumbers || \"\",\n };\n }, [props.value]);\n\n function onChangeInitial(value: string) {\n props.onChange(\n (value +\n hiddenNumbersValue +\n splittedMaskedCardNumber.finalNumbers) as NonEmptyString\n );\n }\n\n function onChangeFinal(value: string) {\n props.onChange(\n (splittedMaskedCardNumber.initialNumbers +\n hiddenNumbersValue +\n value) as NonEmptyString\n );\n }\n\n const isMobileLayout = useIsMobileLayout();\n\n return (\n \n \n \n \n {props.label}\n \n \n \n \n \n \n \n \n \n \n \n {formatMessage(\n \"StandardLoan.AccountsForRefinancing.hiddenCreditCardNumbers\"\n )}\n \n \n \n \n \n \n \n \n \n );\n}\n","import {\n Body,\n Box,\n Card,\n CheckboxField,\n ContentRow,\n ErrorBanner,\n Form,\n FormRow,\n FormSection,\n Heading,\n Loader,\n Space,\n Stack,\n TextField,\n useIsMobileLayout,\n useForm,\n validators,\n} from \"design-system\";\nimport { useFormatMessage } from \"../../intl\";\nimport { option, taskEither } from \"fp-ts\";\nimport { NextButton } from \"../../Common/NextButton\";\nimport { useValidators } from \"../../Common/useValidators\";\nimport { BankIdentitiesDropdown } from \"./BankIdentitiesDropdown\";\nimport * as api from \"./api\";\nimport { useCommand, useQuery } from \"../../useAPI\";\nimport { pipe } from \"fp-ts/function\";\nimport * as remoteData from \"../../RemoteData\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { Option } from \"fp-ts/Option\";\nimport { BankIdentityFormValue } from \"./domain\";\nimport { PageHeading } from \"../../Common/PageHeading/PageHeading\";\nimport { IO } from \"fp-ts/IO\";\nimport { BackButton } from \"../../Common/BackButton/BackButton\";\n\ntype Props = {\n onNext: () => unknown;\n onBack: IO;\n};\n\nconst initialValues = {\n prefixCode: \"\",\n accountNumber: \"\",\n bankIdentity: option.none as Option,\n idConfirmation: false,\n};\n\nexport function MicroTransaction(props: Props) {\n const formatMessage = useFormatMessage();\n const isMobileLayout = useIsMobileLayout();\n\n const {\n nonBlankString,\n maxLength,\n digitsOnly,\n modulo11Compliant,\n defined,\n } = useValidators();\n\n const submitBankAccount = useCommand(api.bankAccountSubmit);\n const saveMicroPaymentDataConfirmation = useCommand(\n api.saveMicroPaymentDataConfirmation\n );\n\n const [getBasicPersonalData] = useQuery(api.basicPersonalData);\n\n const { fieldProps, handleSubmit } = useForm(\n {\n initialValues,\n fieldValidators: _ => ({\n prefixCode: validators.inSequence(maxLength(6), digitsOnly),\n accountNumber: validators.inSequence(nonBlankString, modulo11Compliant),\n bankIdentity: defined(),\n idConfirmation: validators.checked(\n formatMessage(\"StandardLoan.microTransaction.missingIdConfirmation\")\n ),\n }),\n },\n {\n onSubmit: values =>\n pipe(\n submitBankAccount({\n prefixCode: values.prefixCode,\n accountNumber: values.accountNumber as NonEmptyString,\n bankCode: values.bankIdentity.id,\n bankName: values.bankIdentity.name,\n confirmationLabel: formatMessage(\n \"StandardLoan.microTransactionCheckbox\",\n {\n fullName: \"clientName\",\n }\n ),\n }),\n taskEither.chain(() => taskEither.fromIO(props.onNext))\n ),\n }\n );\n\n return pipe(\n getBasicPersonalData,\n remoteData.fold(\n () => (\n \n \n \n ),\n () => ,\n personalData => {\n const form = (\n
\n \n \n \n \n \n \n \n {\n saveMicroPaymentDataConfirmation({ consent: checked })();\n fieldProps(\"idConfirmation\").onChange(checked);\n }}\n label={formatMessage(\n \"StandardLoan.microTransactionCheckbox\",\n {\n fullName: `${personalData.name} ${personalData.surname}`,\n }\n )}\n multiline={isMobileLayout}\n />\n \n \n
\n );\n\n return (\n \n \n \n \n \n \n \n {formatMessage(\"StandardLoan.microTransactionCardTitle\")}\n \n \n {formatMessage(\n \"StandardLoan.microTransactionCardSubtitle\"\n )}\n \n \n \n {form}\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n )\n );\n}\n","import { DropdownOption } from \"design-system\";\nimport { constant, identity, pipe } from \"fp-ts/function\";\nimport { array, option } from \"fp-ts\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useQuery } from \"../../useAPI\";\nimport * as api from \"./api\";\nimport { Option } from \"fp-ts/Option\";\nimport * as remoteData from \"../../RemoteData\";\nimport { BankIdentity, BankIdentityFormValue } from \"./domain\";\nimport {\n DropdownField,\n DropdownFieldProps,\n} from \"../../Common/DropdownField/DropdownField\";\n\ntype Props = Omit<\n DropdownFieldProps,\n \"options\" | \"value\" | \"onChange\" | \"searchable\"\n> & {\n value: Option;\n onChange: (value: Option) => unknown;\n};\n\nexport function BankIdentitiesDropdown(props: Props) {\n const formatMessage = useFormatMessage();\n\n const bankIdentities = pipe(\n useQuery(api.bankIdentities),\n ([result]) => result,\n remoteData.fold(constant([]), constant([]), identity)\n );\n\n const options: DropdownOption[] = bankIdentities.map(\n (bankIdentity: BankIdentity) => ({\n value: {\n id: bankIdentity.bankCode,\n name: bankIdentity.bankName,\n },\n label: formatMessage(\"StandardLoan.microTransaction.bankDropdownItem\", {\n code: bankIdentity.bankCode,\n name: bankIdentity.bankName,\n }),\n })\n );\n\n const onChange = (value: Option>) => {\n props.onChange(\n pipe(\n value,\n option.map(v => v.value)\n )\n );\n };\n\n function selectedDropdownOption(\n initialValue: Option,\n options: Array>\n ) {\n return pipe(\n initialValue,\n option.chain(initialValue =>\n pipe(\n options,\n array.findFirst(\n bankIdentity => bankIdentity.value.id === initialValue.id\n )\n )\n )\n );\n }\n\n return (\n \n );\n}\n","import * as t from \"io-ts\";\nimport { NonEmptyString } from \"io-ts-types/NonEmptyString\";\nimport { LocalizedString } from \"design-system\";\n\nexport const BankIdentity = t.type({\n bankCode: NonEmptyString,\n bankName: LocalizedString,\n});\n\nexport type BankIdentity = t.TypeOf;\n\nexport type BankIdentityFormValue = {\n id: NonEmptyString;\n name: LocalizedString;\n};\n","import { boolean, option } from \"fp-ts\";\nimport { constFalse, pipe } from \"fp-ts/function\";\nimport { ApplicationProductType } from \"../../Common/ProcessStoreList/api\";\nimport { Summary } from \"./Summary\";\nimport { SummaryExistingClient } from \"./SummaryExistingClient\";\nimport { Option } from \"fp-ts/Option\";\nimport { LFStatus } from \"../api\";\nimport { IO } from \"fp-ts/IO\";\nimport { StandardLoanFlowType } from \"../domain\";\n\ntype Props = {\n productType: Option;\n lfStatus: LFStatus;\n clientExists: boolean;\n hasRefinancing: boolean;\n goToClient: IO;\n goToMicroPayments: IO;\n flowType: StandardLoanFlowType;\n};\n\nexport const SLSummary = (props: Props) => {\n return pipe(\n props.clientExists,\n boolean.fold(\n () => (\n \n ),\n () => (\n productType === \"RL\")\n )}\n hasRefinancing={props.hasRefinancing}\n onGoToClientPage={props.goToClient}\n flowType={props.flowType}\n />\n )\n )\n );\n};\n","import { Box, FeedbackBlock, Loader } from \"design-system\";\nimport { IO } from \"fp-ts/IO\";\nimport { constVoid, pipe } from \"fp-ts/function\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { option } from \"fp-ts\";\nimport { foldTenant } from \"../../globalDomain\";\nimport { useCheckDay, DayTypeInfo } from \"../useCheckDay\";\nimport { LFStatus } from \"../api\";\nimport { StandardLoanFlowType } from \"../domain\";\n\nfunction foldDecision(matches: {\n whenApproved: IO;\n whenPending: IO;\n}): Reader {\n return type => {\n switch (type) {\n case \"Approved\":\n return matches.whenApproved();\n case \"Pending\":\n case \"Rejected\":\n return matches.whenPending();\n }\n };\n}\n\ntype Props = {\n lfStatus: LFStatus;\n isRLProductType: boolean;\n hasRefinancing: boolean;\n onGoToClientPage: IO;\n flowType: StandardLoanFlowType;\n};\n\nexport const SummaryExistingClient = (props: Props) => {\n const formatMessage = useFormatMessage();\n const { foldStatus } = useCheckDay();\n const {\n apiParameters: { tenant },\n } = useAppContext();\n\n const getFeedbackText = (dayInfo: DayTypeInfo) => {\n let title = formatMessage(\n \"StandardLoan.Summary.ExistingClient.Approved.title\"\n );\n let subheading = option.some(\n formatMessage(\"StandardLoan.Summary.ExistingClient.Approved.message\")\n );\n\n pipe(\n props.lfStatus,\n foldDecision({\n whenApproved: () => {\n if (!dayInfo.isWorkingDay && dayInfo.status === \"Ready\") {\n title = formatMessage(\n \"StandardLoan.Summary.ExistingClient.Approved.NonWorkingDays.title\"\n );\n subheading = option.some(\n formatMessage(\n \"StandardLoan.Summary.ExistingClient.Approved.NonWorkingDays.message\"\n )\n );\n }\n },\n whenPending: () => {\n title = formatMessage(\n \"StandardLoan.Summary.ExistingClient.Pending.title\"\n );\n subheading = option.some(\n formatMessage(\"StandardLoan.Summary.ExistingClient.Pending.message\")\n );\n foldTenant(\n tenant,\n () => {\n if (props.hasRefinancing && props.isRLProductType) {\n title = formatMessage(\n \"StandardLoan.Summary.ExistingClient.Pending.SK.title\"\n );\n subheading = option.some(\n formatMessage(\n \"StandardLoan.Summary.ExistingClient.Pending.SK.message\"\n )\n );\n }\n },\n constVoid\n );\n },\n })\n );\n\n return { title, subheading };\n };\n\n return foldStatus({\n whenLoading: () => (\n \n \n \n ),\n whenReady: info => {\n const { title, subheading } = getFeedbackText(info);\n return (\n \n );\n },\n });\n};\n","import { Option } from \"fp-ts/Option\";\nimport { ExtractedDataResult } from \"../../UploadDocuments/types\";\nimport { option } from \"fp-ts\";\nimport { constNull, pipe } from \"fp-ts/function\";\nimport {\n Body,\n Box,\n Button,\n ContentRow,\n Divider,\n Heading,\n PageHeading,\n Space,\n Stack,\n useIsMobileLayout,\n useIsTouchScreen,\n} from \"design-system\";\nimport { ReworkBanner } from \"./ReworkBanner\";\nimport * as reworkApi from \"./api\";\nimport { StepCommentsOutput } from \"./api\";\nimport { useFormatDocumentType, useFormatMessage } from \"../../intl\";\nimport { AddressForm } from \"../../IdUpload/AddressForm/AddressForm\";\nimport {\n formStateFromPersonalDataOCR,\n PersonalDataForm,\n} from \"../../IdUpload/ClientData/PersonalDataForm/PersonalDataForm\";\nimport { PersonalDocumentOCR } from \"../../IdUpload/domain\";\nimport { DocumentType } from \"../../UploadDocuments/domain\";\nimport {\n formStateFromPersonalDocumentOCR,\n PersonalDocumentForm,\n} from \"../../IdUpload/ClientData/PersonalDocumentForm/PersonalDocumentForm\";\nimport {\n AddressFormState,\n formStateFromAddressOCR,\n useDefaultCountryCode,\n} from \"../../IdUpload/addressFormUtils\";\nimport { IO } from \"fp-ts/IO\";\nimport {\n mergeExtractDataDocumentsReworkOutput,\n useGetPersonalDataStepChanges,\n} from \"./utils\";\nimport { useCommand } from \"../../useAPI\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { useRemoteData } from \"../../useRemoteData\";\nimport { useMemo } from \"react\";\nimport * as remoteData from \"../../RemoteData\";\nimport { MainContent } from \"../../Common/MainContent\";\n\ntype Props = {\n clientData: ExtractedDataResult;\n reworkData: Option;\n onContinue: IO;\n};\n\nexport function ConfirmClientData(props: Props) {\n const formatMessage = useFormatMessage();\n const formatDocumentType = useFormatDocumentType();\n const isMobileLayout = useIsMobileLayout();\n const defaultCountry = useDefaultCountryCode();\n\n const reworkDocument = pipe(\n props.reworkData,\n option.chain(r => r.personalDataConfirmation),\n option.chain(pd => {\n const { primary, secondary } = pd;\n const documentPayload = mergeExtractDataDocumentsReworkOutput(\n primary,\n secondary\n );\n\n return pipe(\n documentPayload,\n option.map(document => ({\n ...document,\n }))\n );\n })\n );\n\n const changes = useGetPersonalDataStepChanges(\n props.clientData,\n reworkDocument\n );\n\n const stepComments = useCommand(reworkApi.stepComments);\n\n const {\n config: { r6Enabled },\n } = useAppContext();\n\n const comments = useRemoteData(\n useMemo(() => stepComments({ reworkCategories: [\"PERSONAL_ID\"] }), [\n r6Enabled,\n ])\n );\n\n const reworkComments = pipe(\n comments,\n remoteData.fold(\n () => option.none,\n () => option.none,\n comments => option.some(comments)\n )\n );\n\n const reworkBanner = (comments: Option) => {\n return pipe(\n props.reworkData,\n option.fold(constNull, () => (\n \n ))\n );\n };\n\n const areReworkChanges = option.isSome(changes) && changes.value.length > 0;\n\n const areReworkComments =\n option.isSome(reworkComments) &&\n option.isSome(reworkComments.value.stepComments) &&\n reworkComments.value.stepComments.value.length > 0;\n\n const personalDataFormState = formStateFromPersonalDataOCR(\n props.clientData.personalData\n );\n\n const permanentAddress: Option = pipe(\n props.clientData.permanentAddress,\n option.map(permanentAddressFromOCR =>\n formStateFromAddressOCR(permanentAddressFromOCR, defaultCountry)\n )\n );\n\n const renderDocumentDetailsForm = (\n personalDocument: PersonalDocumentOCR,\n documentType: DocumentType\n ) => (\n <>\n \n \n {formatDocumentType(documentType)}\n \n \n \n \n pipe(\n r.documentDetails,\n option.map(dd => ({\n ...dd,\n authorityCountry: option.none,\n }))\n )\n )\n )}\n reworkClientProfile={pipe(\n reworkDocument,\n option.map(r => ({\n documentType: r.documentType,\n documentDetails: pipe(\n r.documentDetails,\n option.map(dd => ({\n ...dd,\n authorityCountry: option.none,\n }))\n ),\n permanentAddress: r.permanentAddress,\n personalData: pipe(\n r.personalData,\n option.map(pd => ({\n ...pd,\n nationality: option.none,\n titleBefore: option.none,\n }))\n ),\n email: option.none,\n phoneNumber: option.none,\n }))\n )}\n />\n \n );\n\n const isTouchScreen = useIsTouchScreen();\n\n return (\n \n \n \n \n {(areReworkChanges || areReworkComments) &&\n reworkBanner(reworkComments)}\n \n {!isTouchScreen && (\n <>\n \n {formatMessage(\n \"Identification.personalData.confirmDescription\",\n {\n name: personalDataFormState.name,\n }\n )}\n \n \n \n )}\n \n \n {formatMessage(\"Identification.personalData.personalData\")}\n \n \n \n \n pipe(\n document.personalData,\n option.map(pd => ({\n ...pd,\n nationality: option.none,\n titleBefore: option.none,\n }))\n )\n )\n )}\n documentType={props.clientData.documentType}\n secondCitizenship={\n props.clientData.personalData.secondCitizenship\n }\n />\n \n \n \n \n {formatMessage(\"Identification.personalData.documents\")}\n \n \n \n {formatMessage(\n \"Identification.personalData.documentsDescription\"\n )}\n \n \n \n {renderDocumentDetailsForm(\n props.clientData.documentDetails,\n props.clientData.documentType\n )}\n {pipe(\n props.clientData.additionalDocumentDetails,\n option.fold(constNull, details =>\n pipe(\n props.clientData.additionalDocumentType,\n option.fold(constNull, type =>\n renderDocumentDetailsForm(details, type)\n )\n )\n )\n )}\n \n \n {pipe(\n permanentAddress,\n option.fold(constNull, permanentAddress => (\n <>\n \n \n \n \n {formatMessage(\n \"Identification.personalData.permanentAddress\"\n )}\n \n \n \n\n r.permanentAddress)\n )}\n lockCzSk={false}\n />\n \n ))\n )}\n \n \n \n \n \n \n \n );\n}\n","import {\n Banner,\n Body,\n Box,\n ContentRow,\n DoubleCard,\n ErrorBanner,\n FeedbackBlock,\n FileContent,\n FormRow,\n Heading,\n InfoIcon,\n InlineMessage,\n Loader,\n QRCode,\n ReadOnlyField,\n Space,\n Stack,\n Tooltip,\n UnorderedList,\n} from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { sequenceS } from \"fp-ts/Apply\";\nimport { flow, pipe } from \"fp-ts/function\";\nimport { useState } from \"react\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useQuery } from \"../../useAPI\";\nimport { WithPromotionBenefit } from \"../../PhoneAndEmailVerification/WithPromotionBenefit\";\nimport * as api from \"./api\";\nimport * as remoteData from \"../../RemoteData\";\nimport { palette } from \"design-system/lib/styleConstants\";\nimport { ReadOnlyMoneyAmountField } from \"../../Common/ReadOnlyMoneyAmountField/ReadOnlyMoneyAmountField\";\nimport { useTenantCurrency } from \"../../Common/useTenantCurrency\";\n\nexport const MicroTransactionOverview = () => {\n const formatMessage = useFormatMessage();\n const [showInfoBanner, setShowInfoBanner] = useState(true);\n const [microTransactionDetails] = useQuery(api.microTransactionDetails);\n const [QRCodeFile] = useQuery(api.getQRCode, {\n size: 150,\n });\n\n return pipe(\n { microTransactionDetails, QRCodeFile },\n sequenceS(remoteData.remoteData),\n remoteData.fold(\n () => (\n \n \n \n ),\n () => ,\n ({ microTransactionDetails, QRCodeFile }) => (\n \n \n \n \n \n \n {formatMessage(\n \"StandardLoan.MainContent.microTransactionOverviewCardTitle\"\n )}\n \n \n {formatMessage(\n \"StandardLoan.MainContent.microTransactionOverviewCardSubtitle\"\n )}\n \n \n \n \n {showInfoBanner && (\n <>\n \n setShowInfoBanner(false))}\n content={formatMessage(\n \"StandardLoan.MainContent.microTransaction.infoBanner\"\n )}\n />\n \n )}\n \n {flow(\n option.map(promotionBenefit => (\n <>\n \n \n \n )),\n option.toNullable\n )}\n \n \n \n \n {formatMessage(\n \"StandardLoan.MainContent.microTransaction.whatsNext.title\"\n )}\n \n \n {[\n formatMessage(\n \"StandardLoan.MainContent.microTransaction.whatsNext.suggestion1\"\n ),\n formatMessage(\n \"StandardLoan.MainContent.microTransaction.whatsNext.suggestion2\"\n ),\n formatMessage(\n \"StandardLoan.MainContent.microTransaction.whatsNext.suggestion3\"\n ),\n formatMessage(\n \"StandardLoan.MainContent.microTransaction.whatsNext.suggestion4\"\n ),\n ]}\n \n \n \n \n \n )\n )\n );\n};\n\nfunction MicroPaymentCard(props: {\n microTransactionDetails: api.MicroTransactionDetailsOutput;\n qrCode: FileContent;\n}) {\n const formatMessage = useFormatMessage();\n const currency = useTenantCurrency();\n const formattedAccount = pipe(\n props.microTransactionDetails.prefixCode,\n option.fold(\n () =>\n formatMessage(\n \"StandardLoan.MainContent.microTransaction.accountNumber.noPrefix\",\n {\n accountNumber: props.microTransactionDetails.accountNumber,\n bankCode: props.microTransactionDetails.bankCode,\n }\n ),\n prefixCode =>\n formatMessage(\n \"StandardLoan.MainContent.microTransaction.accountNumber.withPrefix\",\n {\n prefixCode,\n accountNumber: props.microTransactionDetails.accountNumber,\n bankCode: props.microTransactionDetails.bankCode,\n }\n )\n )\n );\n const leftSide = (\n \n \n {formatMessage(\n \"StandardLoan.MainContent.microTransaction.sendmicroTransaction\"\n )}\n \n \n \n \n \n \n \n \n );\n\n const rightSide = (\n \n \n \n {formatMessage(\n \"StandardLoan.MainContent.microTransaction.scanThisQRCode\"\n )}\n \n \n \n \n \n \n \n );\n\n return (\n \n {leftSide}\n {rightSide}\n \n );\n}\n","import {\n Stack,\n LocalizedString,\n Loader,\n ErrorBanner,\n ContentRow,\n Box,\n useIsMobileLayout,\n useForm,\n Button,\n LoadingButton,\n ReadOnlyField,\n} from \"design-system\";\nimport { boolean, option, taskEither } from \"fp-ts\";\nimport { IO } from \"fp-ts/IO\";\nimport { pipe, constNull } from \"fp-ts/function\";\nimport { useFormatMessage } from \"../../intl\";\nimport { PageHeading } from \"../../Common/PageHeading/PageHeading\";\nimport { OfferReviewCard } from \"./OfferReviewCard\";\nimport { useQuery } from \"../../useAPI\";\nimport { RejectionReason } from \"../StandardLoanState\";\nimport * as remoteData from \"../../RemoteData\";\nimport * as api from \"../api\";\nimport { Option } from \"fp-ts/Option\";\nimport { ExistingClientAuthenticationMethod } from \"../../globalDomain\";\n// import { useValidators } from \"./Common/useValidators\";\nimport { OfferDocuments } from \"./OfferDocuments\";\nimport { useState } from \"react\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\n\nexport type OnApplicationRejected = (result: RejectionReason) => void;\n\ntype Props = {\n onBack: IO;\n onComplete: () => unknown;\n onApplicationRejected: OnApplicationRejected;\n selectedOffer: api.GenericLoanResponseOutput;\n authenticationMethod: Option;\n existingClient: boolean;\n disbursementAccount: Option;\n};\n\nexport function OfferReviewPush(props: Props) {\n const formatMessage = useFormatMessage();\n\n const [appStateRequiredDocuments] = useQuery(api.appStateRequiredDocuments);\n const isMobileLayout = useIsMobileLayout();\n\n // const setDisbursementAccount = useCommand(api.setDisbursementAccount);\n\n // const { definedNoExtract } = useValidators();\n\n const disbursementAccount = pipe(\n props.disbursementAccount,\n option.fold(\n () => \"\",\n account => account\n )\n );\n\n const label = formatMessage(\n \"PreApprovedLoanSaleRecap.disbursementAccounts.label\"\n );\n\n const { handleSubmit } = useForm(\n {\n initialValues: {\n disbursementAccount: option.none as Option,\n },\n fieldValidators: () => (props.existingClient ? {} : {}),\n },\n {\n onSubmit: () => taskEither.fromIO(props.onComplete),\n }\n );\n\n const continueButton = pipe(\n props.authenticationMethod,\n option.fold(\n () => (\n \n ),\n () => (\n \n )\n )\n );\n const [documentsLoading, setDocumentsLoading] = useState(true);\n const handleDocumentsSuccess = () => {\n if (documentsLoading) {\n setDocumentsLoading(false);\n }\n return ;\n };\n const handleDocumentsFailure = () => {\n if (documentsLoading) {\n setDocumentsLoading(false);\n }\n return (\n \n {formatMessage(\"StandardLoan.UploadDocuments.loadingError\")}\n \n );\n };\n\n return (\n \n \n \n \n \n \n {props.existingClient && (\n \n )}\n {pipe(\n appStateRequiredDocuments,\n remoteData.fold(\n constNull,\n handleDocumentsFailure,\n handleDocumentsSuccess\n )\n )}\n {documentsLoading && (\n \n \n \n )}\n \n \n \n\n \n \n {pipe(\n isMobileLayout,\n boolean.fold(\n () => continueButton,\n () => continueButton\n )\n )}\n \n \n \n );\n}\n","import { Box, Loader } from \"design-system\";\nimport { useEffect } from \"react\";\n\ninterface Props {\n onReload: () => unknown;\n}\n\nexport const ReloadSuspense = (props: Props) => {\n useEffect(() => {\n props.onReload();\n }, []);\n\n return (\n \n \n \n );\n};\n","import { Box, Loader } from \"design-system\";\nimport { pipe } from \"fp-ts/function\";\nimport { IO } from \"fp-ts/IO\";\nimport { Reader } from \"fp-ts/Reader\";\nimport * as offerListApi from \"./api\";\nimport { usePolling } from \"../../useAPI\";\nimport * as remoteData from \"../../RemoteData\";\nimport { MainContent } from \"../../Common/MainContent\";\n\ntype Props = {\n onApproved: IO;\n onRejected: IO;\n onError: IO;\n};\n\nfunction foldOfferState(matches: {\n onLoading: IO;\n onReady: IO;\n onTimeout: IO;\n}): Reader {\n return type => {\n switch (type) {\n case \"PENDING\":\n return matches.onLoading();\n case \"RECEIVED\":\n return matches.onReady();\n case \"TIMEOUT\":\n return matches.onTimeout();\n }\n };\n}\n\nexport function CheckExpensesOffers(props: Props) {\n const [checkOfferStatus] = usePolling(offerListApi.checkExpensesOffers, {\n intervalMS: 2000,\n shouldPollingContinue: ({ status }) => status === \"PENDING\",\n });\n\n const renderLoader = (\n \n \n \n );\n\n return (\n \n {pipe(\n checkOfferStatus,\n remoteData.fold(\n () => renderLoader,\n () => <>{props.onError},\n ({ status }) =>\n pipe(\n status,\n foldOfferState({\n onLoading: () => renderLoader,\n onReady: () => <>{props.onApproved()},\n onTimeout: () => <>{props.onApproved()},\n })\n )\n )\n )}\n \n );\n}\n","import { pipe } from \"fp-ts/function\";\nimport { IO } from \"fp-ts/IO\";\nimport { useCommand, usePollingEffect } from \"../../useAPI\";\nimport * as api from \"../api\";\nimport { getBonitaStatus } from \"../api\";\nimport { Box, Loader } from \"design-system\";\nimport { useEffect, useState } from \"react\";\nimport { option, taskEither } from \"fp-ts\";\nimport { MainContent } from \"../../Common/MainContent\";\n\ntype Props = {\n onCounterOffer: IO;\n onApproved: IO;\n onRejected: IO;\n onError: IO;\n};\n\nexport function SendAdditionalIncome(props: Props) {\n const sendAdditionalIncome = useCommand(api.sendAdditionalIncome);\n const [errorNo, setErrorNo] = useState(0);\n const [canPoll, setCanPoll] = useState(false);\n\n useEffect(() => {\n pipe(\n sendAdditionalIncome(),\n taskEither.bimap(props.onError, ({ lfDecision }) => {\n if (lfDecision === \"Pending\") {\n setCanPoll(true);\n }\n })\n )();\n }, []);\n\n useEffect(() => {\n if (canPoll) {\n restartPoll();\n }\n }, [canPoll]);\n\n const restartPoll = usePollingEffect(getBonitaStatus, {\n intervalMS: 5000,\n disabled: !canPoll,\n shouldPollingContinue: val => val.bonitaStatus === \"PENDING\",\n onError: () => setErrorNo(curr => curr + 1),\n onSuccess: response => {\n setErrorNo(0);\n\n if (\n response.bonitaStatus === \"DONE\" &&\n option.isSome(response.proceedWithAdditionalIncomeResponse)\n ) {\n setCanPoll(false);\n switch (response.proceedWithAdditionalIncomeResponse.value.lfDecision) {\n case \"Approved\":\n props.onApproved();\n break;\n case \"Counteroffer\":\n props.onCounterOffer();\n break;\n case \"Rejected\":\n props.onRejected();\n break;\n default:\n props.onError();\n }\n }\n },\n });\n\n useEffect(() => {\n if (errorNo >= 2) {\n props.onError();\n }\n }, [errorNo]);\n\n return (\n \n \n \n \n \n );\n}\n","import {\n AlertDialog,\n Body,\n Box,\n Button,\n Card,\n ContentRow,\n FeedbackDialog,\n Loader,\n LoadingButton,\n PageHeading,\n Space,\n Stack,\n UCInfoIcon,\n unsafeLocalizedString,\n useForm,\n validators,\n} from \"design-system\";\nimport { Option } from \"fp-ts/Option\";\nimport { constant, constNull, pipe } from \"fp-ts/function\";\nimport { option, taskEither } from \"fp-ts\";\nimport { useFormatMessage } from \"../../intl\";\nimport { useCommand, useQuery } from \"../../useAPI\";\nimport * as api from \"../api\";\nimport { AssignedBrokerForBankerInfo } from \"../domain\";\nimport { useRef, useState } from \"react\";\nimport * as remoteData from \"../../RemoteData\";\nimport { BrokerEmailField } from \"./BrokerEmailField\";\nimport { useValidators } from \"../../Common/useValidators\";\nimport { BackButton } from \"../../Common/BackButton/BackButton\";\nimport { NextButton } from \"../../Common/NextButton\";\nimport { MainContent } from \"../../Common/MainContent\";\n\ntype Props = {\n loanOffer: api.LoanOffer;\n onContinue: (loanOffer: api.LoanOffer, show3P?: boolean) => unknown;\n onBack: () => unknown;\n onAgeValidationFail: Option<() => unknown>;\n};\n\nexport default function Select3P(props: Props) {\n const formatMessage = useFormatMessage();\n\n const [isEditing, setEditing] = useState(false);\n const [assignedBrokerData, refreshAssignedData] = useQuery(\n api.getAssignedBrokerForBanker\n );\n const removeAssignedBrokerForBanker = useCommand(\n api.removeAssignedBrokerForBanker\n );\n const [\n isRemovingAssignedBroker,\n setIsRemovingAssignedBroker,\n ] = useState(false);\n const { nonEmptyString, validEmail } = useValidators();\n\n const saveAssignedBrokerForBanker = useCommand(\n api.saveAssignedBrokerForBanker\n );\n\n const [brokerSelected, setBrokerSelected] = useState(false);\n const [cannotContinueError, setCannotContinueError] = useState(false);\n const [brokerSelectionError, setBrokerSelectionError] = useState(false);\n\n const unwrap = (value: Option) =>\n pipe(value, option.getOrElse(constant(\"\")));\n\n const isAssigned = (assignedBroker: AssignedBrokerForBankerInfo) =>\n option.isSome(assignedBroker.firstName) ||\n option.isSome(assignedBroker.lastName) ||\n option.isSome(assignedBroker.phoneNumber) ||\n option.isSome(assignedBroker.email);\n\n const { fieldProps, handleSubmit, setValues } = useForm(\n {\n initialValues: pipe(\n pipe(\n assignedBrokerData,\n remoteData.fold(\n () => option.none,\n () => option.none,\n assignedBroker =>\n option.isSome(assignedBroker.brokerInfo) &&\n option.isSome(assignedBroker.brokerInfo.value.email)\n ? option.some({\n email: assignedBroker.brokerInfo.value.email.value,\n })\n : option.none\n )\n ),\n option.fold(\n constant({\n email: \"\",\n }),\n initialValues => ({\n email: initialValues.email,\n })\n )\n ),\n fieldValidators: _ => ({\n email: validators.inSequence(nonEmptyString, validEmail),\n }),\n },\n {\n onSubmit: ({ email }) =>\n pipe({ email }, values =>\n pipe(\n saveAssignedBrokerForBanker(values),\n taskEither.map(({ status }) => {\n if (status === \"VALID\") {\n setEditing(false);\n setBrokerSelected(true);\n refreshAssignedData();\n return taskEither.right(null);\n } else {\n setBrokerSelectionError(true);\n return taskEither.left(null);\n }\n })\n )\n ),\n }\n );\n\n const activeQueryTerms = useRef({\n email: \"\",\n });\n\n const syncFormState = (suggestion: string) =>\n setValues({\n email: suggestion,\n });\n\n const renderBrokerData = (assignedBroker: AssignedBrokerForBankerInfo) => (\n \n \n \n {formatMessage(\"StandardLoan.Select3P.assignedBroker\")}\n \n setEditing(true)}\n />\n \n setIsRemovingAssignedBroker(true)}\n />\n \n \n {unsafeLocalizedString(\n unwrap(assignedBroker.firstName) +\n \" \" +\n unwrap(assignedBroker.lastName)\n )}\n \n \n {unsafeLocalizedString(unwrap(assignedBroker.brokerageCompany))}\n \n \n {unsafeLocalizedString(unwrap(assignedBroker.phoneNumber))}\n \n \n {unsafeLocalizedString(unwrap(assignedBroker.email))}\n \n \n );\n\n const renderCard = (assignedBroker: AssignedBrokerForBankerInfo) => (\n \n {renderBrokerData(assignedBroker)}\n \n );\n\n const renderEmailInput = (\n \n {\n activeQueryTerms.current = {\n email: value,\n };\n fieldProps(\"email\").onChange(value);\n }}\n />\n\n \n \n \n \n \n );\n\n return (\n \n \n {isRemovingAssignedBroker && (\n {\n activeQueryTerms.current = {\n email: \"\",\n };\n fieldProps(\"email\").onChange(\"\");\n setBrokerSelected(false);\n setEditing(false);\n setIsRemovingAssignedBroker(false);\n return taskEither.fromIO(refreshAssignedData);\n })\n )}\n cancelLabel={formatMessage(\n \"StandardLoan.Select3P.removeBrokerDialog.cancel\"\n )}\n onCancel={() => setIsRemovingAssignedBroker(false)}\n onDismiss={() => setIsRemovingAssignedBroker(false)}\n />\n )}\n {brokerSelectionError && (\n setBrokerSelectionError(false),\n }}\n />\n )}\n {cannotContinueError && (\n setCannotContinueError(false),\n }}\n />\n )}\n \n
\n {isEditing\n ? renderEmailInput\n : pipe(\n assignedBrokerData,\n remoteData.fold(\n constant(),\n constNull,\n assignedBroker =>\n pipe(\n assignedBroker.brokerInfo,\n option.filter(isAssigned),\n option.map(renderCard),\n option.getOrElse(() => renderEmailInput)\n )\n )\n )}\n
\n
\n \n \n {\n activeQueryTerms.current = {\n email: \"\",\n };\n return taskEither.fromIO(props.onBack);\n })\n )}\n />\n \n {!isEditing &&\n pipe(\n assignedBrokerData,\n remoteData.fold(constNull, constNull, assignedBroker =>\n pipe(\n assignedBroker.brokerInfo,\n option.filter(isAssigned),\n option.map(() => (\n \n props.onContinue(props.loanOffer, false)\n )\n : taskEither.fromIO(() => setCannotContinueError(true))\n }\n />\n )),\n option.getOrElseW(constNull)\n )\n )\n )}\n \n
\n );\n}\n","import { TaskEither } from \"fp-ts/TaskEither\";\nimport { IO } from \"fp-ts/IO\";\nimport { Rework } from \"../StandardLoanState\";\nimport { useCommand, useQuery } from \"../../useAPI\";\nimport { ExternalLoansList, getRepaidLoans, submitRepaidLoans } from \"../api\";\nimport { useFormatMessage } from \"../../intl\";\nimport { constant, constNull, pipe } from \"fp-ts/function\";\nimport { option, taskEither } from \"fp-ts\";\nimport * as remoteData from \"../../RemoteData\";\nimport { MainContent } from \"../../Common/MainContent\";\nimport {\n Body,\n Box,\n Card,\n ContentRow,\n Divider,\n ErrorBanner,\n Heading,\n Loader,\n Space,\n Stack,\n useIsMobileLayout,\n} from \"design-system\";\nimport { PageHeading } from \"../../Common/PageHeading/PageHeading\";\nimport { BackButton } from \"../../Common/BackButton/BackButton\";\nimport { Option } from \"fp-ts/Option\";\nimport { StepCommentsOutput } from \"../Rework/api\";\nimport { ReworkBanner } from \"../Rework/ReworkBanner\";\nimport { useRemoteData } from \"../../useRemoteData\";\nimport { useMemo } from \"react\";\nimport { useGetAccountsForRefinancingStepChanges } from \"../Rework/utils\";\nimport * as reworkApi from \"../Rework/api\";\nimport { RepaidLiabilitiesEditForm } from \"./RepaidLiabilitiesEditForm\";\n\ntype Props = {\n onConfirm: TaskEither;\n onBack: IO;\n reworkData: Rework;\n};\n\nexport const RepaidLoans = (props: Props) => {\n const isMobileLayout = useIsMobileLayout();\n const formatMessage = useFormatMessage();\n const stepComments = useCommand(reworkApi.stepComments);\n const [repaidLoans] = useQuery(getRepaidLoans);\n const submitLoans = useCommand(submitRepaidLoans);\n\n const reworkedAccounts = pipe(\n props.reworkData.oldValues,\n option.chain(oldValues => oldValues.accountsForRefinancingData),\n option.chain(accounts => accounts.externalLoans)\n );\n\n const getAccountsForRefinancingStepChanges = useGetAccountsForRefinancingStepChanges(\n pipe(\n repaidLoans,\n remoteData.fold(\n constant([]),\n constant([]),\n response => response.liabilitiesList\n )\n ),\n pipe(\n reworkedAccounts,\n option.map(v => v.liabilitiesList)\n )\n );\n\n const comments = useRemoteData(\n useMemo(() => stepComments({ reworkCategories: [\"CONTRACT\"] }), [])\n );\n\n const reworkComments = pipe(\n comments,\n remoteData.fold(\n () => option.none,\n () => option.none,\n comments => option.some(comments)\n )\n );\n\n const reworkBanner = (comments: Option) => {\n return pipe(\n props.reworkData.oldValues,\n option.fold(constNull, () => (\n \n \n \n ))\n );\n };\n\n const areReworkChanges =\n option.isSome(getAccountsForRefinancingStepChanges) &&\n getAccountsForRefinancingStepChanges.value.length > 0;\n\n const areReworkComments =\n option.isSome(reworkComments) &&\n option.isSome(reworkComments.value.stepComments) &&\n reworkComments.value.stepComments.value.length > 0;\n\n const externalLiabilities = (accounts: ExternalLoansList) => (\n \n \n \n {formatMessage(\n \"StandardLoan.AccountsForRefinancing.ExternalLiabilities.title\"\n )}\n \n \n {formatMessage(\n \"StandardLoan.AccountsForRefinancing.ExternalLiabilities.subTitle\"\n )}\n \n \n pipe(\n {\n ...accounts,\n externalLoans: option.some(externalLoansList),\n },\n submitLoans,\n taskEither.chain(() => props.onConfirm)\n )\n }\n oldValues={reworkedAccounts}\n />\n \n );\n\n return (\n \n \n {isMobileLayout && }\n \n {(areReworkChanges || areReworkComments) &&\n reworkBanner(reworkComments)}\n\n \n \n \n \n {formatMessage(\"StandardLoan.RepaidLoans.subTitle\")}\n \n \n {pipe(\n repaidLoans,\n remoteData.fold(\n () => ,\n () => (\n {formatMessage(\"GenericError\")}\n ),\n resposne => <>{externalLiabilities(resposne)}\n )\n )}\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { LocaleKey, useFormatMessage } from \"../../intl\";\nimport { array, option, taskEither } from \"fp-ts\";\nimport { constTrue, constVoid, pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport {\n Box,\n ErrorBanner,\n Loader,\n LoadingButton,\n Space,\n Stack,\n useForm,\n validators,\n} from \"design-system\";\nimport {\n ExternalLoanItem,\n ExternalLoansListRework,\n loanProviders,\n loanProviderSelected,\n LoanType,\n RepaidLoansList,\n} from \"../api\";\nimport { RepaidLiabilityFormModel } from \"../domain\";\nimport { useValidators } from \"../../Common/useValidators\";\nimport { foldTenant, MoneyAmount } from \"../../globalDomain\";\nimport { useCommand, useQuery } from \"../../useAPI\";\nimport * as remoteData from \"../../RemoteData\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { useState } from \"react\";\nimport { ReaderTaskEither } from \"fp-ts/ReaderTaskEither\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport { RepaidLiabilitiesEdititableItem } from \"./RepaidLiabilitiesEditableItem\";\n\nexport type CreditorConfig = {\n accountPlaceholder: LocaleKey;\n variableSymbolPlaceholder: Option;\n accountForDisbursment: Option;\n accountReadonly: boolean;\n};\n\ntype Props = {\n liabilities: ExternalLoanItem[];\n onSubmit: ReaderTaskEither;\n oldValues: Option;\n};\n\nexport function RepaidLiabilitiesEditForm(props: Props) {\n const [loanProviderListQuery] = useQuery(loanProviders);\n const formatMessage = useFormatMessage();\n\n return pipe(\n loanProviderListQuery,\n remoteData.fold(\n () => ,\n () => {formatMessage(\"GenericError\")},\n loanProviders => (\n \n )\n )\n );\n}\n\nfunction RepaidLiabilitiesEditFormInternal(\n props: Props & {\n loanProviderList: NonEmptyArray<{\n code: NonEmptyString;\n name: NonEmptyString;\n }>;\n }\n) {\n const formatMessage = useFormatMessage();\n const { nonEmptyString } = useValidators();\n\n const loanProviderSelectedCommand = useCommand(loanProviderSelected);\n const {\n apiParameters: { tenant },\n } = useAppContext();\n\n const defaultCreditorConfig: CreditorConfig = foldTenant(\n tenant,\n () => ({\n accountPlaceholder:\n \"StandardLoan.AccountsForRefinancing.accountForDisbursmentPlaceholder\",\n variableSymbolPlaceholder: option.some(\n \"StandardLoan.AccountsForRefinancing.vsDefaultPlaceholder\"\n ),\n accountForDisbursment: option.none,\n accountReadonly: false,\n }),\n () => ({\n accountPlaceholder:\n \"StandardLoan.AccountsForRefinancing.accountForDisbursmentPlaceholder\",\n variableSymbolPlaceholder: option.some(\n \"StandardLoan.AccountsForRefinancing.vsDefaultPlaceholder\"\n ),\n accountForDisbursment: option.none,\n accountReadonly: false,\n })\n );\n\n const [creditorConfigs, setCreditorConfigs] = useState(\n Array(props.liabilities.length).fill({ ...defaultCreditorConfig })\n );\n\n // This dummy validator is to avoid a known error in useForm fieldArrayValidator\n const workAroundAlwaysRightValidator = () =>\n validators.fromPredicate(constTrue, formatMessage(\"GenericError\"));\n\n const { fieldArray, handleSubmit } = useForm(\n {\n initialValues: {\n externalLiabilities: props.liabilities.map(\n liability =>\n ({\n ...liability,\n creditorName: pipe(\n liability.creditor,\n option.getOrElse(() => \"\")\n ),\n } as RepaidLiabilityFormModel)\n ),\n },\n fieldValidators: () => ({}),\n fieldArrayValidators: () => ({\n externalLiabilities: {\n creditorName: validators.inSequence(\n nonEmptyString,\n validators.fromPredicate(\n text =>\n props.loanProviderList.filter(lp => lp.name === text).length >\n 0,\n formatMessage(\"StandardLoan.AccountsForRefinancing.wrongBankName\")\n )\n ),\n recordId: workAroundAlwaysRightValidator(),\n originalAmount: workAroundAlwaysRightValidator(),\n type: workAroundAlwaysRightValidator(),\n },\n }),\n },\n {\n onSubmit: values =>\n pipe(\n {\n liabilitiesList: values.externalLiabilities.map(liability => ({\n ...liability,\n creditor: option.some(liability.creditorName),\n creditorCode: pipe(\n props.loanProviderList,\n array.findFirstMap(lp =>\n lp.name === liability.creditorName\n ? option.some(lp.code)\n : option.none\n )\n ),\n })),\n },\n props.onSubmit\n ),\n }\n );\n\n const submitButton = (\n \n \n \n );\n\n const externalLiabilitiesFieldArray = fieldArray(\"externalLiabilities\");\n\n const setCreditorConfigByIndex = (\n creditorConfig: CreditorConfig,\n index: number\n ) => {\n const newConfig = { ...creditorConfigs };\n newConfig[index] = creditorConfig;\n setCreditorConfigs(newConfig);\n };\n\n const updateCreditorConfig = (\n creditor: NonEmptyString,\n loanType: LoanType,\n index: number\n ) =>\n foldTenant(tenant, constVoid, () =>\n pipe(\n loanProviderSelectedCommand({\n creditor,\n type: loanType,\n }),\n taskEither.fold(\n () =>\n taskEither.fromIO(() =>\n setCreditorConfigByIndex(defaultCreditorConfig, index)\n ),\n provider =>\n taskEither.fromIO(() =>\n pipe(\n provider,\n option.fold(\n () => setCreditorConfigByIndex(defaultCreditorConfig, index),\n provider =>\n setCreditorConfigByIndex(\n {\n accountPlaceholder: provider.accountForDisbursmentHint,\n variableSymbolPlaceholder: provider.variableSymbolHint,\n accountForDisbursment: provider.accountForDisbursment,\n accountReadonly: provider.accountReadonly,\n },\n index\n )\n )\n )\n )\n )\n )()\n );\n\n return (\n \n {externalLiabilitiesFieldArray.items.map(\n ({ fieldProps, namePrefix }, index) => (\n \n updateCreditorConfig(\n creditorCode,\n fieldProps(\"type\").value,\n index\n )\n }\n creditorConfig={creditorConfigs[index]}\n oldValues={pipe(\n props.oldValues,\n option.chain(oldValues => {\n // Sometimes we receive an undefined value that cause\n // problems to the ExternalLiabilitiesEdititableItem component\n const value = oldValues.liabilitiesList[index];\n if (value !== undefined) {\n return option.some(value);\n } else {\n return option.none;\n }\n })\n )}\n />\n )\n )}\n\n \n {submitButton}\n \n );\n}\n","import {\n Box,\n Card,\n ComputedFieldProps,\n Form,\n FormRow,\n FormSection,\n ReadOnlyField,\n useLoadingStatusRead,\n} from \"design-system\";\nimport { CreditorData, ExternalLoanItemRework } from \"../api\";\nimport { getTypeOfProductLabel, RepaidLiabilityFormModel } from \"../domain\";\nimport { CreditorAutocompleteField } from \"../Refinancing/CreditorAutocompleteField\";\nimport { ReadOnlyMoneyAmountField } from \"../../Common/ReadOnlyMoneyAmountField/ReadOnlyMoneyAmountField\";\nimport { useFormatMessage } from \"../../intl\";\nimport { pipe } from \"fp-ts/function\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport { Option } from \"fp-ts/Option\";\nimport { option } from \"fp-ts\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { CreditorConfig } from \"../Refinancing/ExternalLiabilitiesEditForm\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { useReworkComparator } from \"../Rework/useReworkComparator\";\n\ntype Props = {\n namePrefix: string;\n fieldProps: (\n name: K\n ) => ComputedFieldProps;\n loanProviders: NonEmptyArray;\n onCreditorNameChanged: Reader;\n creditorConfig: CreditorConfig;\n oldValues: Option;\n};\n\nexport function RepaidLiabilitiesEdititableItem(props: Props) {\n const formatMessage = useFormatMessage();\n const { isSubmitting } = useLoadingStatusRead();\n\n const wrapper = pipe(\n props.oldValues,\n option.map(oldValues => ({ item: option.some(oldValues) }))\n );\n\n const { reworkFieldProps } = useReworkComparator(wrapper);\n\n const typeOfProductField = (\n \n );\n\n const originalAmountField = (\n \n );\n\n return (\n \n \n
\n \n \n {typeOfProductField}\n {\n props.onCreditorNameChanged(suggestion.code);\n }}\n loanProviders={props.loanProviders}\n />\n \n \n {originalAmountField}\n {null}\n \n \n
\n
\n
\n );\n}\n"],"sourceRoot":""}