{"version":3,"sources":["StandardLoan/FollowUpAndSignature/LowRiskClient/LowRiskClientState.ts","StandardLoan/IncomeForm/commons/useControlledSubmit.tsx","StandardLoan/IncomeForm/commons/CompanyInfoRow.tsx","StandardLoan/IncomeForm/commons/MonthYearField.tsx","StandardLoan/IncomeForm/Forms/PensionerForm/domain.ts","StandardLoan/IncomeForm/commons/Utils.ts","StandardLoan/IncomeForm/domain.ts","StandardLoan/IncomeForm/Forms/CompanyOwnerForm/IncomeSection/domain.ts","StandardLoan/IncomeForm/commons/PaymentMethodRadioGroup.tsx","StandardLoan/IncomeForm/commons/JobPositionsDropdown.tsx","StandardLoan/FollowUpAndSignature/LowRiskClient/CheckingContracts.tsx","StandardLoan/FollowUpAndSignature/HighRiskClient/HighRiskClientState.ts","StandardLoan/FollowUpAndSignature/LowRiskClient/EmptyPanel.treat.ts","StandardLoan/FollowUpAndSignature/LowRiskClient/CheckingContractsLoader.tsx","StandardLoan/IncomeForm/IncomeForm.tsx","StandardLoan/IncomeForm/commons/MonthlyIncomeField.tsx","StandardLoan/IncomeForm/commons/CurrencyDropdown.tsx","StandardLoan/IncomeForm/Forms/CompanyOwnerForm/CompanySection.tsx","StandardLoan/IncomeForm/Forms/TradesManForm/CompanySection/Fields/BusinessSectorField.tsx","StandardLoan/IncomeForm/Forms/PensionerForm/utils.ts","StandardLoan/FollowUpAndSignature/HighRiskClient/UnableToProceed.tsx","StandardLoan/IncomeForm/Forms/EmployedForm/index.tsx","StandardLoan/IncomeForm/Forms/TradesManForm/CompanySection/CompanySection.tsx","StandardLoan/IncomeForm/Forms/TradesManForm/IncomeSection/IncomeSection.tsx","StandardLoan/IncomeForm/Forms/TradesManForm/IncomeSection/Fields/R37Field.tsx","StandardLoan/IncomeForm/Forms/TradesManForm/IncomeSection/Fields/R39Field.tsx","StandardLoan/FollowUpAndSignature/api.ts","StandardLoan/IncomeForm/Forms/AlimonyCard.tsx","StandardLoan/IncomeForm/Forms/CompanyOwnerForm/CompanyOwnerCard.tsx","StandardLoan/IncomeForm/Forms/CompanyOwnerForm/ContractSection/ContractSection.tsx","StandardLoan/IncomeForm/Forms/CompanyOwnerForm/ContractSection/EmploymentTypeDropdown.tsx","StandardLoan/IncomeForm/Forms/CompanyOwnerForm/IncomeSection/IncomeSection.tsx","StandardLoan/IncomeForm/commons/AmountWithCurrencyField.tsx","StandardLoan/IncomeForm/commons/EmploymentTypeDropdown.tsx","StandardLoan/IncomeForm/Forms/FreelancerCard.tsx","StandardLoan/IncomeForm/commons/FreelancerTypeDrowdown.tsx","StandardLoan/IncomeForm/Forms/MaternityLeaveForm/index.tsx","StandardLoan/IncomeForm/commons/AllowanceTypeDropdown.tsx","StandardLoan/IncomeForm/Forms/PensionerForm/PensionerCard.tsx","StandardLoan/IncomeForm/Forms/PensionerForm/PensionerForm.tsx","StandardLoan/IncomeForm/Forms/PensionerForm/PensionerTypeDropdown.tsx","StandardLoan/IncomeForm/Forms/TradesManForm/TradesManCard.tsx","StandardLoan/IncomeForm/Forms/TradesManForm/IncomeSection/Fields/R101Field.tsx","StandardLoan/IncomeForm/Forms/TradesManForm/IncomeSection/Fields/RentFields.tsx","StandardLoan/FollowUpAndSignature/FollowUpAndSignature.tsx","StandardLoan/FollowUpAndSignature/CreateProfileWithRemoteCredentials.tsx","StandardLoan/FollowUpAndSignature/LowRiskClient/CheckingRemoteClientSignature.tsx","StandardLoan/FollowUpAndSignature/useDocumentStateFold.ts","StandardLoan/FollowUpAndSignature/LowRiskClient/CheckingContractsWithStatusCheck.tsx","StandardLoan/FollowUpAndSignature/CreateProfile.tsx","StandardLoan/FollowUpAndSignature/FollowUpAndSignatureState.ts","StandardLoan/FollowUpAndSignature/HighRiskClient/HighRiskClient.tsx","StandardLoan/FollowUpAndSignature/HighRiskClient/PasswordForCommunication.tsx","StandardLoan/FollowUpAndSignature/LowRiskClient/LowRiskClient.tsx","StandardLoan/FollowUpAndSignature/LowRiskClient/AfterSignature.tsx","StandardLoan/IncomeForm/api.ts"],"names":["foldState","f","state","type","creating","created","existingClient","foldClientStatus","whenPending","whenError","whenDone","status","foldRemoteSignatureStatus","whenSigning","foldSignatureStatus","whenNone","signatureStatus","saveUserIDAction","userID","option","some","saveSecurityPINAction","securityPIN","savePasswordAction","password","setActiveItemAction","activeItem","onUserCreationErrorAction","reducer","action","pipe","map","i","error","none","useControlledSubmit","props","handleSubmit","valuesRef","useEffect","canSubmit","setTimeout","taskEither","chain","fromIO","current","fold","Error","onDataReady","orElse","onFailure","submitTrigger","incomeSourceFieldTexts","Employed","name","label","placeholder","ico","Freelancer","CompanyOwner","TradesmanCoOperatingPerson","CompanyInfoRow","formatMessage","useFormatMessage","Name","ICO","useCompanyFields","texts","incomeSourceType","companyNameFieldProps","onSelectSuggestion","syncCompanyFields","onValidationChange","onCompanyNameValidationChange","companyIcoFieldProps","onCompanyIcoValidationChange","TextFieldOption","fieldProps","initialValue","onChange","value","boolean","getOrElse","PhoneFieldOption","length","AutocompleteFieldOption","loadingMessage","suggestionStatus","suggestionsStatus","Countries","countriesFieldProps","dropdownProps","countries","useQuery","identificationApi","result","remoteData","constant","identity","options","mapCountriesToOptions","selectedValue","console","log","selectedDropdownOption","dropdownOptionToValue","searchable","clearable","ClientWithoutICO","rework","reworkAll","initialValues","onSelectCitySuggestion","onSelectStreetSuggestion","dataForClientWithoutIco","phoneValue","specialFieldsReworkFieldProps","useReworkComparator","addIcoInitialState","constFalse","addIco","setAddIco","useState","currentYear","Date","getFullYear","fetchCitySuggestions","useCommand","skipTracking","noSuggestions","right","cityQueryTerms","useDebounceState","citySuggestions","useRemoteData","useMemo","searchTerm","replace","country","searchTermRegExp","cityAndProvince","test","blocks","match","fromNullable","city","provinceName","splitSearchTerm","streetQueryTerms","fetchstreetSuggestions","streetSuggestions","streetName","zipCode","cityName","clientCountry","clientCity","clientStreet","street","clientHouseNr","houseNumber","clientZipCode","employmentTypeReworked","isReworked","incomeSourceReworked","disabled","isEditing","reworkDependent","nameOfEntrepreneur","isSome","entrepreneurIco","businessSector","constNull","businessStartingDate","maxYear","minYear","monthSelectionYearLimit","checkMonthLimit","phone","autocompleteInputStatusFromRemoteData","suggestion","getCitySuggestionLabel","unsafeLocalizedString","houseNr","addIcoCheckBox","isOptionTrue","getMonthYearOption","month","year","sequenceS","MonthYearField","formatMonth","useFormatMonth","isRenderInverted","inverted","monthOptions","months","yearOptions","array","range","ascending","reverse","unsafePositiveInteger","setMonth","setYear","monthDropdownRef","useRef","yearDropdownRef","onBlurDropdown","document","activeElement","select","inputRef","onBlur","onChangeDropdown","monthYear","renderMonthDropDown","labelId","ref","width","id","isDisabled","aria-labelledby","issueType","issues","fieldIssues","issuesType","fieldLabel","cancelLabel","clearSelectionLabel","filterInputPlaceholder","noResultsLabel","renderMonth","selectedYear","defaultMonth","onChangeYear","firstTime","setFirstTime","resetFlag","renderYear","autoFocus","description","assistiveText","units","PensionTypeCZ","t","Disability","OldAge","Orphans","Widower","Retirement","PensionTypeSK","FullInvalidityPension","RetirementAnnuity","OtherPensionOrAllowance","Bursary","PensionType","Policeman","FireRescueCorps","CustomAdministration","PrisonService","GeneralInspectorate","SecurityInformationService","OfficeForForeignRelations","FormerArmyMembers","Other","getEmptyAllowanceInfo","allowanceAmount","receivesAllowance","getEmptyContractInfo","alsoEmployeeOfTheCompany","contractIndefinitePeriod","contractPeriodExpiration","employedInSpecificProfessions","employmentType","inProbation","lengthOfUninterruptedCurrentEmployment","lengthOfUninterruptedOverallEmployment","paymentMethod","paymentMethodLabel","startingDate","workBasedOnAgreementOnWorkingActivity","jobPosition","getEmptyCompanyInfo","applicantsShareHigherThan33","companyIco","companyName","equityPositive","freelancerType","nameOf3P","stakeInCompany","getEmptyIncomeInfo","incomeSource","alimonyIncomeDetails","amortizationOfRentedRe","annualGrossIncome","bruttoComissions","businessGrossIncome","currency","employedInCompany","equityFromLastYear","grossIncomes","incomeAsDeductibleExpenses","incomeDescription","incomeFromRentContract","incomeSourceLabel","isApplicantDeclareAsUserInDeclaration","isCooperativeOwnership","keepsAccountancy","maternityOrParentalIncomeDetails","monthlyIncome","negativeBusinessProfit","pensionerIncomeDetails","profitForLastPeriod","isProfitPeriodPositive","profitSharingIncome","r101BruttoIncomes","r201IncomeFromLease","r37PartialTaxBase","r38PartialTaxBase","r39PartialTaxBase","r74TaxAfterClaimedRelief","reCoOwned","reInPersonalOwnership","reUsedAsCollateral","salaryCurrency","sumOfPaidShareOfProfit","tax","taxBase","typeOfIncome","typeOfRent","youngPeopleConditions","hasAdditionalIncome","hasInfoFromTaxReturn","getEmptyIncomeInfoSpecial","specialTypeOfIncome","notInTheFutureMonthYearValidator","errorMessage","emptyFieldErrorMessage","monthYearValidator","a","b","notInThePastMonthYearValidator","compare","validators","inSequence","definedNoExtract","fromPredicate","constOptionNoneValidator","useFormatTypeOfRent","pattern","RentFromOtherRealEstate","RentFromPledgedRealEstate","getCompanyNameWithDefault","incomeData","companyInfo","alt","incomeOptions","companyNameDefault","getCompanyIcoWithDefault","companyIcoDefault","useUniqueCompanyValidators","alreadySelectedCompanies","blackList","undefined","find","item","StandardIncomeSourceType","EmployedAbroad","SpecialType","IncomeSourceType","SpecialIncomeSourceTypeCZ","Alimony","MaternityLeave","Pensioner","SpecialIncomeSourceTypeSK","SpecialIncomeSourceType","AllowanceInfo","optionFromUndefined","NonNegative","PaymentMethodSK","SalarySentUCB","SalarySentOtherBank","PaymentInCash","PaymentMethodCZ","Cash","BankTransfer","PaymentMethod","CompanyInfo","NonEmptyString","MonthYear","ContractInfo","api","LocalizedString","AlimonyIncomeDetails","alimonyChildrenInvolved","alimonyIdentifiable","alimonyOutsideCountry","monthlyAlimonyIncome","alimonyCurrency","MaternityOrParentalIncomeDetails","allowanceType","monthlySocialBenefit","PensionerIncomeDetails","monthlyPension","monthlyRent","pensionType","StandardIncomeSourceInfo","SpecialIncomeSourceInfo","IncomeSourceInfo","IncomeInfoNoSource","Currency","TypeOfRent","IncomeInfo","foldIncomeBySource","matches","info","whenSpecial","whenStandard","IncomeOutput","allowanceInfo","contractInfo","incomeInfo","uniqueId","hasPreapprovedLimits","IncomeOptionsOutput","incomeDefault","sourceOfIncomeDefault","sourceOfIncomeOptions","nonEmptyArray","specialTypeOfIncomeDefault","specialTypeOfIncomeOptions","startDateEmploymentDefault","startDateMonthOptions","PositiveInteger","startDateYearOptions","incomeSourceList","specialIncomeSourceList","useFormatEmploymentType","useFormatAllowanceType","useFormatPaymentMethod","useFormatIncomeSourceType","PaymentMethodRadiogroup","apiParameters","tenant","useAppContext","formatPaymentMethod","paymentMethods","foldTenant","record","keys","variant","optionKey","toString","renderOption","renderOptionChildren","isOptionDisabled","JobPositionDropdown","tuple","fst","key","findFirst","o","toLowerCase","getSelectedDropdownOption","dropdownOption","v","CheckingContractsWithDocuments","lfStatus","setLfStatus","foldDocumentState","documentState","useDocumentStateFold","signingRemoteContractsAlreadyPrepared","isCredentialsAndSigningRemote","preContractualDocuments","useAPI","getTermsAndConditions","contractRead","marketingConsent","termsAndConditionsReceived","authorizeWithOTP","verifyOtpCommand","checkApplicationStatus","phoneNumber","generateOtpCommand","input","response","authorize","transactionId","onApplicationRejected","left","genericError","authorizeWithPushCommand","authorizeWithPushTLS","smartKeyApi","generateAuthorizationQRCommand","checkAuthorizationPushPath","checkAuthorizationQRPath","authorizeWithPush","applicationRejected","generateAuthorizationQR","is","authMethod","authenticationMethod","authorizationError","setAuthorizationError","canStartPinAuthorization","rejected","renderContent","children","column","className","cx","classes","inlineReadingCheckbox","showReadingConfirm","flowType","skipContracts","showMarketingConsent","showContractsAgreement","promotion","onContinue","onContinueRemoteSigning","onAfterSignature","signatureProps","foldExistingClientAuthenticationMethod","ID","onSignFailure","constVoid","PUSH_NOTIFICATION","onFailedSignature","QR","EXTERNAL_PUSH_NOTIFICATION","PIN","beforeAuthorizationAction","canStartAuthorization","onReadContract","docId","documentRead","onUnreadContract","onTermsAndConditionsReceived","onMarketingConsentExpressed","accepted","getDocuments","showBackButton","onBack","mustReadAllDocuments","hideDocumentsSignatureBox","startCheckingRemoteSignature","shouldVerifySignatureStatus","isRiskyClient","heading","subheading","size","actions","CheckingContracts","content","feedbackBlock","errId","exists","passwordForCommunication","unableToProceed","unableToProceedAction","panelVariants","active","panel","CheckingContractsLoader","grow","shrink","weight","hAlignContent","align","inlineLoaderMessage","IncomeForm","nonNegativeNumber","defined","useValidators","validatedValues","formatIncomeSourceType","tenantCurrency","useTenantCurrency","resetIncomeData","initialIncomeAmount","data","values","setValues","setTouched","useForm","sourceOfIncome","specialSourceOfIncome","fieldValidators","income","constUndefined","onSubmit","reworkData","isSpecialTypeIncome","selectedCard","abroad","isMainIncome","isCancelling","handleCancel","onCancel","title","AverageNetMonthlyIncome","IncomeTypeSelection","onReset","onChangeIncomeSourceType","foldIncome","toUndefined","src","min","max","style","flexShrink","isSourceReworked","isSpecialTypeReworked","sourceOptions","specialSourceOptions","formatIssues","condition","existingIssues","isNone","warnings","sourceOfIncomeField","specialSourceOfIncomeField","MonthlyIncome","formatCurrency","useFormatIncomeCurrency","rightContent","locale","CurrencyDropdown","currenciesResponse","currencies","setCurrencies","curr","defaultCurrency","STAKELIMIT","CompanySection","formatOptions","maximumFractionDigits","onDismiss","inline","BusinessSectorField","businessSectors","empty","useFormatPensionType","UnableToProceed","config","ezyPageURL","window","open","EmployedCard","validCompanyNameRequired","validCompanyIcoRequired","amountMinMax","startingDateMinYear","years","sort","uniqueCompanyNameValidator","uniqueCompanyIcoValidator","altW","overallEmploymentShown","setOverallEmploymentShown","contractExpirationShown","setContractExpirationShown","contractIndefinitePeriodShown","setContractIndefinitePeriodShown","probationFieldShown","setProbationFieldShown","paymentMethodShown","setPaymentMethodShown","workBasedOnAgreementOnWorkingActivityShown","setWorkBasedOnAgreementOnWorkingActivityShown","companyNameIsValid","setCompanyNameIsValid","companyIcoIsValid","setCompanyIcoIsValid","setFormState","resetForm","validateIfDefined","share","isValid","ContractsForm","showContractExpirationDate","showContractExpiration","showContractIndefinitePeriod","constTrue","contractTypeReworked","startingDateReworked","showProbationField","startMonthYear","expirationMonthYear","expirationIsIn24MonthFromStartingDate","starting","expiration","showLengthOfOverallEmploymentField","showWorkBasedOnAgreement","showPaymentMethod","CompanySectionCZ","CompanySectionSK","businessSectorFieldProps","businessStartingDateFieldProps","IncomeSectionCZ","keepAccountancy","keepsAccountancyFieldProps","toNullable","equityPositiveFieldProps","r39Value","r39PartialTaxBaseFieldProps","r39AdditionalFields","r201IncomeFromLeaseFieldProps","reInPersonalOwnershipFieldProps","reUsedAsCollateralFieldProps","incomeFromRentContractFieldProps","addInfoFromTaxReturn","setAddInfoFromTaxReturn","equityFromLastYearFieldProps","grossIncomesFieldProps","r37PartialTaxBaseFieldProps","icon","PlusIcon","r101BruttoIncomesFieldProps","IncomeSectionSK","taxBaseFieldProps","taxFieldProps","businessGrossIncomeFieldProps","R37Field","R39Field","PrepareDocumentsStatus","STARTED","KYC_REJECTED","PrepareDocumentsOutput","prepareDocuments","apiCall","inputCodec","inputEq","eq","fromEquals","outputCodec","path","DocumentsPreparedStatus","retry","success","CheckDocumentsPreparedOutput","checkDocumentPrepared","AlimonyCard","reworkFieldProps","reworkedAlimony","alimonyField","details","monthlyAlimonyIncomeReworked","alimonyChildrenInvolvedReworked","alimonyIdentifiableReworked","alimonyOutsideCountryReworked","alimonyCurrencyReworked","Math","round","CompanyOwnerCard","equity","inCompany","typeOfEmployment","decode","fromEither","employedInCompanyReworked","employmentTypeFieldProps","jobPositionFieldProps","contractIndefinitePeriodFieldProps","employedInCompanyFieldProps","inProbationFieldProps","paymentMethodFieldProps","startingDateFieldProps","workBasedOnAgreementOnWorkingActivityFieldProps","isEquityPositive","ContractSection","inProbationField","isStakeInCompanyOverStakeLimit","EmploymentTypeDropdown","formatEmploymentType","dropdownOptions","EmploymentType","collect","IncomeSection","AmountWithCurrencyField","FreelancerCard","amountMinMaxWithNegative","validCompanyIco","validAddressField","validStreetNumber","validPhone","nonBlankString","amountValidator","SKOnlyAmountValidator","shouldValidateCompanyIco","entrepreneurIcoOption","workAroundAlwaysRightValidator","onAddInfoFromTaxReturn","onCloseAddInfoFromTaxReturnSection","isOptionActuallyFalse","keepAccountancyReworked","clientPhone","somePhoneValue","FreelancerTypeDropdown","freelancer","MaternityLeaveCard","reworkedMaternityLeave","maternityField","monthlySocialBenefitReworked","allowanceTypeReworked","AllowanceTypeDropdown","PensionerCard","isRetirement","PensionerForm","reworkedPension","pensionField","pensionTypeReworked","monthlyPensionReworked","monthlyRentReworked","PensionTypeDropdown","formatPensionType","isOptionFalse","TradesManCard","needsRentFieldsValidation","reInPersonalOwnershipReworked","isCooperativeOwnershipReworked","companySection","incomeSection","r39","R101Field","RentFields","FollowUpAndSignature","setIsRiskyClient","getReworkDetails","reworkApi","loadingState","errorState","setState","reworkSteps","bracket","_","either","isLeft","needContractsUpdate","authInfo","useAuthenticationContext","flowId","parametersQuery","readParameters","isInPersonChannel","useIsInPersonChannel","parameters","riskyActivitiesOrPep","renderClientProfile","credentialStatus","onRemoteCredentialsExit","isRework","renderClientProfileWithRemoteCredentials","onComplete","onExit","isKycNeeded","createProfile","foldFlowType","when3P","whenHomeBanking","whenSmartBanking","whenInPerson","shouldAskCredential","whenTLSAgent","whenPWSRemote","gdprDialogDisplayed","setGdprDialogDisplayed","showGdprDialog","hideOnMobile","paperBased","CreateProfileWithRemoteCredentials","didCreateCredentials","setDidCreateCredentials","getCustomerStatusResult","usePolling","shouldPollingContinue","intervalMS","renderLoading","hasPassword","hasPin","hasUserId","onClose","withCountdown","isSLFlow","CreateProfileWithRemoteCredentialsAndKyc","CreateProfileWithRemoteCredentialsAndWithoutKyc","CheckingRemoteClientSignature","getRemoteSignatureStatus","pollingTimeout","setDocumentState","pollDocumentPrepared","Promise","resolve","then","clearTimeout","onLoading","onReady","onError","onRejectedKyc","CheckingContractsWithStatusCheck","getClientStatusResult","CreateProfile","preliminaryStatus","followUpPreliminaryStatus","statusCode","foldRiskType","whenHighRisk","whenLowRisk","HighRiskClient","submitCredentials","dispatch","useReducer","profile","userId","pin","leftIO","PasswordForCommunication","onSelect","headerIcon","submitLabel","isOpen","LowRiskClient","initialState","securityPINStep","setUkontoPinStep","next","flow","passwordStep","internalState","setUkontoPasswordStep","onProfileSubmit","accordionItems","userIdStepContent","initialUserId","onNext","newUserId","userIdStep","passwordStepContent","clientCredentialsFlow","items","filter","creatingState","createdState","AfterSignature","getSignatureStatus","height","vAlignContent","onRetrySignature","CurrenciesOutput","FreelancerType","Tenant","FreelancerTypesOutput","freelancerTypes","DataForClientWithoutIcoOutput","JobPosition","NonNegativeInteger","language","JobPositionsOutput","jobPositions","IndefiniteContract","LimitedContract","Agreement","SeasonalContract","AllowanceType","Parental","FutureParental","BusinessSector","BusinessSectorsOutput"],"mappings":"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","file":"static/js/index~ba800469.4f7c5f6f.chunk.js","sourcesContent":["import { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { option } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { IO } from \"fp-ts/IO\";\nimport { Reader } from \"fp-ts/Reader\";\nimport {\n ClientStatusOutput,\n RemoteSignatureStatusOutput,\n SignatureStatusOutput,\n} from \"../../api\";\nimport { pipe } from \"fp-ts/function\";\n\nexport type CreatingLowRiskClient = {\n type: \"CreatingLowRiskClient\";\n activeItem: Option;\n userID: Option;\n securityPIN: Option;\n password: Option;\n error: boolean;\n};\nexport type CreatedLowRiskClient = {\n type: \"CreatedLowRiskClient\";\n activeItem: Option;\n userID: Option;\n securityPIN: Option;\n password: Option;\n error: boolean;\n};\n\ntype ExistingClient = { type: \"ExistingClient\" };\n\nexport type State =\n | CreatingLowRiskClient\n | CreatedLowRiskClient\n | ExistingClient;\n\nexport function foldState(f: {\n creating: Reader;\n created: Reader;\n existingClient: Reader;\n}): (status: State) => T {\n return state => {\n switch (state.type) {\n case \"CreatingLowRiskClient\":\n return f.creating(state);\n case \"CreatedLowRiskClient\":\n return f.created(state);\n case \"ExistingClient\":\n return f.existingClient(state);\n }\n };\n}\n\nexport function foldClientStatus(\n whenPending: IO,\n whenError: IO,\n whenDone: IO\n): Reader {\n return ({ status }) => {\n switch (status) {\n case \"PENDING\":\n return whenPending();\n case \"ERROR\":\n return whenError();\n case \"DONE\":\n return whenDone();\n }\n };\n}\n\nexport function foldRemoteSignatureStatus(\n whenPending: IO,\n whenSigning: IO,\n whenError: IO,\n whenDone: IO\n): Reader {\n return ({ status }) => {\n switch (status) {\n case \"PENDING\":\n return whenPending();\n case \"SIGNING\":\n return whenSigning();\n case \"ERROR\":\n return whenError();\n case \"DONE\":\n return whenDone();\n }\n };\n}\n\nexport function foldSignatureStatus(\n whenNone: IO,\n whenPending: IO,\n whenError: IO,\n whenDone: IO\n): Reader {\n return ({ signatureStatus }) => {\n switch (signatureStatus) {\n case \"NONE\":\n return whenNone();\n case \"PENDING\":\n return whenPending();\n case \"ERROR\":\n return whenError();\n case \"DONE\":\n return whenDone();\n }\n };\n}\n\ntype SaveUserIDAction = {\n type: \"SaveUserID\";\n userID: Option;\n};\ntype SaveSecurityPINAction = {\n type: \"SaveSecurityPIN\";\n securityPIN: Option;\n};\ntype SavePasswordAction = {\n type: \"SavePassword\";\n password: NonEmptyString;\n};\ntype SetActiveItemAction = {\n type: \"SetActiveItem\";\n activeItem: Option;\n};\ntype OnUserCreationErrorAction = {\n type: \"OnUserCreationError\";\n};\n\nexport type Action =\n | SaveUserIDAction\n | SaveSecurityPINAction\n | SavePasswordAction\n | SetActiveItemAction\n | OnUserCreationErrorAction;\n\nexport function saveUserIDAction(userID: NonEmptyString): Action {\n return { type: \"SaveUserID\", userID: option.some(userID) };\n}\nexport function saveSecurityPINAction(securityPIN: NonEmptyString): Action {\n return { type: \"SaveSecurityPIN\", securityPIN: option.some(securityPIN) };\n}\nexport function savePasswordAction(password: NonEmptyString): Action {\n return { type: \"SavePassword\", password };\n}\nexport function setActiveItemAction(activeItem: Option): Action {\n return { type: \"SetActiveItem\", activeItem: activeItem };\n}\nexport function onUserCreationErrorAction(): OnUserCreationErrorAction {\n return {\n type: \"OnUserCreationError\",\n };\n}\n\nexport function reducer(state: State, action: Action): State {\n switch (state.type) {\n case \"CreatedLowRiskClient\":\n case \"CreatingLowRiskClient\":\n switch (action.type) {\n case \"SaveUserID\":\n return {\n ...state,\n userID: action.userID,\n activeItem: pipe(\n state.activeItem,\n option.map(i => i + 1)\n ),\n error: false,\n };\n case \"SaveSecurityPIN\":\n return {\n ...state,\n securityPIN: action.securityPIN,\n activeItem: pipe(\n state.activeItem,\n option.map(i => i + 1)\n ),\n error: false,\n };\n case \"SavePassword\":\n switch (state.type) {\n case \"CreatingLowRiskClient\":\n return {\n ...state,\n type: \"CreatedLowRiskClient\",\n password: option.some(action.password),\n activeItem: pipe(\n state.activeItem,\n option.map(i => i + 1)\n ),\n };\n case \"CreatedLowRiskClient\":\n return {\n ...state,\n type: \"CreatingLowRiskClient\",\n password: option.none,\n };\n }\n case \"SetActiveItem\":\n return { ...state, activeItem: action.activeItem };\n case \"OnUserCreationError\":\n return {\n ...state,\n error: true,\n };\n }\n case \"ExistingClient\":\n return state;\n }\n}\n","import { IO } from \"fp-ts/IO\";\nimport { pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { MutableRefObject, useEffect } from \"react\";\nimport { SelectedCompany } from \"../../domain\";\nimport { IncomeData } from \"../domain\";\nimport { TaskEither } from \"fp-ts/TaskEither\";\nimport { option, taskEither } from \"fp-ts\";\nimport { ReworkIncomeNoSourceOutput } from \"../../Rework/api\";\n\nexport type IncomeFormOptions = {\n isEditing: boolean;\n alreadySelectedCompanies: Option;\n};\n\nexport type IncomeCardProps = {\n canSubmit: boolean;\n isMainIncome: boolean;\n onDataReady: Reader;\n onFailure: IO;\n incomeData: IncomeData;\n options: IncomeFormOptions;\n rework: Option;\n employmentType: any;\n reworkAll: boolean;\n salaryCurrency: Option;\n monthlyIncome: Option;\n submitTrigger: number;\n};\n\nexport function useControlledSubmit(\n props: IncomeCardProps,\n handleSubmit: TaskEither,\n valuesRef: MutableRefObject>\n) {\n useEffect(() => {\n if (!props.canSubmit) {\n return;\n }\n\n setTimeout(\n () =>\n pipe(\n handleSubmit,\n taskEither.chain(() =>\n taskEither.fromIO(() =>\n pipe(\n valuesRef.current,\n option.fold(() => {\n throw new Error();\n }, props.onDataReady)\n )\n )\n ),\n taskEither.orElse(() => taskEither.fromIO(props.onFailure))\n )(),\n 100\n );\n }, [props.canSubmit, props.submitTrigger]);\n}\n","import {\n FormRow,\n ComputedFieldProps,\n // NonNegativeInteger,\n // LocalizedString,\n CheckboxField,\n FormSection,\n DropdownOption,\n LocalizedString,\n TextField,\n AutocompleteInputField,\n unsafeLocalizedString,\n SuggestionsStatus,\n} from \"design-system\";\nimport { LocaleKey, useFormatMessage } from \"../../../intl\";\nimport { useCompanyFields } from \"../../../Common/CompanyField/utils\";\nimport { CompanySuggestion } from \"../../../Common/CompanyField/domain\";\nimport { isOptionTrue, StandardIncomeSourceType } from \"../domain\";\nimport {\n constant,\n constFalse,\n constNull,\n identity,\n pipe,\n} from \"fp-ts/function\";\nimport { boolean, option, taskEither } from \"fp-ts\";\n// import { useState} from \"react\";\nimport { Option } from \"fp-ts/Option\";\nimport {\n isReworked,\n useReworkComparator,\n} from \"../../Rework/useReworkComparator\";\nimport { ReworkIncomeNoSourceOutput } from \"../../Rework/api\";\nimport { IncomeFormOptions } from \"./useControlledSubmit\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useCommand, useQuery } from \"../../../useAPI\";\nimport * as identificationApi from \"../../../IdUpload/api\";\nimport * as remoteData from \"../../../RemoteData\";\nimport {\n autocompleteInputStatusFromRemoteData,\n getCitySuggestionLabel,\n mapCountriesToOptions,\n} from \"../../../IdUpload/addressFormUtils\";\nimport {\n dropdownOptionToValue,\n selectedDropdownOption,\n} from \"../../../Common/selectDropdownOption\";\nimport { DropdownField } from \"../../../Common/DropdownField/DropdownField\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { BusinessSectorField } from \"../Forms/TradesManForm/CompanySection/Fields/BusinessSectorField\";\nimport { MonthYearField } from \"./MonthYearField\";\nimport { PhoneNumberField } from \"../../../Common/PhoneNumberField/PhoneNumberField\";\nimport { useDebounceState } from \"../../../Common/useDebounceState\";\nimport { useRemoteData } from \"../../../useRemoteData\";\nimport { CountryCode } from \"../../../globalDomain\";\nimport { DataForClientWithoutIcoOutput } from \"../api\";\nimport { RemoteData } from \"../../../RemoteData\";\n\ninterface CompanyFieldTexts {\n label: LocaleKey;\n placeholder: LocaleKey;\n}\n\ninterface CompanySectionFields {\n name: CompanyFieldTexts;\n ico: CompanyFieldTexts;\n}\n\ntype CustomTextsIncomeSourceType = Extract<\n StandardIncomeSourceType,\n \"Employed\" | \"Freelancer\" | \"CompanyOwner\" | \"TradesmanCoOperatingPerson\"\n>;\n\nconst incomeSourceFieldTexts: Record<\n CustomTextsIncomeSourceType,\n CompanySectionFields\n> = {\n Employed: {\n name: {\n label: \"StandardLoan.EmployedCard.CompanySection.companyNameLabel\",\n placeholder:\n \"StandardLoan.EmployedCard.CompanySection.companyNamePlaceholder\",\n },\n ico: {\n label: \"StandardLoan.EmployedCard.CompanySection.companyIcoLabel\",\n placeholder:\n \"StandardLoan.EmployedCard.CompanySection.companyIcoPlaceholder\",\n },\n },\n Freelancer: {\n name: {\n label: \"StandardLoan.FreelancerCard.CompanySection.companyNameLabel\",\n placeholder:\n \"StandardLoan.FreelancerCard.CompanySection.companyNamePlaceholder\",\n },\n ico: {\n label: \"StandardLoan.FreelancerCard.CompanySection.companyIcoLabel\",\n placeholder:\n \"StandardLoan.FreelancerCard.CompanySection.companyIcoPlaceholder\",\n },\n },\n CompanyOwner: {\n name: {\n label: \"StandardLoan.CompanyOwner.CompanySection.companyNameLabel\",\n placeholder:\n \"StandardLoan.CompanyOwner.CompanySection.companyNamePlaceholder\",\n },\n ico: {\n label: \"StandardLoan.CompanyOwner.CompanySection.companyIcoLabel\",\n placeholder:\n \"StandardLoan.CompanyOwner.CompanySection.companyIcoPlaceholder\",\n },\n },\n TradesmanCoOperatingPerson: {\n name: {\n label: \"StandardLoan.Tradesman.CompanySection.companyNameLabel\",\n placeholder:\n \"StandardLoan.Tradesman.CompanySection.companyNamePlaceholder\",\n },\n ico: {\n label: \"StandardLoan.Tradesman.CompanySection.companyIcoLabel\",\n placeholder:\n \"StandardLoan.Tradesman.CompanySection.companyIcoPlaceholder\",\n },\n },\n};\n\ntype Props = {\n incomeSourceType: CustomTextsIncomeSourceType;\n companyNameFieldProps: ComputedFieldProps;\n companyIcoFieldProps: ComputedFieldProps;\n syncCompanyFields: (suggestion: CompanySuggestion) => void;\n onCompanyNameValidationChange: (value: boolean) => unknown;\n onCompanyIcoValidationChange: (value: boolean) => unknown;\n};\n\nexport function CompanyInfoRow(props: Props) {\n const formatMessage = useFormatMessage();\n const { Name, ICO } = useCompanyFields();\n const texts = incomeSourceFieldTexts[props.incomeSourceType];\n\n return (\n \n \n \n \n );\n}\n\ntype TextFieldOptionProps = {\n fieldProps: ComputedFieldProps>;\n label: LocalizedString;\n placeholder: LocalizedString;\n initialValue: NonEmptyString;\n};\n\nfunction TextFieldOption({\n fieldProps,\n label,\n placeholder,\n initialValue,\n}: TextFieldOptionProps) {\n const onChange = (value: string) =>\n fieldProps.onChange(option.some(value as NonEmptyString));\n\n useEffect(\n () =>\n pipe(\n fieldProps.value,\n option.fold(\n () => {\n onChange(initialValue);\n },\n value =>\n pipe(\n value === \"\",\n boolean.fold(\n () => {\n onChange(value);\n },\n () => {\n if (initialValue !== value) {\n onChange(initialValue);\n }\n }\n )\n )\n )\n ),\n []\n );\n\n return (\n \"\")\n )}\n />\n );\n}\n\ntype PhoneFieldOptionProps = {\n fieldProps: ComputedFieldProps>;\n label: LocalizedString;\n placeholder: LocalizedString;\n initialValue: string;\n};\n\nfunction PhoneFieldOption({\n fieldProps,\n label,\n placeholder,\n initialValue,\n}: PhoneFieldOptionProps) {\n const onChange = (value: string) => fieldProps.onChange(option.some(value));\n\n useEffect(\n () =>\n pipe(\n fieldProps.value,\n option.fold(\n () => {\n onChange(initialValue);\n },\n value =>\n pipe(\n value === \"\" || value.length <= 4,\n boolean.fold(\n () => {\n onChange(value);\n },\n () => {\n if (initialValue !== value) {\n onChange(initialValue);\n }\n }\n )\n )\n )\n ),\n []\n );\n\n return (\n \"\")\n )}\n />\n );\n}\n\ntype AutocompleteFieldOptionProps = {\n fieldProps: ComputedFieldProps>;\n label: LocalizedString;\n placeholder: LocalizedString;\n loadingMessage: LocalizedString;\n initialValue: NonEmptyString;\n suggestionStatus: SuggestionsStatus;\n onSelectSuggestion: (suggestion: DropdownOption) => unknown;\n};\n\nfunction AutocompleteFieldOption({\n fieldProps,\n label,\n placeholder,\n initialValue,\n loadingMessage,\n suggestionStatus,\n onSelectSuggestion,\n}: AutocompleteFieldOptionProps) {\n const onChange = (value: string) =>\n fieldProps.onChange(option.some(value as NonEmptyString));\n\n useEffect(\n () =>\n pipe(\n fieldProps.value,\n option.fold(\n () => {\n onChange(initialValue);\n },\n value =>\n pipe(\n value === \"\",\n boolean.fold(\n () => {\n onChange(value);\n },\n () => {\n if (initialValue !== value) {\n onChange(initialValue);\n }\n }\n )\n )\n )\n ),\n []\n );\n\n return (\n \"\")\n )}\n label={label}\n onChange={onChange}\n suggestionsStatus={suggestionStatus}\n onSelectSuggestion={onSelectSuggestion}\n placeholder={placeholder}\n loadingMessage={loadingMessage}\n />\n );\n}\n\ntype CountriesProps = {\n countriesFieldProps: ComputedFieldProps>;\n initialValue: Option;\n};\n\nexport function Countries({\n countriesFieldProps,\n initialValue,\n}: CountriesProps) {\n const formatMessage = useFormatMessage();\n\n const dropdownProps = countriesFieldProps;\n\n const countries = pipe(\n useQuery(identificationApi.allCountries),\n ([result]) => result,\n remoteData.fold(constant([]), constant([]), identity)\n );\n\n const options = mapCountriesToOptions(countries);\n\n const onChange = (value: Option>) => {\n dropdownProps.onChange(dropdownOptionToValue(value));\n };\n const selectedValue = pipe(\n dropdownProps.value,\n option.fold(\n () => {\n if (\n pipe(\n initialValue,\n option.getOrElse(() => \"\")\n ) !== \"\" &&\n initialValue !== dropdownProps.value\n ) {\n dropdownProps.value = initialValue;\n dropdownProps.onChange(initialValue);\n }\n return initialValue;\n },\n value => option.some(value)\n )\n );\n\n console.log(dropdownProps.value);\n return (\n \n );\n}\n\ntype ClientWithoutICOProps = {\n incomeSourceType: CustomTextsIncomeSourceType;\n fieldProps: any;\n rework: Option;\n reworkAll: boolean;\n initialValues: any;\n options: IncomeFormOptions;\n onSelectCitySuggestion: (suggestion: LocalizedString) => unknown;\n onSelectStreetSuggestion: (suggestion: string) => unknown;\n dataForClientWithoutIco: RemoteData;\n phoneValue: Option;\n};\n\nexport function ClientWithoutICO({\n fieldProps,\n rework,\n reworkAll,\n options,\n initialValues,\n onSelectCitySuggestion,\n onSelectStreetSuggestion,\n dataForClientWithoutIco,\n phoneValue,\n}: ClientWithoutICOProps) {\n const { specialFieldsReworkFieldProps } = useReworkComparator(rework);\n const formatMessage = useFormatMessage();\n const addIcoInitialState = pipe(\n fieldProps(\"addIco\").value,\n option.getOrElse(constFalse)\n );\n const [addIco, setAddIco] = useState(addIcoInitialState);\n const handleAddIco = (value: boolean) => {\n fieldProps(\"addIco\").value = option.some(value);\n fieldProps(\"addIco\").onChange(option.some(value));\n setAddIco(value);\n };\n\n const currentYear = new Date().getFullYear();\n\n const fetchCitySuggestions = useCommand(identificationApi.citySuggestions, {\n skipTracking: true,\n });\n const noSuggestions = taskEither.right(option.none);\n const cityQueryTerms = useDebounceState(\n pipe(\n fieldProps(\"city\").value,\n option.getOrElse(() => \"\")\n ),\n 500\n );\n const citySuggestions = useRemoteData(\n useMemo(\n () =>\n cityQueryTerms.length >= 2\n ? pipe(\n fetchCitySuggestions({\n searchTerm: cityQueryTerms.replace(/^.*,\\s*/, \"\"),\n country: pipe(\n initialValues.country,\n option.getOrElse(() => \"CZE\")\n ) as CountryCode,\n }),\n taskEither.map(option.some)\n )\n : noSuggestions,\n [cityQueryTerms]\n )\n );\n\n const searchTermRegExp = /(.+),\\s+(.+)/;\n function splitSearchTerm(\n searchTerm: string\n ): Option<{ city: NonEmptyString; provinceName: NonEmptyString }> {\n if (!searchTermRegExp.test(searchTerm)) return option.none;\n\n const blocks = searchTerm.match(searchTermRegExp);\n\n return pipe(\n option.fromNullable(blocks),\n option.map(blocks => ({\n city: blocks[1] as NonEmptyString,\n provinceName: blocks[2] as NonEmptyString,\n }))\n );\n }\n const cityAndProvince = splitSearchTerm(\n pipe(\n fieldProps(\"city\").value,\n option.getOrElse(() => \"\")\n )\n );\n const streetQueryTerms = useDebounceState(\n pipe(\n fieldProps(\"street\").value,\n option.getOrElse(() => \"\")\n ),\n 500\n );\n const fetchstreetSuggestions = useCommand(\n identificationApi.streetSuggestions,\n {\n skipTracking: true,\n }\n );\n const streetSuggestions = useRemoteData(\n useMemo(\n () =>\n streetQueryTerms.length >= 2\n ? pipe(\n fetchstreetSuggestions(\n pipe(\n cityAndProvince,\n option.fold(\n () => ({\n streetName: streetQueryTerms,\n zipCode: pipe(\n fieldProps(\"zipCode\").value,\n option.getOrElse(() => \"\")\n ),\n cityName: pipe(\n fieldProps(\"city\").value,\n option.getOrElse(() => \"\")\n ),\n provinceName: \"\",\n country: pipe(\n fieldProps(\"country\").value,\n option.getOrElse(() => \"\")\n ) as CountryCode,\n }),\n cityAndProvince => ({\n streetName: streetQueryTerms,\n zipCode: pipe(\n fieldProps(\"zipCode\").value,\n option.getOrElse(() => \"\")\n ),\n cityName: cityAndProvince.city,\n provinceName: cityAndProvince.provinceName,\n country: pipe(\n fieldProps(\"country\").value,\n option.getOrElse(() => \"\")\n ) as CountryCode,\n })\n )\n )\n ),\n taskEither.map(option.some)\n )\n : noSuggestions,\n [streetQueryTerms]\n )\n );\n\n const clientCountry = pipe(\n dataForClientWithoutIco,\n remoteData.fold(\n () => option.none,\n () => option.none,\n value => value.country\n )\n );\n const clientCity = pipe(\n dataForClientWithoutIco,\n remoteData.fold(\n () => option.none,\n () => option.none,\n value => value.city\n )\n );\n const clientStreet = pipe(\n dataForClientWithoutIco,\n remoteData.fold(\n () => option.none,\n () => option.none,\n value => value.street\n )\n );\n const clientHouseNr = pipe(\n dataForClientWithoutIco,\n remoteData.fold(\n () => option.none,\n () => option.none,\n value => value.houseNumber\n )\n );\n const clientZipCode = pipe(\n dataForClientWithoutIco,\n remoteData.fold(\n () => option.none,\n () => option.none,\n value => value.zipCode\n )\n );\n\n const employmentTypeReworked = isReworked(\n rework,\n \"contractInfo\",\n \"employmentType\"\n );\n const incomeSourceReworked = isReworked(rework, \"incomeInfo\", \"incomeSource\");\n const disabled = !options.isEditing;\n const reworkDependent = employmentTypeReworked || incomeSourceReworked;\n\n const nameOfEntrepreneur = (\n \n );\n\n const entrepreneurIco = (\n \n );\n\n const businessSector = pipe(\n addIco,\n boolean.fold(constNull, () => (\n \n \n \n ))\n );\n\n const businessStartingDate = pipe(\n addIco,\n boolean.fold(constNull, () => (\n \n ))\n );\n\n const country = pipe(\n addIco,\n boolean.fold(constNull, () => (\n \n \n \n ))\n );\n\n const phone = pipe(\n addIco,\n boolean.fold(constNull, () => (\n \n \"\")\n )}\n />\n \n ))\n );\n\n const city = pipe(\n addIco,\n boolean.fold(constNull, () => (\n \n \"\")\n ) as NonEmptyString\n }\n label={formatMessage(\"Identification.address.city\")}\n suggestionStatus={autocompleteInputStatusFromRemoteData(\n pipe(\n citySuggestions,\n remoteData.map(\n option.getOrElse(\n constant([])\n )\n )\n ),\n suggestion => ({\n value: suggestion,\n label: getCitySuggestionLabel(suggestion),\n })\n )}\n onSelectSuggestion={suggestion => {\n onSelectCitySuggestion(getCitySuggestionLabel(suggestion.value));\n }}\n placeholder={formatMessage(\"Identification.address.cityPlaceholder\")}\n loadingMessage={formatMessage(\"LoadingEllipsis\")}\n />\n \n ))\n );\n\n const street = pipe(\n addIco,\n boolean.fold(constNull, () => (\n \n \"\")\n ) as NonEmptyString\n }\n suggestionStatus={autocompleteInputStatusFromRemoteData(\n pipe(\n streetSuggestions,\n remoteData.map(\n option.getOrElse(\n constant([])\n )\n )\n ),\n suggestion => ({\n value: suggestion,\n label: unsafeLocalizedString(suggestion.streetName),\n })\n )}\n onSelectSuggestion={({ value }) => {\n onSelectStreetSuggestion(value.streetName);\n }}\n placeholder={formatMessage(\"Identification.address.streetName\")}\n loadingMessage={formatMessage(\"LoadingEllipsis\")}\n />\n \n ))\n );\n\n const houseNumber = pipe(\n addIco,\n boolean.fold(constNull, () => (\n \n \"\")\n ) as NonEmptyString\n }\n label={formatMessage(\"Identification.address.streetNumber\")}\n placeholder={formatMessage(\"Identification.address.streetNumber\")}\n />\n \n ))\n );\n\n const zipCode = pipe(\n addIco,\n boolean.fold(constNull, () => (\n \n \"\")\n ) as NonEmptyString\n }\n label={formatMessage(\"Identification.address.zipCode\")}\n placeholder={formatMessage(\"Identification.address.zipCode\")}\n />\n \n ))\n );\n\n const addIcoCheckBox = (\n \n \n \n );\n\n return (\n \n {addIcoCheckBox}\n {isOptionTrue(fieldProps(\"addIco\").value) && (\n \n {nameOfEntrepreneur}\n {entrepreneurIco}\n \n )}\n {businessSector}\n {businessStartingDate}\n {phone}\n {country}\n {city}\n {street}\n {houseNumber}\n {zipCode}\n \n );\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { option, array, boolean } from \"fp-ts\";\nimport { constNull, identity, pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { sequenceS } from \"fp-ts/Apply\";\nimport {\n Dropdown,\n DropdownOption,\n fieldIssues,\n Stack,\n unsafePositiveInteger,\n LocalizedString,\n unsafeLocalizedString,\n TextChildren,\n FieldProps,\n Field,\n NonNegativeBrand,\n PositiveBrand,\n} from \"design-system\";\nimport { MonthYear } from \"../../../globalDomain\";\nimport { months, useFormatMessage, useFormatMonth } from \"../../../intl\";\nimport {\n dropdownOptionToValue,\n selectedDropdownOption,\n} from \"../../../Common/selectDropdownOption\";\nimport { Brand } from \"io-ts\";\n\ntype Props = FieldProps> & {\n id?: string;\n clearable: boolean;\n /**\n * Optional, longer description for the input field\n */\n description?: LocalizedString;\n /**\n * Whether to automatically focus the input upon first render.\n * Only a single input element in a given view should have this prop set to true,\n * otherwise the last rendered one obtains the focus.\n */\n autoFocus?: boolean;\n assistiveText?: TextChildren;\n minYear: number;\n maxYear: number;\n ascending?: boolean;\n searchable: boolean;\n monthSelectionYearLimit: number;\n inverted?: boolean;\n checkMonthLimit: boolean;\n resetFlag?: any;\n defaultMonth?: number;\n};\n\ntype MonthDropdownOption = DropdownOption;\ntype YearDropdownOption = DropdownOption;\n\ntype MonthYearDropdownState = {\n month: Option;\n year: Option;\n};\n\nconst getMonthYearOption = ({ month, year }: MonthYearDropdownState) =>\n pipe(\n { month: dropdownOptionToValue(month), year: dropdownOptionToValue(year) },\n sequenceS(option.option)\n );\n\nexport function MonthYearField(props: Props) {\n const formatMessage = useFormatMessage();\n const formatMonth = useFormatMonth();\n\n const isRenderInverted = props.inverted ? props.inverted : false;\n\n const monthOptions = months.map(month => ({\n value: month,\n label: formatMonth(month),\n }));\n\n const yearOptions: YearDropdownOption[] = pipe(\n array.range(props.minYear, props.maxYear),\n props.ascending ? identity : array.reverse\n ).map(year => ({\n value: unsafePositiveInteger(year),\n label: unsafeLocalizedString(year),\n }));\n\n const [month, setMonth] = useState>(\n selectedDropdownOption(\n pipe(\n props.value,\n option.map(value => value.month)\n ),\n monthOptions\n )\n );\n const [year, setYear] = useState>(\n selectedDropdownOption(\n pipe(\n props.value,\n option.map(value => value.year)\n ),\n yearOptions\n )\n );\n\n const monthDropdownRef = useRef(null);\n const yearDropdownRef = useRef(null);\n\n const onBlurDropdown = () => {\n setTimeout(() => {\n if (\n document.activeElement !==\n (monthDropdownRef.current &&\n (monthDropdownRef.current as any).select &&\n (monthDropdownRef.current as any).select.inputRef) &&\n document.activeElement !==\n (yearDropdownRef.current &&\n (yearDropdownRef.current as any).select &&\n (yearDropdownRef.current as any).select.inputRef)\n ) {\n props.onBlur();\n }\n }, 0);\n };\n\n const onChangeDropdown = (monthYear: MonthYearDropdownState) =>\n pipe(monthYear, getMonthYearOption, props.onChange);\n\n const renderMonthDropDown = (labelId: string) => (\n {\n setMonth(value);\n onChangeDropdown({ year, month: value });\n }}\n onBlur={onBlurDropdown}\n isDisabled={props.disabled}\n aria-labelledby={labelId}\n placeholder={formatMessage(\"Month\")}\n issueType={pipe(props.issues, option.map(fieldIssues.issuesType))}\n fieldLabel={props.label}\n cancelLabel={formatMessage(\"Cancel\")}\n clearSelectionLabel={formatMessage(\"Dropdown.clearSelection\")}\n filterInputPlaceholder={formatMessage(\"Dropdown.filterInputPlaceholder\")}\n noResultsLabel={formatMessage(\"NoResults\")}\n />\n );\n\n const renderMonth = (labelId: string) =>\n pipe(\n props.checkMonthLimit,\n boolean.fold(\n () => renderMonthDropDown(labelId),\n () =>\n pipe(\n year,\n option.fold(\n constNull,\n selectedYear =>\n selectedYear.value >\n props.maxYear - props.monthSelectionYearLimit &&\n renderMonthDropDown(labelId)\n )\n )\n )\n );\n\n const defaultMonth = props.defaultMonth ? props.defaultMonth : 0;\n\n const onChangeYear = (\n year: Option<\n DropdownOption & Brand>\n >\n ) => {\n setYear(year);\n pipe(\n props.checkMonthLimit,\n boolean.fold(\n () => onChangeDropdown({ month, year }),\n () =>\n pipe(\n year,\n option.fold(constNull, selectedYear =>\n pipe(\n selectedYear.value >\n props.maxYear - props.monthSelectionYearLimit,\n boolean.fold(\n () =>\n onChangeDropdown({\n year,\n month: option.some(monthOptions[defaultMonth]),\n }),\n () => onChangeDropdown({ month, year })\n )\n )\n )\n )\n )\n );\n };\n\n const [firstTime, setFirstTime] = useState(true);\n\n useEffect(() => {\n pipe(\n firstTime,\n boolean.fold(\n () => onChangeYear(selectedDropdownOption(option.none, yearOptions)),\n () => setFirstTime(false)\n )\n );\n }, [props.resetFlag]);\n\n const renderYear = (labelId: string) => (\n \n );\n\n return (\n \n {labelId =>\n pipe(\n isRenderInverted,\n boolean.fold(\n () => (\n \n {renderMonth(labelId)}\n {renderYear(labelId)}\n \n ),\n () => (\n \n {renderYear(labelId)}\n {renderMonth(labelId)}\n \n )\n )\n )\n }\n \n );\n}\n","import * as t from \"io-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { PaymentMethod } from \"../../domain\";\n\nexport const PensionTypeCZ = t.keyof({\n Disability: true,\n OldAge: true,\n Orphans: true,\n Widower: true,\n Retirement: true,\n});\n\nexport type PensionTypeCZ = t.TypeOf;\n\nexport const PensionTypeSK = t.keyof({\n OldAge: true,\n Widower: true,\n FullInvalidityPension: true,\n RetirementAnnuity: true,\n OtherPensionOrAllowance: true,\n Bursary: true,\n});\n\nexport type PensionTypeSK = t.TypeOf;\n\nexport const PensionType = t.union(\n [PensionTypeCZ, PensionTypeSK],\n \"PensionType\"\n);\n\nexport type PensionType = t.TypeOf;\n\nexport const RetirementRentType = t.keyof({\n Policeman: true,\n FireRescueCorps: true,\n CustomAdministration: true,\n PrisonService: true,\n GeneralInspectorate: true,\n SecurityInformationService: true,\n OfficeForForeignRelations: true,\n FormerArmyMembers: true,\n Other: true,\n});\n\nexport type RetirementRentType = t.TypeOf;\n\nexport type PensionerFormFields = {\n pensionType: Option;\n monthlyPension: Option;\n paymentMethod: Option;\n monthlyRent: Option;\n monthlyIncome: Option;\n hasAdditionalIncome: Option;\n};\n","import { option, taskEither } from \"fp-ts\";\nimport {\n AllowanceInfo,\n CompanyInfo,\n ContractInfo,\n IncomeData,\n IncomeInfo,\n SpecialIncomeSourceType,\n StandardIncomeSourceType,\n} from \"../domain\";\nimport { LocalizedString, Validator, validators } from \"design-system\";\nimport { Option } from \"fp-ts/Option\";\nimport { MonthYear } from \"../../../globalDomain\";\nimport { constant, Lazy, pipe } from \"fp-ts/function\";\nimport { TypeOfRent } from \"../Forms/CompanyOwnerForm/IncomeSection/domain\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { IncomeFormOptions } from \"../commons/useControlledSubmit\";\n\nexport function getEmptyAllowanceInfo(): AllowanceInfo {\n return {\n allowanceAmount: option.none,\n receivesAllowance: option.none,\n };\n}\n\nexport function getEmptyContractInfo(): ContractInfo {\n return {\n alsoEmployeeOfTheCompany: option.none,\n contractIndefinitePeriod: option.none,\n contractPeriodExpiration: option.none,\n employedInSpecificProfessions: option.none,\n employmentType: option.none,\n inProbation: option.none,\n lengthOfUninterruptedCurrentEmployment: option.none,\n lengthOfUninterruptedOverallEmployment: option.none,\n paymentMethod: option.none,\n paymentMethodLabel: option.none,\n startingDate: option.none,\n workBasedOnAgreementOnWorkingActivity: option.none,\n jobPosition: option.none,\n };\n}\n\nexport function getEmptyCompanyInfo(): CompanyInfo {\n return {\n applicantsShareHigherThan33: option.none,\n businessSector: option.none,\n businessStartingDate: option.none,\n companyIco: option.none,\n companyName: option.none,\n equityPositive: option.none,\n freelancerType: option.none,\n nameOf3P: option.none,\n stakeInCompany: option.none,\n entrepreneurIco: option.none,\n nameOfEntrepreneur: option.none,\n addIco: option.none,\n country: option.none,\n phone: option.none,\n city: option.none,\n street: option.none,\n zipCode: option.none,\n houseNr: option.none,\n };\n}\n\nexport function getEmptyIncomeInfo(\n incomeSource: StandardIncomeSourceType\n): IncomeInfo {\n return {\n alimonyIncomeDetails: option.none,\n amortizationOfRentedRe: option.none,\n annualGrossIncome: option.none,\n bruttoComissions: option.none,\n businessGrossIncome: option.none,\n currency: option.none,\n employedInCompany: option.none,\n equityFromLastYear: option.none,\n grossIncomes: option.none,\n incomeAsDeductibleExpenses: option.none,\n incomeDescription: option.none,\n incomeFromRentContract: option.none,\n incomeSource,\n incomeSourceLabel: option.none,\n isApplicantDeclareAsUserInDeclaration: option.none,\n isCooperativeOwnership: option.none,\n keepsAccountancy: option.none,\n maternityOrParentalIncomeDetails: option.none,\n monthlyIncome: option.none,\n negativeBusinessProfit: option.none,\n pensionerIncomeDetails: option.none,\n profitForLastPeriod: option.none,\n isProfitPeriodPositive: option.none,\n profitSharingIncome: option.none,\n r101BruttoIncomes: option.none,\n r201IncomeFromLease: option.none,\n r37PartialTaxBase: option.none,\n r38PartialTaxBase: option.none,\n r39PartialTaxBase: option.none,\n r74TaxAfterClaimedRelief: option.none,\n reCoOwned: option.none,\n reInPersonalOwnership: option.none,\n reUsedAsCollateral: option.none,\n salaryCurrency: option.none,\n sumOfPaidShareOfProfit: option.none,\n tax: option.none,\n taxBase: option.none,\n typeOfIncome: option.none,\n typeOfRent: option.none,\n youngPeopleConditions: option.none,\n hasAdditionalIncome: option.none,\n hasInfoFromTaxReturn: option.none,\n };\n}\n\nexport function getEmptyIncomeInfoSpecial(\n specialTypeOfIncome: SpecialIncomeSourceType\n): IncomeInfo {\n return {\n ...getEmptyIncomeInfo(\"Employed\"),\n incomeSource: \"SpecialType\",\n specialTypeOfIncome,\n };\n}\n\nexport function notInTheFutureMonthYearValidator(\n errorMessage: LocalizedString,\n emptyFieldErrorMessage: LocalizedString\n) {\n return monthYearValidator(\n errorMessage,\n emptyFieldErrorMessage,\n (a, b) => a < b\n );\n}\n\nexport function notInThePastMonthYearValidator(\n errorMessage: LocalizedString,\n emptyFieldErrorMessage: LocalizedString\n) {\n return monthYearValidator(\n errorMessage,\n emptyFieldErrorMessage,\n (a, b) => a > b\n );\n}\n\nfunction monthYearValidator(\n errorMessage: LocalizedString,\n emptyFieldErrorMessage: LocalizedString,\n compare: (a: Date, b: Date) => boolean\n) {\n return validators.inSequence(\n validators.definedNoExtract(emptyFieldErrorMessage),\n validators.fromPredicate(\n monthYear =>\n pipe(\n monthYear,\n option.fold(\n () => false,\n monthYear =>\n compare(new Date(monthYear.year, monthYear.month, 1), new Date())\n )\n ),\n errorMessage\n )\n );\n}\n\nexport function constOptionNoneValidator(): Validator<\n Option,\n Option\n> {\n return () => taskEither.right(option.none);\n}\n\nexport function foldTypeOfRent(pattern: { [k in TypeOfRent]: Lazy }) {\n return (typeOfRent: TypeOfRent) => {\n switch (typeOfRent) {\n case \"RentFromOtherRealEstate\":\n return pattern[\"RentFromOtherRealEstate\"]();\n case \"RentFromPledgedRealEstate\":\n return pattern[\"RentFromPledgedRealEstate\"]();\n }\n };\n}\n\nexport function useFormatTypeOfRent() {\n const formatMessage = useFormatMessage();\n\n return foldTypeOfRent({\n RentFromOtherRealEstate: constant(\n formatMessage(\"StandardLoan.RentFromOtherRealEstate\")\n ),\n RentFromPledgedRealEstate: constant(\n formatMessage(\"StandardLoan.RentFromPledgedRealEstate\")\n ),\n });\n}\n\nexport function getCompanyNameWithDefault(incomeData: IncomeData) {\n return pipe(\n incomeData.companyInfo,\n option.chain(companyInfo => companyInfo.companyName),\n option.alt(() => incomeData.incomeOptions.companyNameDefault),\n option.getOrElse(() => \"\")\n );\n}\n\nexport function getCompanyIcoWithDefault(incomeData: IncomeData) {\n return pipe(\n incomeData.companyInfo,\n option.chain(companyInfo => companyInfo.companyIco),\n option.alt(() => incomeData.incomeOptions.companyIcoDefault),\n option.getOrElse(() => \"\")\n );\n}\n\nexport function useUniqueCompanyValidators(options: IncomeFormOptions) {\n const formatMessage = useFormatMessage();\n\n const uniqueCompanyName = (companyName: string) =>\n validators.fromPredicate(\n () =>\n pipe(\n options.alreadySelectedCompanies,\n option.fold(\n () => true,\n blackList =>\n blackList.find(item => item.companyName === companyName) ===\n undefined\n )\n ),\n formatMessage(\"StandardLoan.AdditionalIncome.Income.usedCompany\")\n );\n\n const uniqueCompanyIco = (companyIco: string) =>\n validators.fromPredicate(\n () =>\n pipe(\n options.alreadySelectedCompanies,\n option.fold(\n () => true,\n blackList =>\n blackList.find(item => item.companyIco === companyIco) ===\n undefined\n )\n ),\n formatMessage(\"StandardLoan.AdditionalIncome.Income.usedICO\")\n );\n\n return [uniqueCompanyName, uniqueCompanyIco];\n}\n","import * as t from \"io-ts\";\nimport { TaskEither } from \"fp-ts/TaskEither\";\nimport { Reader } from \"fp-ts/Reader\";\nimport {\n ComputedFieldProps,\n LocalizedString,\n NonNegative,\n PositiveInteger,\n} from \"design-system\";\nimport { Currency, MonthYear, optionFromUndefined } from \"../../globalDomain\";\nimport { nonEmptyArray } from \"io-ts-types/lib/nonEmptyArray\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { Option } from \"fp-ts/Option\";\nimport * as api from \"./api\";\nimport { useFormatMessage } from \"../../intl\";\nimport { option } from \"fp-ts\";\nimport { constFalse, pipe } from \"fp-ts/function\";\nimport { TypeOfRent } from \"./Forms/CompanyOwnerForm/IncomeSection/domain\";\nimport { PensionType } from \"./Forms/PensionerForm/domain\";\n\nexport const StandardIncomeSourceType = t.keyof(\n {\n Employed: true,\n Freelancer: true,\n EmployedAbroad: true,\n CompanyOwner: true,\n TradesmanCoOperatingPerson: true,\n },\n \"StandardIncomeSourceType\"\n);\n\nexport type StandardIncomeSourceType = t.TypeOf<\n typeof StandardIncomeSourceType\n>;\n\nexport const SpecialType = t.keyof(\n {\n SpecialType: true,\n },\n \"SpecialType\"\n);\n\nexport type SpecialType = t.TypeOf;\n\nexport const IncomeSourceType = t.union(\n [StandardIncomeSourceType, SpecialType],\n \"IncomeSourceType\"\n);\n\nexport type IncomeSourceType = t.TypeOf;\n\nexport const SpecialIncomeSourceTypeCZ = t.keyof(\n {\n Alimony: true,\n MaternityLeave: true,\n Pensioner: true,\n },\n \"SpecialIncomeSourceTypeCZ\"\n);\n\nexport type SpecialIncomeSourceTypeCZ = t.TypeOf<\n typeof SpecialIncomeSourceTypeCZ\n>;\n\nexport const SpecialIncomeSourceTypeSK = t.keyof(\n {\n MaternityLeave: true,\n Pensioner: true,\n },\n \"SpecialIncomeSourceTypeSK\"\n);\n\nexport type SpecialIncomeSourceTypeSK = t.TypeOf<\n typeof SpecialIncomeSourceTypeSK\n>;\n\nexport const SpecialIncomeSourceType = t.union(\n [SpecialIncomeSourceTypeCZ, SpecialIncomeSourceTypeSK],\n \"SpecialIncomeSourceType\"\n);\n\nexport type SpecialIncomeSourceType = t.TypeOf;\n\nconst FlattenedIncomeSourceType = t.union(\n [StandardIncomeSourceType, SpecialIncomeSourceType],\n \"FlattenedIncomeSourceType\"\n);\n\nexport type FlattenedIncomeSourceType = t.TypeOf<\n typeof FlattenedIncomeSourceType\n>;\n\nexport const AllowanceInfo = t.type(\n {\n allowanceAmount: optionFromUndefined(NonNegative),\n receivesAllowance: optionFromUndefined(t.boolean),\n },\n \"AllowanceInfo\"\n);\n\nexport type AllowanceInfo = t.TypeOf;\n\nexport const PaymentMethodSK = t.keyof(\n {\n SalarySentUCB: true,\n SalarySentOtherBank: true,\n PaymentInCash: true,\n },\n \"PaymentMethodSK\"\n);\n\nexport type PaymentMethodSK = t.TypeOf;\n\nexport const PaymentMethodCZ = t.keyof(\n {\n Cash: true,\n BankTransfer: true,\n },\n \"PaymentMethodCZ\"\n);\n\nexport type PaymentMethodCZ = t.TypeOf;\n\nexport const PaymentMethod = t.union(\n [PaymentMethodCZ, PaymentMethodSK],\n \"PaymentMethod\"\n);\n\nexport type PaymentMethod = t.TypeOf;\n\nexport const CompanyInfo = t.type(\n {\n applicantsShareHigherThan33: optionFromUndefined(t.boolean),\n businessSector: optionFromUndefined(NonEmptyString),\n businessStartingDate: optionFromUndefined(MonthYear),\n companyIco: optionFromUndefined(NonEmptyString),\n companyName: optionFromUndefined(NonEmptyString),\n equityPositive: optionFromUndefined(t.boolean),\n freelancerType: optionFromUndefined(NonEmptyString),\n nameOf3P: optionFromUndefined(t.string), // ?\n stakeInCompany: optionFromUndefined(t.number),\n entrepreneurIco: optionFromUndefined(NonEmptyString),\n nameOfEntrepreneur: optionFromUndefined(t.string),\n addIco: optionFromUndefined(t.boolean),\n country: optionFromUndefined(t.string),\n phone: optionFromUndefined(t.string),\n city: optionFromUndefined(t.string),\n street: optionFromUndefined(t.string),\n houseNr: optionFromUndefined(NonEmptyString),\n zipCode: optionFromUndefined(NonEmptyString),\n },\n \"CompanyInfo\"\n);\n\nexport type CompanyInfo = t.TypeOf;\n\nexport const ContractInfo = t.type(\n {\n alsoEmployeeOfTheCompany: optionFromUndefined(t.boolean),\n contractIndefinitePeriod: optionFromUndefined(t.boolean),\n contractPeriodExpiration: optionFromUndefined(MonthYear),\n employedInSpecificProfessions: optionFromUndefined(t.boolean),\n employmentType: optionFromUndefined(api.EmploymentType),\n inProbation: optionFromUndefined(t.boolean),\n lengthOfUninterruptedCurrentEmployment: optionFromUndefined(NonNegative),\n lengthOfUninterruptedOverallEmployment: optionFromUndefined(NonNegative),\n paymentMethod: optionFromUndefined(PaymentMethod),\n paymentMethodLabel: optionFromUndefined(LocalizedString),\n startingDate: optionFromUndefined(MonthYear),\n workBasedOnAgreementOnWorkingActivity: optionFromUndefined(t.boolean),\n jobPosition: optionFromUndefined(NonEmptyString), // SPECIFIC TYPE?\n },\n \"ContractInfo\"\n);\n\nexport type ContractInfo = t.TypeOf;\n\nexport const AlimonyIncomeDetails = t.type(\n {\n alimonyChildrenInvolved: optionFromUndefined(NonNegative),\n alimonyIdentifiable: optionFromUndefined(t.boolean),\n alimonyOutsideCountry: optionFromUndefined(t.boolean),\n monthlyAlimonyIncome: optionFromUndefined(NonNegative),\n alimonyCurrency: optionFromUndefined(t.string),\n },\n \"AlimonyIncomeDetails\"\n);\n\nexport type AlimonyIncomeDetails = t.TypeOf;\n\nexport const MaternityOrParentalIncomeDetails = t.type(\n {\n allowanceType: optionFromUndefined(api.AllowanceType),\n monthlySocialBenefit: optionFromUndefined(NonNegative),\n },\n \"MaternityOrParentalIncomeDetails\"\n);\n\nexport type MaternityOrParentalIncomeDetails = t.TypeOf<\n typeof MaternityOrParentalIncomeDetails\n>;\n\nexport const PensionerIncomeDetails = t.type(\n {\n monthlyPension: optionFromUndefined(NonNegative),\n monthlyRent: optionFromUndefined(NonNegative),\n pensionType: optionFromUndefined(PensionType),\n },\n \"PensionerIncomeDetails\"\n);\n\nexport type PensionerIncomeDetails = t.TypeOf;\n\nconst StandardIncomeSourceInfo = t.type(\n {\n incomeSource: StandardIncomeSourceType,\n },\n \"StandardIncomeSourceInfo\"\n);\n\nexport type StandardIncomeSourceInfo = t.TypeOf<\n typeof StandardIncomeSourceInfo\n>;\n\nconst SpecialIncomeSourceInfo = t.type({\n incomeSource: SpecialType,\n specialTypeOfIncome: SpecialIncomeSourceType,\n hasAdditionalIncome: optionFromUndefined(t.boolean),\n});\n\ntype SpecialIncomeSourceInfo = t.TypeOf;\n\nconst IncomeSourceInfo = t.union(\n [StandardIncomeSourceInfo, SpecialIncomeSourceInfo],\n \"IncomeSourceInfo\"\n);\n\nexport type IncomeSourceInfo = t.TypeOf;\n\nexport const IncomeInfoNoSource = t.type(\n {\n alimonyIncomeDetails: optionFromUndefined(AlimonyIncomeDetails),\n amortizationOfRentedRe: optionFromUndefined(t.number),\n annualGrossIncome: optionFromUndefined(NonNegative),\n bruttoComissions: optionFromUndefined(NonNegative),\n businessGrossIncome: optionFromUndefined(t.number),\n currency: optionFromUndefined(Currency),\n employedInCompany: optionFromUndefined(t.boolean),\n equityFromLastYear: optionFromUndefined(t.number),\n grossIncomes: optionFromUndefined(t.number),\n incomeAsDeductibleExpenses: optionFromUndefined(t.boolean),\n incomeDescription: optionFromUndefined(t.string), // Localized string\n incomeFromRentContract: optionFromUndefined(t.number),\n incomeSourceLabel: optionFromUndefined(LocalizedString),\n isApplicantDeclareAsUserInDeclaration: optionFromUndefined(t.boolean),\n isCooperativeOwnership: optionFromUndefined(t.boolean),\n keepsAccountancy: optionFromUndefined(t.boolean),\n maternityOrParentalIncomeDetails: optionFromUndefined(\n MaternityOrParentalIncomeDetails\n ),\n monthlyIncome: optionFromUndefined(NonNegative),\n negativeBusinessProfit: optionFromUndefined(t.boolean),\n pensionerIncomeDetails: optionFromUndefined(PensionerIncomeDetails),\n profitForLastPeriod: optionFromUndefined(NonNegative),\n isProfitPeriodPositive: optionFromUndefined(t.boolean),\n profitSharingIncome: optionFromUndefined(t.boolean),\n r101BruttoIncomes: optionFromUndefined(t.number),\n r201IncomeFromLease: optionFromUndefined(t.number),\n r37PartialTaxBase: optionFromUndefined(t.number),\n r38PartialTaxBase: optionFromUndefined(t.number),\n r39PartialTaxBase: optionFromUndefined(t.number),\n r74TaxAfterClaimedRelief: optionFromUndefined(t.number),\n reCoOwned: optionFromUndefined(t.boolean),\n reInPersonalOwnership: optionFromUndefined(t.boolean),\n reUsedAsCollateral: optionFromUndefined(t.boolean),\n salaryCurrency: optionFromUndefined(t.string),\n sumOfPaidShareOfProfit: optionFromUndefined(NonNegative),\n tax: optionFromUndefined(t.number), // @TODO: Check with specs because requested limits are -999999999, 999999999\n taxBase: optionFromUndefined(t.number), // @TODO: Check with specs because requested limits are -999999999, 999999999\n typeOfIncome: optionFromUndefined(t.string), // SPECIFIC TYPE?\n typeOfRent: optionFromUndefined(TypeOfRent),\n youngPeopleConditions: optionFromUndefined(t.boolean),\n hasAdditionalIncome: optionFromUndefined(t.boolean),\n hasInfoFromTaxReturn: optionFromUndefined(t.boolean),\n },\n \"IncomeInfoNoSource\"\n);\ntype IncomeInfoNoSource = t.TypeOf;\n\nexport const IncomeInfo = t.intersection(\n [IncomeInfoNoSource, IncomeSourceInfo],\n \"IncomeInfo\"\n);\nexport type IncomeInfo = t.TypeOf;\n\nexport function foldIncomeBySource(matches: {\n whenStandard: Reader;\n whenSpecial: Reader;\n}): Reader {\n return info => {\n switch (info.incomeSource) {\n case \"SpecialType\":\n return matches.whenSpecial(info);\n default:\n return matches.whenStandard(info);\n }\n };\n}\n\nexport const IncomeOutput = t.type(\n {\n allowanceInfo: optionFromUndefined(AllowanceInfo),\n companyInfo: optionFromUndefined(CompanyInfo),\n contractInfo: optionFromUndefined(ContractInfo),\n incomeInfo: optionFromUndefined(IncomeInfo),\n uniqueId: optionFromUndefined(NonEmptyString),\n hasPreapprovedLimits: t.boolean,\n },\n \"IncomeOutput\"\n);\n\nexport type IncomeOutput = t.TypeOf;\n\nexport const IncomeOptionsOutput = t.type(\n {\n companyIcoDefault: optionFromUndefined(t.string),\n companyNameDefault: optionFromUndefined(t.string),\n incomeDefault: optionFromUndefined(NonNegative),\n sourceOfIncomeDefault: optionFromUndefined(IncomeSourceType),\n sourceOfIncomeOptions: nonEmptyArray(IncomeSourceType),\n specialTypeOfIncomeDefault: optionFromUndefined(SpecialIncomeSourceType),\n specialTypeOfIncomeOptions: optionFromUndefined(\n t.array(SpecialIncomeSourceType)\n ), // Can be empty\n startDateEmploymentDefault: optionFromUndefined(MonthYear),\n startDateMonthOptions: optionFromUndefined(nonEmptyArray(PositiveInteger)),\n startDateYearOptions: optionFromUndefined(nonEmptyArray(PositiveInteger)),\n hasPreapprovedLimits: t.boolean,\n },\n \"IncomeOptionsOutput\"\n);\n\nexport type IncomeOptionsOutput = t.TypeOf;\n\nexport const IncomeData = t.intersection(\n [\n t.type({\n incomeSourceList: nonEmptyArray(IncomeSourceType),\n specialIncomeSourceList: optionFromUndefined(\n t.array(SpecialIncomeSourceType)\n ),\n incomeOptions: IncomeOptionsOutput,\n }),\n IncomeOutput,\n ],\n \"IncomeData\"\n);\n\nexport type IncomeData = t.TypeOf;\n\nexport type EmployedCardFormData = {\n salaryCurrency: Option;\n monthlyIncome: Option;\n companyName: string;\n companyIco: string;\n applicantsShareHigherThan33: Option;\n startingDate: Option;\n jobPosition: Option;\n employmentType: Option;\n inProbation: Option;\n contractIndefinitePeriod: Option;\n workBasedOnAgreementOnWorkingActivity: Option;\n contractPeriodExpiration: Option;\n employedInSpecificProfessions: Option;\n lengthOfUninterruptedOverallEmployment: Option;\n allowanceAmount: Option;\n receivesAllowance: Option;\n paymentMethod: Option;\n hasAdditionalIncome: Option;\n};\n\nexport type EmployedProps = {\n fieldProps: (\n name: K\n ) => ComputedFieldProps;\n disabled?: boolean;\n};\n\nexport function useFormatEmploymentType() {\n const formatMessage = useFormatMessage();\n\n return (employmentType: api.EmploymentType) => {\n switch (employmentType) {\n case \"Agreement\":\n return formatMessage(\"StandardLoan.EmploymentType.agreement\");\n case \"IndefiniteContract\":\n return formatMessage(\"StandardLoan.EmploymentType.indefiniteContract\");\n case \"LimitedContract\":\n return formatMessage(\"StandardLoan.EmploymentType.limitedContract\");\n case \"Other\":\n return formatMessage(\"StandardLoan.EmploymentType.other\");\n case \"SeasonalContract\":\n return formatMessage(\"StandardLoan.EmploymentType.seasonalContract\");\n }\n };\n}\n\nexport type MaternityParentalLeaveFormData = {\n allowanceType: Option;\n monthlySocialBenefit: Option;\n};\n\nexport type MaternityParentalLeaveProps = {\n fieldProps: ComputedFieldProps>;\n};\n\nexport type AlimonyFormData = {\n alimonyChildrenInvolved: Option;\n alimonyIdentifiable: Option;\n alimonyOutsideCountry: Option;\n monthlyAlimonyIncome: Option;\n alimonyCurrency: Option;\n paymentMethod: Option;\n};\n\nexport function useFormatAllowanceType() {\n const formatMessage = useFormatMessage();\n\n return (allowanceType: api.AllowanceType) => {\n switch (allowanceType) {\n case \"Parental\":\n return formatMessage(\"StandardLoan.AllowanceType.parentalAllowance\");\n case \"FutureParental\":\n return formatMessage(\n \"StandardLoan.AllowanceType.futureParentalAllowance\"\n );\n }\n };\n}\n\nexport function isOptionTrue(value: Option): boolean {\n return pipe(value, option.getOrElse(constFalse));\n}\n\nexport function useFormatPaymentMethod() {\n const formatMessage = useFormatMessage();\n\n return (paymentMethod: PaymentMethod) => {\n switch (paymentMethod) {\n case \"Cash\":\n return formatMessage(\"StandardLoan.PaymentMethod.Cash\");\n case \"BankTransfer\":\n return formatMessage(\"StandardLoan.PaymentMethod.BankTransfer\");\n case \"SalarySentUCB\":\n return formatMessage(\"StandardLoan.PaymentMethod.SalarySentUCB\");\n case \"SalarySentOtherBank\":\n return formatMessage(\"StandardLoan.PaymentMethod.SalarySentOtherBank\");\n case \"PaymentInCash\":\n return formatMessage(\"StandardLoan.PaymentMethod.PaymentInCash\");\n }\n };\n}\n\nexport function useFormatIncomeSourceType() {\n const formatMessage = useFormatMessage();\n\n return (incomeSource: FlattenedIncomeSourceType | SpecialType) => {\n switch (incomeSource) {\n case \"Employed\":\n return formatMessage(\"StandardLoan.IncomeSource.Employed\");\n case \"EmployedAbroad\":\n return formatMessage(\"StandardLoan.IncomeSource.EmployedAbroad\");\n case \"Freelancer\":\n return formatMessage(\"StandardLoan.IncomeSource.Freelancer\");\n case \"Pensioner\":\n return formatMessage(\"StandardLoan.IncomeSource.Pensioner\");\n case \"TradesmanCoOperatingPerson\":\n return formatMessage(\n \"StandardLoan.IncomeSource.TradesManCoOperatingPerson\"\n );\n case \"MaternityLeave\":\n return formatMessage(\"StandardLoan.IncomeSource.MaternityLeave\");\n case \"CompanyOwner\":\n return formatMessage(\"StandardLoan.IncomeSource.CompanyOwner\");\n case \"Alimony\":\n return formatMessage(\"StandardLoan.IncomeSource.Alimony\");\n case \"SpecialType\":\n return formatMessage(\"StandardLoan.IncomeSource.SpecialType\");\n }\n };\n}\n\nexport type IncomeFormOutput = [JSX.Element, TaskEither];\nexport type IncomeFormCardOutput = [\n JSX.Element,\n TaskEither\n];\n","import * as t from \"io-ts\";\n\nexport const TypeOfRent = t.keyof(\n {\n RentFromOtherRealEstate: true,\n RentFromPledgedRealEstate: true,\n },\n \"TypeOfRent\"\n);\n\nexport type TypeOfRent = t.TypeOf;\n","import { RadioGroupField, ComputedFieldProps } from \"design-system\";\nimport { option, record } from \"fp-ts\";\nimport { constant, pipe, constFalse } from \"fp-ts/function\";\nimport {\n PaymentMethod,\n PaymentMethodCZ,\n PaymentMethodSK,\n useFormatPaymentMethod,\n} from \"../domain\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { foldTenant } from \"../../../globalDomain\";\nimport { useAppContext } from \"../../../useAppContext\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport { Option } from \"fp-ts/Option\";\n\ntype Props = {\n fieldProps: ComputedFieldProps>;\n};\n\nexport function PaymentMethodRadiogroup({ fieldProps }: Props) {\n const {\n apiParameters: { tenant },\n } = useAppContext();\n const formatMessage = useFormatMessage();\n const formatPaymentMethod = useFormatPaymentMethod();\n\n const paymentMethods = pipe(\n foldTenant(\n tenant,\n () => record.keys(PaymentMethodSK.keys) as NonEmptyArray,\n () => record.keys(PaymentMethodCZ.keys) as NonEmptyArray\n )\n );\n\n return (\n value.toString()}\n renderOption={formatPaymentMethod}\n renderOptionChildren={constant(option.none)}\n isOptionDisabled={constFalse}\n />\n );\n}\n","import {\n DropdownOption,\n unsafeLocalizedString,\n ComputedFieldProps,\n} from \"design-system\";\nimport { array, option, tuple } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { constant, pipe, identity } from \"fp-ts/function\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { useQuery } from \"../../../useAPI\";\nimport * as api from \"../api\";\nimport { fold } from \"../../../RemoteData\";\nimport { DropdownField } from \"../../../Common/DropdownField/DropdownField\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\n\ntype Props = {\n fieldProps: ComputedFieldProps>;\n disabled?: boolean;\n};\n\nexport function JobPositionDropdown({ fieldProps, disabled }: Props) {\n const formatMessage = useFormatMessage();\n\n const jobPositions = pipe(\n useQuery(api.jobPositions),\n tuple.fst,\n fold(constant([]), constant([]), identity)\n );\n\n const options: DropdownOption[] = jobPositions.map(\n jobPosition => ({\n value: jobPosition.key,\n label: unsafeLocalizedString(jobPosition.name),\n })\n );\n\n const onChange = (dropdownOption: Option>) => {\n fieldProps.onChange(\n pipe(\n dropdownOption,\n option.map(v => v.value)\n )\n );\n };\n\n const value = getSelectedDropdownOption(fieldProps.value, options);\n\n function getSelectedDropdownOption(\n initialValue: Option,\n options: Array>\n ): Option> {\n return pipe(\n initialValue,\n option.chain(initialValue =>\n pipe(\n options,\n array.findFirst(\n o =>\n initialValue.toString().toLowerCase() ===\n o.value.toString().toLowerCase()\n )\n )\n )\n );\n }\n\n return (\n \n );\n}\n","import cx from \"classnames\";\nimport {\n ContentRow,\n ErrorBanner,\n FeedbackBlock,\n Loader,\n Stack,\n} from \"design-system\";\nimport * as classes from \"./EmptyPanel.treat\";\nimport { boolean, option, taskEither } from \"fp-ts\";\nimport { IO } from \"fp-ts/IO\";\nimport { Option } from \"fp-ts/Option\";\nimport { constFalse, constVoid, pipe } from \"fp-ts/function\";\nimport {\n ExistingClientAuthenticationMethod,\n foldExistingClientAuthenticationMethod,\n genericError,\n} from \"../../../globalDomain\";\nimport { useFormatMessage } from \"../../../intl\";\nimport * as remoteData from \"../../../RemoteData\";\nimport { useAPI, useCommand, useQuery } from \"../../../useAPI\";\nimport { PreContractualDocuments } from \"../../../Common/PreContractualDocuments/PreContractualDocuments\";\nimport { OtpGenerationInput } from \"../../../OTP/domain\";\nimport * as api from \"../../api\";\nimport { StandardLoanFlowType } from \"../../domain\";\nimport { SignatureProps } from \"../../../Common/PreContractualDocuments/DocumentsSignature\";\nimport { ReaderTaskEither } from \"fp-ts/ReaderTaskEither\";\nimport { Path } from \"../../../APICall\";\nimport * as smartKeyApi from \"../../../SmartKey/api\";\nimport { useDocumentStateFold } from \"../useDocumentStateFold\";\nimport { CheckingContractsWithStatusCheck } from \"./CheckingContractsWithStatusCheck\";\nimport { CheckingContractsLoader } from \"./CheckingContractsLoader\";\nimport { useEffect, useState } from \"react\";\n\ntype Props = {\n onContinue: (status: Option) => unknown;\n onApplicationRejected: IO;\n onAfterSignature: (status: Option) => void;\n flowType: StandardLoanFlowType;\n authenticationMethod: Option;\n mustReadAllDocuments?: boolean;\n skipContracts: boolean;\n existingClient: boolean;\n isCredentialsAndSigningRemote: boolean;\n isRiskyClient: boolean;\n};\n\nfunction CheckingContractsWithDocuments(props: Props) {\n const formatMessage = useFormatMessage();\n const [lfStatus, setLfStatus] = useState>(option.none);\n\n const { foldDocumentState, documentState } = useDocumentStateFold({\n signingRemoteContractsAlreadyPrepared: props.isCredentialsAndSigningRemote,\n });\n\n const [preContractualDocuments] = useAPI(api.preContractualDocuments);\n const [getTermsAndConditions] = useAPI(api.termsAndConditions);\n const contractRead = useCommand(api.contractRead);\n const marketingConsent = useCommand(api.marketingConsent);\n const termsAndConditionsReceived = useCommand(api.termsAndConditionsReceived);\n const authorizeWithOTP = useCommand(api.authorizeWithOTP);\n const verifyOtpCommand = useCommand(api.checkAuthorizationOTP);\n const checkApplicationStatus = useCommand(api.checkApplicationStatus);\n const [phoneNumber] = useQuery(api.phoneNumber);\n\n const generateOtpCommand = (input: OtpGenerationInput) =>\n pipe(\n authorizeWithOTP(input),\n taskEither.chain(response => {\n if (!response.authorize) {\n props.onApplicationRejected();\n return taskEither.left(genericError);\n }\n setLfStatus(response.lfStatus);\n return taskEither.right({\n ...response,\n transactionId: option.some(response.transactionId),\n });\n })\n );\n\n const authorizeWithPushCommand = useCommand(api.authorizeWithPush);\n const authorizeWithPushTLS = useCommand(\n smartKeyApi.sendPushNoTransaction([\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"authorizeWithPush\",\n ])\n );\n\n const generateAuthorizationQRCommand = useCommand(\n api.generateAuthorizationQR\n );\n\n const checkAuthorizationPushPath: Path = [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"checkAuthorizationPush\",\n ];\n\n const checkAuthorizationQRPath: Path = [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"checkAuthorizationQR\",\n ];\n\n useEffect(() => {\n if (documentState === \"KycRejected\") {\n props.onApplicationRejected();\n }\n }, [documentState]);\n\n const authorizeWithPush: ReaderTaskEither<\n void,\n unknown,\n smartKeyApi.SendPushOutput\n > = () =>\n pipe(\n authorizeWithPushCommand(),\n taskEither.chain(response =>\n taskEither.fromIO(() => {\n if (response.applicationRejected) {\n props.onApplicationRejected();\n }\n\n return response;\n })\n )\n );\n\n const generateAuthorizationQR: ReaderTaskEither<\n void,\n unknown,\n smartKeyApi.GenerateQRCodeOutput\n > = () =>\n pipe(\n generateAuthorizationQRCommand(),\n taskEither.chain(response => {\n if (api.GenerateQRCodeError.is(response)) {\n if (response.error === \"ApplicationRejected\") {\n props.onApplicationRejected();\n return taskEither.left(null);\n }\n\n return taskEither.right({\n ...response,\n error: \"UserBlocked\",\n });\n } else {\n return taskEither.right(response);\n }\n })\n );\n\n const authMethod = pipe(\n props.authenticationMethod,\n option.getOrElse(() => \"ID\")\n );\n\n const [authorizationError, setAuthorizationError] = useState(false);\n\n const canStartPinAuthorization = pipe(\n checkApplicationStatus(),\n taskEither.fold(\n () => {\n setAuthorizationError(true);\n return taskEither.fromIO(constFalse);\n },\n ({ rejected }) =>\n taskEither.fromIO(() => {\n if (rejected) {\n props.onApplicationRejected();\n }\n setAuthorizationError(false);\n return !rejected;\n })\n )\n );\n\n const renderContent = pipe(\n phoneNumber,\n remoteData.map(result => result.phoneNumber),\n remoteData.fold(\n () => ,\n () => (\n \n \n \n ),\n phoneNumber => (\n \n \n props.onContinue(lfStatus)}\n onContinueRemoteSigning={props.onContinue}\n onAfterSignature={() => props.onAfterSignature(lfStatus)}\n signatureProps={pipe(authMethod, authMethod =>\n foldExistingClientAuthenticationMethod(\n authMethod,\n {\n ID: () => ({\n authenticationMethod: \"ID\",\n phoneNumber,\n generateOtpCommand,\n onSignFailure: constVoid,\n verifyOtpCommand,\n }),\n PUSH_NOTIFICATION: () => ({\n authenticationMethod: \"PUSH_NOTIFICATION\",\n authorizeWithPush,\n checkAuthorizationPushPath,\n checkAuthorizationQRPath,\n generateAuthorizationQR,\n onFailedSignature: constVoid,\n }),\n QR: () => ({\n authenticationMethod: \"QR\",\n authorizeWithPush,\n checkAuthorizationPushPath,\n checkAuthorizationQRPath,\n generateAuthorizationQR,\n onFailedSignature: constVoid,\n }),\n EXTERNAL_PUSH_NOTIFICATION: () => ({\n authenticationMethod: \"EXTERNAL_PUSH_NOTIFICATION\",\n onApplicationRejected: props.onApplicationRejected,\n authorizeWithPushTLS,\n }),\n PIN: () => ({\n authenticationMethod: \"PIN\",\n beforeAuthorizationAction: constVoid,\n checkAuthorizationPushPath,\n canStartAuthorization: canStartPinAuthorization,\n }),\n }\n )\n )}\n onReadContract={docId =>\n contractRead({ docId, documentRead: true })\n }\n onUnreadContract={docId =>\n contractRead({ docId, documentRead: false })\n }\n onTermsAndConditionsReceived={termsAndConditionsReceived()}\n onMarketingConsentExpressed={accepted =>\n marketingConsent({ accepted })\n }\n getDocuments={preContractualDocuments}\n getTermsAndConditions={option.some(getTermsAndConditions)}\n showBackButton={false}\n onBack={constVoid}\n mustReadAllDocuments={props.mustReadAllDocuments}\n skipContracts={props.skipContracts}\n hideDocumentsSignatureBox={\n props.flowType === \"TLSAgent\" && !props.existingClient\n }\n startCheckingRemoteSignature={\n props.flowType === \"TLSAgent\" && !props.existingClient\n }\n shouldVerifySignatureStatus={\n authMethod !== \"EXTERNAL_PUSH_NOTIFICATION\"\n }\n />\n \n {authorizationError && (\n \n \n \n )}\n \n )\n )\n );\n return foldDocumentState(\n () => (\n \n ),\n () => renderContent,\n () => (\n \n ),\n () => null\n );\n}\n\nexport const CheckingContracts = (props: Props) => {\n return pipe(\n props.existingClient,\n boolean.fold(\n () => (\n }\n feedbackBlock={(status, errId) => (\n error === \"RiskyClient\")\n )\n }\n />\n )}\n />\n ),\n () => \n )\n );\n};\n","import { Reader } from \"fp-ts/Reader\";\n\ninterface PasswordForCommunicationState {\n type: \"PasswordForCommunication\";\n error: boolean;\n}\n\nexport function passwordForCommunication(): PasswordForCommunicationState {\n return { type: \"PasswordForCommunication\", error: false };\n}\n\ninterface UnableToProceedState {\n type: \"UnableToProceed\";\n error: boolean;\n}\n\nexport function unableToProceed(): UnableToProceedState {\n return { type: \"UnableToProceed\", error: false };\n}\n\ntype State = PasswordForCommunicationState | UnableToProceedState;\n\nexport function foldState(\n matches: { [k in State[\"type\"]]: Reader, T> }\n): Reader {\n return state => matches[state.type](state as any);\n}\n\ninterface UnableToProceedAction {\n type: \"UnableToProceed\";\n}\n\nexport function unableToProceedAction(): UnableToProceedAction {\n return { type: \"UnableToProceed\" };\n}\n\ninterface PasswordForCommunicationErrorAction {\n type: \"PasswordForCommunicationError\";\n}\n\nexport function passwordForCommunicationErrorAction(): PasswordForCommunicationErrorAction {\n return { type: \"PasswordForCommunicationError\" };\n}\n\ntype Action = UnableToProceedAction | PasswordForCommunicationErrorAction;\n\nexport function reducer(state: State, action: Action): State {\n switch (state.type) {\n case \"PasswordForCommunication\":\n switch (action.type) {\n case \"UnableToProceed\":\n return unableToProceed();\n case \"PasswordForCommunicationError\":\n return {\n ...state,\n error: true,\n };\n }\n case \"UnableToProceed\":\n switch (action.type) {\n case \"UnableToProceed\":\n case \"PasswordForCommunicationError\":\n return state;\n }\n }\n}\n","import \"!../../../../../node_modules/extract-css-chunks-webpack-plugin/dist/loader.js!css-loader?{\\\"modules\\\":false,\\\"url\\\":false}!./EmptyPanel.treat.3lx5PCM.css\";\nexport var panelVariants = {active:'_1z8yR',disabled:'_3Tl3N','static':'_3GlVk'};\nexport var notClickable = '_2lJBU';\nexport var notFocused = 'Qq2ye';\nexport var panel = '_3xxEz';\nexport var content = '_1eeKq';","import {\n Box,\n ContentRow,\n ErrorBanner,\n FeedbackBlock,\n Heading,\n Loader,\n Space,\n TextChildren,\n} from \"design-system\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { StandardLoanFlowType } from \"../../domain\";\nimport * as classes from \"./EmptyPanel.treat\";\nimport cx from \"classnames\";\nimport { option } from \"fp-ts\";\nimport { UnableToProceed } from \"../HighRiskClient/UnableToProceed\";\n\ntype Props = {\n status: \"loading\" | \"error\";\n flowType: StandardLoanFlowType;\n isRiskyClient: boolean;\n};\n\nexport function CheckingContractsLoader(props: Props) {\n const formatMessage = useFormatMessage();\n\n const errorMessage = ((): TextChildren => {\n switch (props.flowType) {\n case \"TLSAgent\":\n return formatMessage(\"StandardLoan.ClientStatus.Error.TLSAgent\");\n case \"InPerson\":\n case \"3P\":\n case \"HomeBanking\":\n case \"SmartBanking\":\n case \"PWSRemote\":\n return formatMessage(\"GenericError\");\n }\n })();\n\n return props.isRiskyClient ? (\n props.status === \"loading\" ? (\n \n ) : (\n \n )\n ) : (\n \n \n \n \n {formatMessage(\n \"StandardLoan.FollowUpAndSignature.LowRiskClient.Complete.title\"\n )}\n \n \n \n \n \n {formatMessage(\n \"StandardLoan.FollowUpAndSignature.LowRiskClient.Complete.checkingLabel\"\n )}\n \n {props.status === \"loading\" ? (\n \n ) : (\n <>\n \n \n \n \n )}\n \n \n \n );\n}\n","import {\n Box,\n ComputedFieldProps,\n DropdownOption,\n fieldIssues,\n FormRow,\n FormSection,\n Issues,\n Space,\n Stack,\n useForm,\n validators,\n} from \"design-system\";\nimport { array, boolean, option, record, taskEither } from \"fp-ts\";\nimport {\n constFalse,\n constNull,\n constUndefined,\n constVoid,\n pipe,\n} from \"fp-ts/function\";\nimport { IO } from \"fp-ts/IO\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport { Option } from \"fp-ts/Option\";\nimport { Reader } from \"fp-ts/Reader\";\nimport { Dispatch, SetStateAction, useEffect, useRef, useState } from \"react\";\nimport { useFormatMessage } from \"../../intl\";\nimport { DropdownField } from \"../../Common/DropdownField/DropdownField\";\nimport {\n dropdownOptionToValue,\n selectedDropdownOption,\n} from \"../../Common/selectDropdownOption\";\nimport { useValidators } from \"../../Common/useValidators\";\nimport { ReworkIncomeAndPersonalData, ReworkIncomeOutput } from \"../Rework/api\";\nimport { IncomeCardProps } from \"./commons/useControlledSubmit\";\nimport {\n FlattenedIncomeSourceType,\n foldIncomeBySource,\n IncomeData,\n IncomeOutput,\n IncomeSourceType,\n SpecialIncomeSourceType,\n StandardIncomeSourceType,\n useFormatIncomeSourceType,\n} from \"./domain\";\nimport { AlimonyCard } from \"./Forms/AlimonyCard\";\nimport { CompanyOwnerCard } from \"./Forms/CompanyOwnerForm/CompanyOwnerCard\";\nimport { EmployedCard } from \"./Forms/EmployedForm\";\nimport { FreelancerCard } from \"./Forms/FreelancerCard\";\nimport { MaternityLeaveCard } from \"./Forms/MaternityLeaveForm\";\nimport { PensionerCard } from \"./Forms/PensionerForm/PensionerCard\";\nimport { TradesManCard } from \"./Forms/TradesManForm/TradesManCard\";\nimport { isReworked, useReworkComparator } from \"../Rework/useReworkComparator\";\nimport { foldTenant } from \"../../globalDomain\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { MonthlyIncome } from \"./commons/MonthlyIncomeField\";\nimport { useTenantCurrency } from \"../../Common/useTenantCurrency\";\nimport { CurrencyDropdown } from \"./commons/CurrencyDropdown\";\n\ntype ValidatedFormData = Exclude<\n IncomeData,\n \"sourceOfIncome\" | \"specialSourceOfIncome\"\n> &\n (\n | {\n sourceOfIncome: Exclude;\n }\n | {\n sourceOfIncome: \"SpecialType\";\n specialSourceOfIncome: SpecialIncomeSourceType;\n }\n );\n\ntype Props = Omit & {\n onDataReady: Reader;\n rework: Option;\n reworkAll: boolean;\n onChangeIncomeSourceType: (value: Option) => void;\n isCancelling: boolean;\n onCancel: Dispatch>;\n};\n\nexport function IncomeForm(props: Props) {\n const { nonNegativeNumber, defined, definedNoExtract } = useValidators();\n const validatedValues = useRef>(option.none);\n const formatIncomeSourceType = useFormatIncomeSourceType();\n const formatMessage = useFormatMessage();\n const tenantCurrency = useTenantCurrency();\n\n const [incomeData, resetIncomeData] = useState(props.incomeData);\n\n const {\n apiParameters: { tenant },\n } = useAppContext();\n\n const [initialIncomeAmount] = useState(\n pipe(\n incomeData.incomeInfo,\n option.chain(data => data.monthlyIncome),\n option.alt(() => incomeData.incomeOptions.incomeDefault)\n ) as Option\n );\n\n const { fieldProps, handleSubmit, values, setValues, setTouched } = useForm(\n {\n initialValues: {\n ...incomeData,\n sourceOfIncome: pipe(\n incomeData.incomeInfo,\n option.fold(\n () => incomeData.incomeOptions.sourceOfIncomeDefault,\n ({ incomeSource }) => option.some(incomeSource)\n )\n ),\n specialSourceOfIncome: pipe(\n incomeData.incomeInfo,\n option.fold(\n () => incomeData.incomeOptions.specialTypeOfIncomeDefault,\n foldIncomeBySource({\n whenStandard: () =>\n option.none as Option,\n whenSpecial: ({ specialTypeOfIncome }) =>\n option.some(specialTypeOfIncome),\n })\n )\n ),\n salaryCurrency: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.salaryCurrency),\n option.alt(() => option.some(tenantCurrency.toString()))\n ),\n monthlyIncome: initialIncomeAmount,\n },\n fieldValidators: values => {\n return {\n income: validators.inSequence(defined(), nonNegativeNumber),\n sourceOfIncome: defined(),\n specialSourceOfIncome: pipe(\n values.sourceOfIncome,\n option.exists(sourceOfIncome => sourceOfIncome === \"SpecialType\"),\n boolean.fold(constUndefined, () =>\n defined()\n )\n ),\n salaryCurrency: definedNoExtract(),\n monthlyIncome: pipe(\n values.sourceOfIncome,\n option.exists(sourceOfIncome => sourceOfIncome === \"SpecialType\"),\n boolean.fold(() => definedNoExtract(), constUndefined)\n ),\n };\n },\n },\n {\n onSubmit: values =>\n taskEither.fromIO(() => {\n validatedValues.current = option.some(values as ValidatedFormData);\n }),\n }\n );\n\n const onDataReady = (values: IncomeData) =>\n setTimeout(\n () =>\n pipe(\n handleSubmit,\n taskEither.chain(() =>\n taskEither.fromIO(() =>\n pipe(\n {\n ...values,\n incomeOptions: undefined,\n incomeSourceList: undefined,\n specialIncomeSourceList: undefined,\n incomeInfo: pipe(\n values.incomeInfo,\n option.map(incomeInfo => ({\n ...incomeInfo,\n incomeSourceLabel: option.some(\n formatIncomeSourceType(incomeInfo.incomeSource)\n ),\n salaryCurrency: incomeInfo.salaryCurrency,\n monthlyIncome: incomeInfo.monthlyIncome,\n hasAdditionalIncome: incomeInfo.hasAdditionalIncome,\n hasInfoFromTaxReturn: incomeInfo.hasInfoFromTaxReturn,\n }))\n ),\n },\n props.onDataReady\n )\n )\n ),\n taskEither.orElse(() => taskEither.fromIO(props.onFailure))\n )(),\n 50\n );\n\n const reworkData = pipe(\n props.rework,\n option.chain(rework => rework.income)\n );\n\n const isSpecialTypeIncome = pipe(\n fieldProps(\"sourceOfIncome\").value,\n option.exists(value => value === \"SpecialType\")\n );\n\n const selectedCard = pipe(\n fieldProps(\"sourceOfIncome\").value,\n option.exists(value => value === \"SpecialType\"),\n boolean.fold(\n () =>\n fieldProps(\"sourceOfIncome\").value as Option,\n () => fieldProps(\"specialSourceOfIncome\").value\n ),\n option.fold(\n constNull,\n foldIncomeCard({\n Employed: () => (\n \n ),\n CompanyOwner: () => (\n \n ),\n Freelancer: () => (\n \n ),\n TradesmanCoOperatingPerson: () => (\n \n ),\n MaternityLeave: () => (\n \n ),\n Pensioner: () => (\n \n ),\n Alimony: () => (\n \n ),\n EmployedAbroad: () => (\n \n ),\n })\n )\n );\n\n useEffect(\n () =>\n pipe(\n props.canSubmit && props.isMainIncome,\n boolean.fold(constVoid, () =>\n pipe(\n !selectedCard,\n boolean.fold(constVoid, () => onDataReady(values))\n )\n )\n ),\n [selectedCard, props.onFailure, props.canSubmit]\n );\n\n useEffect(() => {\n if (props.isCancelling) {\n handleCancel();\n }\n props.onCancel(false);\n }, [props.isCancelling]);\n\n const handleReset = (value: Option): void => {\n resetIncomeData({\n ...incomeData,\n allowanceInfo: option.none,\n companyInfo: option.none,\n contractInfo: option.none,\n incomeInfo: option.none,\n // uniqueId: option.none,\n });\n setValues(incomeData);\n setTouched(pipe(incomeData, record.map(constFalse)));\n props.onChangeIncomeSourceType(value);\n };\n\n const handleCancel = (): void => {\n resetIncomeData({\n ...props.incomeData,\n allowanceInfo: props.incomeData.allowanceInfo,\n companyInfo: props.incomeData.companyInfo,\n contractInfo: props.incomeData.contractInfo,\n incomeInfo: props.incomeData.incomeInfo,\n });\n setValues({\n ...props.incomeData,\n monthlyIncome: pipe(\n props.incomeData.incomeInfo,\n option.chain(data => data.monthlyIncome)\n ),\n salaryCurrency: pipe(\n props.incomeData.incomeInfo,\n option.chain(data => data.salaryCurrency)\n ),\n sourceOfIncome: pipe(\n props.incomeData.incomeInfo,\n option.fold(\n () => incomeData.incomeOptions.sourceOfIncomeDefault,\n ({ incomeSource }) => option.some(incomeSource)\n )\n ),\n specialSourceOfIncome: pipe(\n props.incomeData.incomeInfo,\n option.fold(\n () => incomeData.incomeOptions.specialTypeOfIncomeDefault,\n foldIncomeBySource({\n whenStandard: () => option.none as Option,\n whenSpecial: ({ specialTypeOfIncome }) =>\n option.some(specialTypeOfIncome),\n })\n )\n ),\n });\n };\n const keys = foldTenant>(\n tenant,\n () => [\"MaternityLeave\", \"Pensioner\"] as Array,\n () =>\n [\n \"Alimony\",\n \"MaternityLeave\",\n \"Pensioner\",\n ] as Array\n );\n return (\n \n \n {!isSpecialTypeIncome && (\n rework.income)\n )}\n reworkAll={props.reworkAll}\n disabled={!props.options.isEditing}\n />\n )}\n rework.income)\n )}\n onReset={handleReset}\n />\n \n {selectedCard}\n \n );\n}\n\nexport function foldIncomeCard(\n matches: {\n [k in FlattenedIncomeSourceType]: IO;\n }\n): Reader {\n return sourceOfIncome => matches[sourceOfIncome]();\n}\n\nexport function foldIncome(\n matches: {\n [k in StandardIncomeSourceType]: IO;\n }\n): Reader {\n return sourceOfIncome => matches[sourceOfIncome]();\n}\n\ntype AverageNetMonthlyIncomeProps = {\n monthlyIncome: ComputedFieldProps>;\n salaryCurrency: ComputedFieldProps>;\n sourceOfIncome: ComputedFieldProps>;\n initialIncomeAmount: Option;\n rework: Option;\n reworkAll: boolean;\n disabled: boolean;\n};\n\nexport function AverageNetMonthlyIncome(props: AverageNetMonthlyIncomeProps) {\n const formatMessage = useFormatMessage();\n\n const { specialFieldsReworkFieldProps } = useReworkComparator(props.rework);\n\n const label = pipe(\n props.sourceOfIncome.value as Option,\n option.map(\n foldIncome({\n Employed: () =>\n formatMessage(\"StandardLoan.EmployedCard.monthlyIncome\"),\n EmployedAbroad: () =>\n formatMessage(\"StandardLoan.EmployedCard.monthlyIncome\"),\n CompanyOwner: () =>\n formatMessage(\n \"StandardLoan.CompanyOwner.ContractSection.netMonthlyIncomeLabel\"\n ),\n Freelancer: () =>\n formatMessage(\n \"StandardLoan.FreelancerCard.IncomeSection.monthlyIncome\"\n ),\n TradesmanCoOperatingPerson: () =>\n formatMessage(\"StandardLoan.Tradesman.CompanySection.monthlyIncome\"),\n })\n ),\n option.toUndefined\n );\n\n const placeholder = pipe(\n props.sourceOfIncome.value as Option,\n option.map(\n foldIncome({\n Employed: () =>\n formatMessage(\"StandardLoan.EmployedCard.monthlyIncomePlaceholder\"),\n EmployedAbroad: () =>\n formatMessage(\"StandardLoan.EmployedCard.monthlyIncomePlaceholder\"),\n CompanyOwner: () =>\n formatMessage(\n \"StandardLoan.CompanyOwner.ContractSection.netMonthlyIncomePlaceholder\"\n ),\n Freelancer: () =>\n formatMessage(\n \"StandardLoan.FreelancerCard.IncomeSection.monthlyIncomePlaceholder\"\n ),\n TradesmanCoOperatingPerson: () =>\n formatMessage(\n \"StandardLoan.Tradesman.CompanySection.monthlyIncomePlaceholder\"\n ),\n })\n ),\n option.toUndefined\n );\n\n const description = pipe(\n props.sourceOfIncome.value as Option,\n option.map(src => {\n if (src === \"Employed\" || src === \"EmployedAbroad\") {\n return formatMessage(\"StandardLoan.EmployedCard.monthlyIncomeInfo\");\n }\n if (src === \"CompanyOwner\") {\n return formatMessage(\n \"StandardLoan.CompanyOwner.ContractSection.netMonthlyIncomeTooltip\"\n );\n }\n return undefined;\n }),\n option.toUndefined\n );\n\n const employmentTypeReworked = isReworked(\n props.rework,\n \"contractInfo\",\n \"employmentType\"\n );\n const incomeSourceReworked = isReworked(\n props.rework,\n \"incomeInfo\",\n \"incomeSource\"\n );\n const reworkDependent = employmentTypeReworked || incomeSourceReworked;\n\n const monthlyIncome = (\n \n );\n\n return (\n \n \n \n
{monthlyIncome}
\n \n
\n \n
\n
\n
\n
\n );\n}\n\ntype IncomeTypeSelectionProps = {\n sourceOfIncome: ComputedFieldProps>;\n specialSourceOfIncome: ComputedFieldProps>;\n incomeSourceList: NonEmptyArray;\n specialIncomeSourceList: Option;\n isEditing: boolean;\n isMainIncome: boolean;\n rework: Option;\n onReset: (value: Option) => void;\n};\n\nexport function IncomeTypeSelection(props: IncomeTypeSelectionProps) {\n const formatIncomeSourceType = useFormatIncomeSourceType();\n const formatMessage = useFormatMessage();\n\n const isSourceReworked = pipe(\n props.rework,\n option.chain(rework => rework.incomeInfo),\n option.chain(incomeInfo => incomeInfo.incomeSource),\n option.isSome\n );\n\n const isSpecialTypeReworked = pipe(\n props.rework,\n option.chain(rework => rework.incomeInfo),\n option.chain(incomeInfo => incomeInfo.specialTypeOfIncome),\n option.isSome\n );\n\n const incomeSourceReworked = isReworked(\n props.rework,\n \"incomeInfo\",\n \"incomeSource\"\n );\n const reworkDependent = incomeSourceReworked;\n\n const sourceOptions: Array> = pipe(\n props.incomeSourceList,\n array.map(incomeSource => ({\n label: formatIncomeSourceType(incomeSource),\n value: incomeSource,\n }))\n );\n\n const specialSourceOptions: Array<\n DropdownOption\n > = pipe(\n props.specialIncomeSourceList,\n option.getOrElse(() => []),\n array.map(incomeSource => ({\n label: formatIncomeSourceType(incomeSource),\n value: incomeSource,\n }))\n );\n\n function formatIssues(\n condition: boolean,\n existingIssues: Option\n ): Option {\n return option.isNone(existingIssues) && condition\n ? option.some(\n fieldIssues.warnings([\n formatMessage(\"StandardLoan.Rework.fieldChangedMessage\"),\n ])\n )\n : existingIssues;\n }\n\n const handleChange = (dropdownOption: Option>): void => {\n props.onReset(dropdownOptionToValue(dropdownOption));\n props.sourceOfIncome.onChange(dropdownOptionToValue(dropdownOption));\n };\n\n const sourceOfIncomeField = (\n \n );\n\n const specialSourceOfIncomeField = (\n \n props.specialSourceOfIncome.onChange(dropdownOptionToValue(value))\n }\n disabled={\n !props.isEditing || (option.isSome(props.rework) && !reworkDependent)\n }\n issues={formatIssues(isSpecialTypeReworked, props.sourceOfIncome.issues)}\n />\n );\n\n return (\n \n {sourceOfIncomeField}\n {pipe(\n props.sourceOfIncome.value,\n option.exists(value => value === \"SpecialType\")\n ) && {specialSourceOfIncomeField}}\n \n );\n}\n","import {\n ComputedFieldProps,\n LocalizedString,\n NumberField,\n} from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { useFormatIncomeCurrency, useFormatMessage } from \"../../../intl\";\nimport { pipe } from \"fp-ts/function\";\n\ntype MonthlyIncomeProps = {\n fieldProps: ComputedFieldProps>;\n currency?: string;\n description?: LocalizedString;\n label?: LocalizedString;\n placeholder?: LocalizedString;\n min?: number;\n max?: number;\n};\n\nexport function MonthlyIncome(props: MonthlyIncomeProps) {\n const formatMessage = useFormatMessage();\n const formatCurrency = useFormatIncomeCurrency();\n\n return (\n \n );\n}\n","import { ComputedFieldProps, DropdownOption } from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { pipe, constVoid } from \"fp-ts/function\";\nimport { useFormatIncomeCurrency, useFormatMessage } from \"../../../intl\";\nimport { useQuery } from \"../../../useAPI\";\nimport * as api from \"../api\";\nimport * as remoteData from \"../../../RemoteData\";\nimport { DropdownField } from \"../../../Common/DropdownField/DropdownField\";\nimport { selectedDropdownOption } from \"../../../Common/selectDropdownOption\";\nimport { useEffect, useState } from \"react\";\n\ntype Props = {\n fieldProps: ComputedFieldProps>;\n isMainIncome: boolean;\n};\n\nexport function CurrencyDropdown(props: Props) {\n const formatMessage = useFormatMessage();\n const formatCurrency = useFormatIncomeCurrency();\n\n const [currenciesResponse] = useQuery(api.currencies);\n const [currencies, setCurrencies] = useState([]);\n\n const options: DropdownOption[] = currencies.map(\n (currency: string) => ({\n value: currency,\n label: formatCurrency(currency, \"long\"),\n })\n );\n\n const onChange = (value: Option>) => {\n props.fieldProps.onChange(\n pipe(\n value,\n option.map(v => v.value)\n )\n );\n };\n\n useEffect(() => {\n pipe(\n currenciesResponse,\n remoteData.fold(constVoid, constVoid, curr => {\n const defaultCurrency = pipe(\n props.fieldProps.value,\n option.fold(\n () => option.some(curr[0]),\n value => option.some(value)\n )\n );\n\n props.fieldProps.onChange(defaultCurrency);\n setCurrencies(curr);\n })\n );\n }, [currenciesResponse]);\n\n const initialValue = pipe(\n props.fieldProps.value,\n option.getOrElse(() => currencies[0])\n );\n\n const value = selectedDropdownOption(option.some(initialValue), options);\n\n return (\n \n );\n}\n","import {\n Banner,\n ComputedFieldProps,\n FormRow,\n FormSection,\n NumberField,\n Stack,\n unsafeLocalizedString,\n} from \"design-system\";\nimport { boolean, option } from \"fp-ts\";\nimport { constNull, pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { useFormatMessage } from \"../../../../intl\";\nimport { CompanySuggestion } from \"../../../../Common/CompanyField/domain\";\nimport { CompanyInfoRow } from \"../../commons/CompanyInfoRow\";\n\ntype Props = {\n companyNameFieldProps: ComputedFieldProps;\n companyIcoFieldProps: ComputedFieldProps;\n syncCompanyFields: (suggestion: CompanySuggestion) => void;\n stakeInCompany: ComputedFieldProps>;\n onCompanyNameValidationChange: (value: boolean) => unknown;\n onCompanyIcoValidationChange: (value: boolean) => unknown;\n};\n\nexport const STAKELIMIT = 33;\n\nexport function CompanySection(props: Props) {\n const formatMessage = useFormatMessage();\n\n return (\n \n \n \n \n \n {pipe(\n props.stakeInCompany.value,\n option.exists(value => value < STAKELIMIT),\n boolean.fold(constNull, () => (\n \n ))\n )}\n \n \n \n );\n}\n","import {\n ComputedFieldProps,\n DropdownOption,\n unsafeLocalizedString,\n} from \"design-system\";\nimport { array, tuple } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport * as remoteData from \"../../../../../../RemoteData\";\nimport { useFormatMessage } from \"../../../../../../intl\";\nimport { useQuery } from \"../../../../../../useAPI\";\nimport { businessSectors } from \"../../../../api\";\nimport {\n dropdownOptionToValue,\n selectedDropdownOption,\n} from \"../../../../../../Common/selectDropdownOption\";\nimport { DropdownField } from \"../../../../../../Common/DropdownField/DropdownField\";\n\nexport type Props = {\n fieldProps: ComputedFieldProps>;\n disabled?: boolean;\n};\n\nexport function BusinessSectorField(props: Props) {\n const formatMessage = useFormatMessage();\n\n const dropdownProps = props.fieldProps;\n\n const options: Array> = pipe(\n useQuery(businessSectors),\n tuple.fst,\n remoteData.fold(\n () => array.empty,\n () => array.empty,\n array.map(({ name, key }) => ({\n label: unsafeLocalizedString(name),\n value: key,\n }))\n )\n );\n\n const onChange = (value: Option>) => {\n dropdownProps.onChange(dropdownOptionToValue(value));\n };\n\n return (\n \n );\n}\n","import { PensionType, RetirementRentType } from \"./domain\";\nimport { useFormatMessage } from \"../../../../intl\";\n\nexport function useFormatPensionType() {\n const formatMessage = useFormatMessage();\n\n return (pensionType: PensionType) => {\n switch (pensionType) {\n case \"Disability\":\n return formatMessage(\"Mortgage.Bonita.Income.PensionType.disability\");\n case \"OldAge\":\n return formatMessage(\"Mortgage.Bonita.Income.PensionType.oldAge\");\n case \"Orphans\":\n return formatMessage(\"Mortgage.Bonita.Income.PensionType.orphans\");\n case \"Retirement\":\n return formatMessage(\"Mortgage.Bonita.Income.PensionType.retirement\");\n case \"Widower\":\n return formatMessage(\"Mortgage.Bonita.Income.PensionType.widower\");\n case \"Bursary\":\n return formatMessage(\"Mortgage.Bonita.Income.PensionType.bursary\");\n case \"RetirementAnnuity\":\n return formatMessage(\n \"Mortgage.Bonita.Income.PensionType.fosterParentReward\"\n );\n case \"FullInvalidityPension\":\n return formatMessage(\n \"Mortgage.Bonita.Income.PensionType.fullInvalidityPension\"\n );\n case \"OtherPensionOrAllowance\":\n return formatMessage(\n \"Mortgage.Bonita.Income.PensionType.otherPensionOrAllowance\"\n );\n }\n };\n}\n\nexport function useFormatRetirementRentType() {\n const formatMessage = useFormatMessage();\n\n return (retirementRent: RetirementRentType) => {\n switch (retirementRent) {\n case \"FireRescueCorps\":\n return formatMessage(\n \"Mortgage.Bonita.Income.RetirementRentType.fireRescueCorps\"\n );\n case \"FormerArmyMembers\":\n return formatMessage(\n \"Mortgage.Bonita.Income.RetirementRentType.formerArmyMembers\"\n );\n case \"GeneralInspectorate\":\n return formatMessage(\n \"Mortgage.Bonita.Income.RetirementRentType.generalInspectorate\"\n );\n case \"OfficeForForeignRelations\":\n return formatMessage(\n \"Mortgage.Bonita.Income.RetirementRentType.officeForForeignRelations\"\n );\n case \"CustomAdministration\":\n return formatMessage(\n \"Mortgage.Bonita.Income.RetirementRentType.customAdministration\"\n );\n case \"Other\":\n return formatMessage(\"Mortgage.Bonita.Income.RetirementRentType.other\");\n case \"Policeman\":\n return formatMessage(\n \"Mortgage.Bonita.Income.RetirementRentType.policeman\"\n );\n case \"PrisonService\":\n return formatMessage(\n \"Mortgage.Bonita.Income.RetirementRentType.prisonService\"\n );\n case \"SecurityInformationService\":\n return formatMessage(\n \"Mortgage.Bonita.Income.RetirementRentType.securityInformationService\"\n );\n }\n };\n}\n","import { FeedbackBlock, ContentRow } from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { useAppContext } from \"../../../useAppContext\";\n\nexport function UnableToProceed() {\n const formatMessage = useFormatMessage();\n\n const {\n config: { ezyPageURL },\n } = useAppContext();\n\n return (\n \n window.open(ezyPageURL, \"_blank\"),\n },\n ]}\n />\n \n );\n}\n","import {\n FormRow,\n FormSection,\n NumberField,\n Stack,\n useForm,\n validators,\n} from \"design-system\";\nimport { boolean, option, taskEither } from \"fp-ts\";\nimport {\n constFalse,\n constNull,\n constTrue,\n constUndefined,\n identity,\n pipe,\n} from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { foldTenant, MonthYear, Tenant } from \"../../../../globalDomain\";\nimport { useFormatMessage } from \"../../../../intl\";\nimport { useAppContext } from \"../../../../useAppContext\";\nimport { CompanySuggestion } from \"../../../../Common/CompanyField/domain\";\nimport { useValidators } from \"../../../../Common/useValidators\";\nimport { YesNoRadioGroupField } from \"../../../../Common/YesNoRadioGroup/YesNoRadioGroupField\";\nimport { ReworkIncomeNoSourceOutput } from \"../../../Rework/api\";\nimport {\n isReworked,\n useReworkComparator,\n} from \"../../../Rework/useReworkComparator\";\nimport * as api from \"../../api\";\nimport { AmountWithCurrencyField } from \"../../commons/AmountWithCurrencyField\";\nimport { CompanyInfoRow } from \"../../commons/CompanyInfoRow\";\nimport { EmploymentTypeDropdown } from \"../../commons/EmploymentTypeDropdown\";\nimport { JobPositionDropdown } from \"../../commons/JobPositionsDropdown\";\nimport { MonthYearField } from \"../../commons/MonthYearField\";\nimport { PaymentMethodRadiogroup } from \"../../commons/PaymentMethodRadioGroup\";\nimport {\n IncomeCardProps,\n useControlledSubmit,\n} from \"../../commons/useControlledSubmit\";\nimport {\n constOptionNoneValidator,\n getCompanyIcoWithDefault,\n getCompanyNameWithDefault,\n getEmptyAllowanceInfo,\n getEmptyCompanyInfo,\n getEmptyContractInfo,\n getEmptyIncomeInfo,\n notInTheFutureMonthYearValidator,\n notInThePastMonthYearValidator,\n useUniqueCompanyValidators,\n} from \"../../commons/Utils\";\nimport {\n EmployedProps,\n IncomeData,\n isOptionTrue,\n PaymentMethod,\n useFormatPaymentMethod,\n} from \"../../../../StandardLoan/IncomeForm/domain\";\n\ntype Props = IncomeCardProps & {\n abroad: boolean;\n rework: Option;\n reworkAll: boolean;\n monthlyIncome: Option;\n salaryCurrency: Option;\n};\n\nexport function EmployedCard(props: Props) {\n const formatMessage = useFormatMessage();\n const { specialFieldsReworkFieldProps } = useReworkComparator(props.rework);\n\n const {\n nonNegativeNumber,\n validCompanyNameRequired,\n validCompanyIcoRequired,\n amountMinMax,\n definedNoExtract,\n } = useValidators();\n const {\n apiParameters: { tenant },\n } = useAppContext();\n const validatedValues = useRef>(option.none);\n const formatPaymentMethod = useFormatPaymentMethod();\n\n const syncCompanyFields = (suggestion: CompanySuggestion) =>\n setFormState({\n companyName: suggestion.name,\n companyIco: suggestion.id,\n });\n\n const currentYear = new Date().getFullYear();\n const incomeData = props.incomeData;\n const options = props.options;\n\n const startingDateMinYear = useMemo(\n () =>\n pipe(\n incomeData.incomeOptions.startDateYearOptions,\n option.map(years => years.sort((a, b) => a - b)[0]),\n option.getOrElse(() => currentYear - 50)\n ),\n [incomeData.incomeOptions.startDateYearOptions]\n );\n\n const [\n uniqueCompanyNameValidator,\n uniqueCompanyIcoValidator,\n ] = useUniqueCompanyValidators(options);\n\n const initialValues = {\n salaryCurrency: props.salaryCurrency,\n monthlyIncome: props.monthlyIncome,\n companyName: getCompanyNameWithDefault(incomeData),\n companyIco: getCompanyIcoWithDefault(incomeData),\n applicantsShareHigherThan33: pipe(\n incomeData.companyInfo,\n option.chain(data => data.applicantsShareHigherThan33)\n ),\n startingDate: pipe(\n incomeData.contractInfo,\n option.chain(data => data.startingDate),\n option.altW(() => incomeData.incomeOptions.startDateEmploymentDefault),\n option.map(startingDate => {\n if (startingDate.year <= currentYear - 3) {\n return { year: startingDate.year, month: 12 } as MonthYear;\n }\n return startingDate;\n })\n ),\n jobPosition: pipe(\n incomeData.contractInfo,\n option.chain(data => data.jobPosition)\n ),\n employmentType: pipe(\n incomeData.contractInfo,\n option.chain(data => data.employmentType)\n ),\n inProbation: pipe(\n incomeData.contractInfo,\n option.chain(data => data.inProbation)\n ),\n contractIndefinitePeriod: pipe(\n incomeData.contractInfo,\n option.chain(data => data.contractIndefinitePeriod),\n option.alt(() => option.some(true))\n ),\n workBasedOnAgreementOnWorkingActivity: pipe(\n incomeData.contractInfo,\n option.chain(data => data.workBasedOnAgreementOnWorkingActivity)\n ),\n contractPeriodExpiration: pipe(\n incomeData.contractInfo,\n option.chain(data => data.contractPeriodExpiration)\n ),\n employedInSpecificProfessions: pipe(\n incomeData.contractInfo,\n option.chain(data => data.employedInSpecificProfessions)\n ),\n lengthOfUninterruptedOverallEmployment: pipe(\n incomeData.contractInfo,\n option.chain(data => data.lengthOfUninterruptedOverallEmployment)\n ) as Option,\n allowanceAmount: pipe(\n incomeData.allowanceInfo,\n option.chain(data => data.allowanceAmount)\n ) as Option,\n receivesAllowance: pipe(\n incomeData.allowanceInfo,\n option.chain(data => data.receivesAllowance),\n option.alt(() => option.some(false))\n ),\n paymentMethod: pipe(\n incomeData.contractInfo,\n option.chain(data => data.paymentMethod),\n option.alt(() =>\n foldTenant(\n tenant,\n () => option.none,\n () => option.some(\"BankTransfer\")\n )\n )\n ),\n hasAdditionalIncome: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.hasAdditionalIncome),\n option.alt(() => option.some(false))\n ),\n };\n\n const showAllowanceSection = false;\n\n const [overallEmploymentShown, setOverallEmploymentShown] = useState(false);\n const [contractExpirationShown, setContractExpirationShown] = useState(false);\n const [\n contractIndefinitePeriodShown,\n setContractIndefinitePeriodShown,\n ] = useState(false);\n const [probationFieldShown, setProbationFieldShown] = useState(false);\n const [paymentMethodShown, setPaymentMethodShown] = useState(false);\n const [\n workBasedOnAgreementOnWorkingActivityShown,\n setWorkBasedOnAgreementOnWorkingActivityShown,\n ] = useState(false);\n\n const [companyNameIsValid, setCompanyNameIsValid] = useState(true);\n const [companyIcoIsValid, setCompanyIcoIsValid] = useState(true);\n const onCompanyNameValidationChange = (isValid: boolean) => {\n setCompanyNameIsValid(isValid);\n };\n const onCompanyIcoValidationChange = (isValid: boolean) => {\n setCompanyIcoIsValid(isValid);\n };\n\n const {\n fieldProps,\n setValues: setFormState,\n handleSubmit,\n resetForm,\n } = useForm(\n {\n initialValues: initialValues,\n fieldValidators: values => ({\n salaryCurrency: () => definedNoExtract()(props.salaryCurrency),\n monthlyIncome: () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(nonNegativeNumber)\n )(props.monthlyIncome),\n companyName: pipe(\n props.abroad,\n boolean.fold(\n () =>\n validators.inSequence(\n validCompanyNameRequired(companyNameIsValid),\n uniqueCompanyNameValidator(values.companyName)\n ),\n constUndefined\n )\n ),\n companyIco: pipe(\n props.abroad,\n boolean.fold(\n () =>\n validators.inSequence(\n validCompanyIcoRequired(false, companyIcoIsValid),\n uniqueCompanyIcoValidator(values.companyIco)\n ),\n constUndefined\n )\n ),\n startingDate: notInTheFutureMonthYearValidator(\n formatMessage(\"StandardLoan.EmployedCard.startingDateError\"),\n formatMessage(\"Form.fieldError.required\")\n ),\n jobPosition: foldTenant(\n tenant,\n () => definedNoExtract(),\n constOptionNoneValidator\n ),\n employmentType: foldTenant(\n tenant,\n () => definedNoExtract(),\n constOptionNoneValidator\n ),\n inProbation: probationFieldShown\n ? definedNoExtract()\n : constOptionNoneValidator(),\n applicantsShareHigherThan33: validators.inSequence(\n definedNoExtract(),\n validators.fromPredicate(\n share =>\n props.abroad ||\n !pipe(\n share,\n option.fold(() => false, identity)\n ),\n formatMessage(\"StandardLoan.EmployedCard.applicantShareError\")\n )\n ),\n contractIndefinitePeriod: pipe(\n contractIndefinitePeriodShown,\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n ),\n workBasedOnAgreementOnWorkingActivity: foldTenant(\n tenant,\n constOptionNoneValidator,\n () =>\n pipe(\n workBasedOnAgreementOnWorkingActivityShown,\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n )\n ),\n contractPeriodExpiration: pipe(\n contractExpirationShown,\n boolean.fold(constOptionNoneValidator, () =>\n notInThePastMonthYearValidator(\n formatMessage(\n \"StandardLoan.EmployedCard.contractPeriodExpirationError\"\n ),\n formatMessage(\"Form.fieldError.required\")\n )\n )\n ),\n employedInSpecificProfessions: pipe(\n contractExpirationShown,\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n ),\n lengthOfUninterruptedOverallEmployment: pipe(\n overallEmploymentShown,\n boolean.fold(constOptionNoneValidator, () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(amountMinMax(0, 999))\n )\n )\n ),\n paymentMethod: paymentMethodShown\n ? definedNoExtract()\n : constOptionNoneValidator(),\n receivesAllowance: foldTenant(tenant, constOptionNoneValidator, () =>\n definedNoExtract()\n ),\n allowanceAmount: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n isOptionTrue(values.receivesAllowance),\n boolean.fold(constOptionNoneValidator, () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(amountMinMax(0, 999999999))\n )\n )\n )\n ),\n }),\n },\n {\n onSubmit: values =>\n taskEither.fromIO(() => {\n validatedValues.current = option.some({\n ...incomeData,\n incomeInfo: option.some({\n ...getEmptyIncomeInfo(\n props.abroad ? \"EmployedAbroad\" : \"Employed\"\n ),\n salaryCurrency: values.salaryCurrency,\n monthlyIncome: values.monthlyIncome,\n hasAdditionalIncome: values.hasAdditionalIncome,\n }),\n companyInfo: option.some({\n ...getEmptyCompanyInfo(),\n companyName: pipe(\n values.companyName,\n NonEmptyString.is,\n boolean.fold(\n () => option.none as Option,\n () => option.some(values.companyName as NonEmptyString)\n )\n ),\n companyIco: pipe(\n values.companyIco,\n NonEmptyString.is,\n boolean.fold(\n () => option.none as Option,\n () => option.some(values.companyIco as NonEmptyString)\n )\n ),\n applicantsShareHigherThan33: values.applicantsShareHigherThan33,\n }),\n contractInfo: option.some({\n ...getEmptyContractInfo(),\n startingDate: values.startingDate,\n employmentType: values.employmentType,\n inProbation: values.inProbation,\n contractIndefinitePeriod: values.contractIndefinitePeriod,\n workBasedOnAgreementOnWorkingActivity:\n values.workBasedOnAgreementOnWorkingActivity,\n contractPeriodExpiration: values.contractPeriodExpiration,\n employedInSpecificProfessions:\n values.employedInSpecificProfessions,\n lengthOfUninterruptedOverallEmployment:\n values.lengthOfUninterruptedOverallEmployment,\n paymentMethod: values.paymentMethod,\n paymentMethodLabel: pipe(\n values.paymentMethod,\n option.map(paymentMethod => formatPaymentMethod(paymentMethod))\n ),\n jobPosition: values.jobPosition,\n }),\n allowanceInfo: option.some({\n ...getEmptyAllowanceInfo(),\n receivesAllowance: values.receivesAllowance,\n allowanceAmount: values.allowanceAmount,\n }),\n });\n }),\n }\n );\n\n useEffect(() => {\n resetForm();\n }, [props.employmentType]);\n\n useControlledSubmit(props, handleSubmit, validatedValues);\n\n const disabled = !options.isEditing;\n\n const incomeSourceReworked = isReworked(\n props.rework,\n \"incomeInfo\",\n \"incomeSource\"\n );\n const reworkDependent = incomeSourceReworked;\n\n return (\n \n \n {!props.abroad && (\n \n )}\n \n \n \n {props.isMainIncome && (\n \n \n \n )}\n \n \n {showAllowanceSection &&\n foldTenant(tenant, constNull, () => (\n \n \n \n \n {isOptionTrue(fieldProps(\"receivesAllowance\").value) && (\n \n \n \n )}\n \n ))}\n \n );\n}\n\nfunction ContractsForm({\n fieldProps,\n minYear,\n maxYear,\n disabled,\n rework,\n resetFlag,\n reworkDependent,\n abroad,\n overallEmploymentShown,\n contractExpirationShown,\n contractIndefinitePeriodShown,\n workBasedOnAgreementOnWorkingActivityShown,\n probationFieldShown,\n paymentMethodShown,\n reworkAll,\n}: EmployedProps & {\n minYear: number;\n maxYear: number;\n rework: Option;\n resetFlag?: any;\n reworkDependent: boolean;\n abroad: boolean;\n overallEmploymentShown: (visible: boolean) => unknown;\n contractExpirationShown: (visible: boolean) => unknown;\n contractIndefinitePeriodShown: (visible: boolean) => unknown;\n workBasedOnAgreementOnWorkingActivityShown: (visible: boolean) => unknown;\n probationFieldShown: (visible: boolean) => unknown;\n paymentMethodShown: (visible: boolean) => unknown;\n reworkAll: boolean;\n}) {\n const formatMessage = useFormatMessage();\n const { specialFieldsReworkFieldProps } = useReworkComparator(rework);\n\n const {\n apiParameters: { tenant },\n } = useAppContext();\n\n const currentYear = new Date().getFullYear();\n\n const showContractExpirationDate = () => {\n const result =\n !abroad &&\n showContractExpiration(\n tenant,\n fieldProps(\"contractIndefinitePeriod\").value,\n fieldProps(\"employmentType\").value\n );\n contractExpirationShown(result);\n return result;\n };\n\n const showContractIndefinitePeriod = () => {\n const result =\n (!abroad && foldTenant(tenant, constFalse, constTrue)) ||\n (abroad &&\n foldTenant(tenant, constFalse, () => {\n return !pipe(\n fieldProps(\"inProbation\").value,\n option.getOrElse(constTrue)\n );\n }));\n contractIndefinitePeriodShown(result);\n return result;\n };\n\n const showWorkBasedOnAgreement = () => {\n const result = foldTenant(tenant, constFalse, () => {\n return (\n !abroad ||\n (pipe(\n fieldProps(\"contractIndefinitePeriod\").value,\n option.getOrElse(constFalse)\n ) &&\n !option.isNone(fieldProps(\"inProbation\").value) &&\n !pipe(fieldProps(\"inProbation\").value, option.getOrElse(constFalse)))\n );\n });\n workBasedOnAgreementOnWorkingActivityShown(result);\n return result;\n };\n\n const expirationIsIn24MonthFromStartingDate = (\n starting: MonthYear,\n expiration: MonthYear\n ) => {\n return (\n new Date(expiration.year, expiration.month) <\n new Date(starting.year + 2, starting.month)\n );\n };\n\n const showLengthOfOverallEmploymentField = () => {\n const result =\n showContractExpirationDate() &&\n !abroad &&\n !isOptionTrue(fieldProps(\"employedInSpecificProfessions\").value) &&\n pipe(\n fieldProps(\"startingDate\").value,\n option.fold(constFalse, startMonthYear =>\n pipe(\n fieldProps(\"contractPeriodExpiration\").value,\n option.fold(constFalse, expirationMonthYear =>\n expirationIsIn24MonthFromStartingDate(\n startMonthYear,\n expirationMonthYear\n )\n )\n )\n )\n );\n overallEmploymentShown(result);\n return result;\n };\n\n const showPaymentMethod = () => {\n const result =\n !abroad ||\n foldTenant(\n tenant,\n () =>\n pipe(\n fieldProps(\"employmentType\").value,\n option.fold(\n constFalse,\n employmentType => employmentType !== \"LimitedContract\"\n )\n ),\n () =>\n showContractIndefinitePeriod() &&\n pipe(\n fieldProps(\"contractIndefinitePeriod\").value,\n option.getOrElse(constFalse)\n )\n );\n paymentMethodShown(result);\n return result;\n };\n\n const showProbationField = () => {\n const result = foldTenant(\n tenant,\n () => {\n return (\n !abroad ||\n pipe(\n fieldProps(\"employmentType\").value,\n option.fold(\n constFalse,\n employmentType => employmentType !== \"LimitedContract\"\n )\n )\n );\n },\n constTrue\n );\n probationFieldShown(result);\n return result;\n };\n\n const contractTypeReworked = isReworked(\n rework,\n \"contractInfo\",\n \"contractIndefinitePeriod\"\n ); //for CZ\n\n const startingDateReworked = isReworked(\n rework,\n \"contractInfo\",\n \"startingDate\"\n );\n\n const employmentTypeReworked = isReworked(\n rework,\n \"contractInfo\",\n \"employmentType\"\n ); //for SK\n\n const defaultMonth = 11;\n\n return (\n \n \n \n \n {foldTenant(\n tenant,\n () => (\n \n \n \n ),\n constNull\n )}\n {foldTenant(\n tenant,\n () => (\n \n \n \n ),\n constNull\n )}\n {showProbationField() && (\n \n \n \n )}\n {showContractIndefinitePeriod() && (\n \n \n \n )}\n {showContractExpirationDate() && (\n \n \n \n )}\n {showContractExpirationDate() && (\n \n \n \n )}\n {showLengthOfOverallEmploymentField() && (\n \n \n \n )}\n\n {showWorkBasedOnAgreement() && (\n \n \n \n )}\n {showPaymentMethod() && (\n \n )}\n \n );\n}\n\nfunction showContractExpiration(\n tenant: Tenant,\n contractIndefinitePeriod: Option,\n employmentType: Option\n) {\n return foldTenant(\n tenant,\n () =>\n pipe(\n employmentType,\n option.fold(constFalse, type => type !== \"IndefiniteContract\")\n ),\n () =>\n pipe(\n contractIndefinitePeriod,\n option.getOrElse(() => true)\n ) === false\n );\n}\n","import { FormRow, FormSection, ComputedFieldProps } from \"design-system\";\nimport { useFormatMessage } from \"../../../../../intl\";\nimport { Option } from \"fp-ts/Option\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { CompanySuggestion } from \"../../../../../Common/CompanyField/domain\";\nimport { CompanyInfoRow } from \"../../../commons/CompanyInfoRow\";\nimport { BusinessSectorField } from \"./Fields/BusinessSectorField\";\nimport { MonthYear } from \"../../../../../globalDomain\";\nimport { MonthYearField } from \"../../../commons/MonthYearField\";\n\ntype PropsCZ = {\n companyIcoFieldProps: ComputedFieldProps;\n companyNameFieldProps: ComputedFieldProps;\n syncCompanyFields: (suggestion: CompanySuggestion) => void;\n onCompanyNameValidationChange: (value: boolean) => unknown;\n onCompanyIcoValidationChange: (value: boolean) => unknown;\n};\n\nexport function CompanySectionCZ(props: PropsCZ) {\n const formatMessage = useFormatMessage();\n\n return (\n \n \n \n );\n}\n\ntype PropsSK = {\n companyIcoFieldProps: ComputedFieldProps;\n companyNameFieldProps: ComputedFieldProps;\n businessSectorFieldProps: ComputedFieldProps>;\n businessStartingDateFieldProps: ComputedFieldProps>;\n startingDateMinYear: number;\n currentYear: number;\n syncCompanyFields: (suggestion: CompanySuggestion) => void;\n onCompanyNameValidationChange: (value: boolean) => unknown;\n onCompanyIcoValidationChange: (value: boolean) => unknown;\n};\n\nexport function CompanySectionSK(props: PropsSK) {\n const formatMessage = useFormatMessage();\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","import { YesNoRadioGroupField } from \"../../../../../Common/YesNoRadioGroup/YesNoRadioGroupField\";\nimport {\n FormRow,\n FormSection,\n ComputedFieldProps,\n Box,\n Button,\n PlusIcon,\n} from \"design-system\";\nimport { useFormatMessage } from \"../../../../../intl\";\nimport { Option } from \"fp-ts/Option\";\nimport { Dispatch, SetStateAction, useMemo } from \"react\";\nimport { pipe } from \"fp-ts/function\";\nimport { option } from \"fp-ts\";\n\nimport { MoneyField } from \"../../../../../Common/Price/MoneyField/MoneyField\";\nimport { useTenantCurrency } from \"../../../../../Common/useTenantCurrency\";\nimport { R37Field } from \"./Fields/R37Field\";\nimport { R39Field } from \"./Fields/R39Field\";\nimport { R101Field } from \"./Fields/R101Field\";\nimport { RentFields } from \"./Fields/RentFields\";\n\ntype PropsCZ = {\n keepsAccountancyFieldProps: ComputedFieldProps>;\n equityPositiveFieldProps: ComputedFieldProps>;\n equityFromLastYearFieldProps: ComputedFieldProps>;\n grossIncomesFieldProps: ComputedFieldProps>;\n r37PartialTaxBaseFieldProps: ComputedFieldProps>;\n r39PartialTaxBaseFieldProps: ComputedFieldProps>;\n r201IncomeFromLeaseFieldProps: ComputedFieldProps>;\n r101BruttoIncomesFieldProps: ComputedFieldProps>;\n reInPersonalOwnershipFieldProps: ComputedFieldProps>;\n reUsedAsCollateralFieldProps: ComputedFieldProps>;\n reCoOwned: ComputedFieldProps>;\n incomeFromRentContractFieldProps: ComputedFieldProps>;\n isCooperativeOwnership: ComputedFieldProps>;\n isApplicantDeclareAsUserInDeclaration: ComputedFieldProps>;\n hasAdditionalIncome: ComputedFieldProps>;\n addInfoFromTaxReturn: boolean;\n setAddInfoFromTaxReturn: Dispatch>;\n isMainIncome: boolean;\n isEditing: boolean;\n};\n\nexport function IncomeSectionCZ(props: PropsCZ) {\n const formatMessage = useFormatMessage();\n const currency = useTenantCurrency();\n\n const MIN_MONEY_VALIDATION = -999999999;\n const MAX_MONEY_VALIDATION = 999999999;\n\n const onAddInfoFromTaxReturn = () => {\n props.setAddInfoFromTaxReturn(true);\n };\n const onCloseAddInfoFromTaxReturnSection = () => {\n props.setAddInfoFromTaxReturn(false);\n };\n\n const keepAccountancy = useMemo(() => {\n return pipe(props.keepsAccountancyFieldProps.value, option.toNullable);\n }, [props.keepsAccountancyFieldProps]);\n\n const equityPositive = useMemo(() => {\n return pipe(props.equityPositiveFieldProps.value, option.toNullable);\n }, [props.equityPositiveFieldProps]);\n\n const r39Value = useMemo(() => {\n return pipe(\n props.r39PartialTaxBaseFieldProps.value,\n option.getOrElse(() => 0)\n );\n }, [props.r39PartialTaxBaseFieldProps]);\n\n const r39AdditionalFields = (\n \n );\n\n return (\n \n \n \n \n {props.isMainIncome && (\n \n \n \n )}\n {keepAccountancy && [\n \n \n ,\n props.addInfoFromTaxReturn && [\n \n \n \n \n ,\n props.addInfoFromTaxReturn &&\n equityPositive && [\n \n \n ,\n \n \n ,\n ,\n ,\n ],\n r39Value != 0 && r39AdditionalFields,\n ],\n ]}\n {!props.addInfoFromTaxReturn && [\n \n \n \n \n ,\n ]}\n {props.addInfoFromTaxReturn &&\n typeof keepAccountancy === \"boolean\" &&\n !keepAccountancy && [\n ,\n ,\n r39Value != 0 && r39AdditionalFields,\n ,\n ]}\n \n );\n}\n\ntype PropsSK = {\n businessGrossIncomeFieldProps: ComputedFieldProps>;\n taxFieldProps: ComputedFieldProps>;\n taxBaseFieldProps: ComputedFieldProps>;\n hasAdditionalIncome: ComputedFieldProps>;\n addInfoFromTaxReturn: boolean;\n setAddInfoFromTaxReturn: Dispatch>;\n isMainIncome: boolean;\n isEditing: boolean;\n};\n\nexport function IncomeSectionSK(props: PropsSK) {\n const formatMessage = useFormatMessage();\n\n const currency = useTenantCurrency();\n\n const onAddInfoFromTaxReturn = () => {\n props.setAddInfoFromTaxReturn(true);\n };\n const onCloseAddInfoFromTaxReturnSection = () => {\n props.setAddInfoFromTaxReturn(false);\n };\n\n return (\n \n {props.isMainIncome && (\n \n \n \n )}\n {!props.addInfoFromTaxReturn && [\n \n \n \n \n ,\n ]}\n {props.addInfoFromTaxReturn && [\n \n \n \n \n ,\n \n \n ,\n \n \n ,\n \n \n ,\n ]}\n \n );\n}\n","import { FormRow } from \"design-system\";\nimport { useFormatMessage } from \"../../../../../../intl\";\nimport { MoneyField } from \"../../../../../../Common/Price/MoneyField/MoneyField\";\nimport { RFieldProps } from \"../domain\";\n\nexport function R37Field(props: RFieldProps) {\n const formatMessage = useFormatMessage();\n\n return (\n \n \n \n );\n}\n","import { FormRow } from \"design-system\";\nimport { useFormatMessage } from \"../../../../../../intl\";\nimport { MoneyField } from \"../../../../../../Common/Price/MoneyField/MoneyField\";\nimport { RFieldProps } from \"../domain\";\n\nexport function R39Field(props: RFieldProps) {\n const formatMessage = useFormatMessage();\n\n return (\n \n \n \n );\n}\n","import { apiCall } from \"../../APICall\";\nimport { eq } from \"fp-ts\";\nimport * as t from \"io-ts\";\nimport { constFalse } from \"fp-ts/function\";\n\nconst PrepareDocumentsStatus = t.keyof(\n {\n STARTED: true,\n KYC_REJECTED: true,\n },\n \"PrepareDocumentsStatus\"\n);\n\nconst PrepareDocumentsOutput = t.type(\n {\n status: PrepareDocumentsStatus,\n },\n \"PrepareDocumentsOutput\"\n);\nexport const prepareDocuments = apiCall({\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: PrepareDocumentsOutput,\n path: [\"packages\", \"loans\", \"standard-loan\", \"prepareDocuments\"],\n});\n\nconst DocumentsPreparedStatus = t.keyof(\n {\n retry: true,\n success: true,\n error: true,\n },\n \"DocumentsPreparedStatus\"\n);\n\nconst CheckDocumentsPreparedOutput = t.type(\n {\n status: DocumentsPreparedStatus,\n },\n \"CheckDocumentsPreparedOutput\"\n);\n\nexport const checkDocumentPrepared = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"checkDocumentsPrepared\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: CheckDocumentsPreparedOutput,\n});\n","import {\n FormRow,\n FormSection,\n NumberInputStepperField,\n useForm,\n validators,\n} from \"design-system\";\nimport { Option } from \"fp-ts/Option\";\nimport { option, taskEither } from \"fp-ts\";\nimport { constNull, pipe } from \"fp-ts/function\";\nimport { useEffect, useRef } from \"react\";\nimport { useValidators } from \"../../../Common/useValidators\";\nimport { AlimonyIncomeDetails, IncomeData, PaymentMethod } from \"../domain\";\nimport {\n constOptionNoneValidator,\n getEmptyAllowanceInfo,\n getEmptyCompanyInfo,\n getEmptyContractInfo,\n getEmptyIncomeInfoSpecial,\n} from \"../../../StandardLoan/IncomeForm/commons/Utils\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { useTenantCurrency } from \"../../../Common/useTenantCurrency\";\nimport { foldTenant } from \"../../../globalDomain\";\nimport { useAppContext } from \"../../../useAppContext\";\nimport { MonthlyIncome } from \"../commons/MonthlyIncomeField\";\nimport { YesNoRadioGroupField } from \"../../../Common/YesNoRadioGroup/YesNoRadioGroupField\";\nimport { PaymentMethodRadiogroup } from \"../commons/PaymentMethodRadioGroup\";\nimport { CurrencyDropdown } from \"../commons/CurrencyDropdown\";\nimport {\n IncomeCardProps,\n useControlledSubmit,\n} from \"../commons/useControlledSubmit\";\nimport { useReworkComparator } from \"../../Rework/useReworkComparator\";\n\nexport function AlimonyCard(props: IncomeCardProps) {\n const { incomeData, options } = props;\n\n const { amountMinMax, definedNoExtract, nonNegativeNumber } = useValidators();\n const validatedValues = useRef>(option.none);\n const formatMessage = useFormatMessage();\n const tenantCurrency = useTenantCurrency();\n\n const {\n reworkFieldProps,\n specialFieldsReworkFieldProps,\n } = useReworkComparator(props.rework);\n\n const {\n apiParameters: { tenant },\n } = useAppContext();\n\n const { fieldProps, handleSubmit, resetForm } = useForm(\n {\n initialValues: {\n alimonyChildrenInvolved: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.alimonyIncomeDetails),\n option.chain(value => value.alimonyChildrenInvolved),\n option.alt(() => option.some(1))\n ) as Option,\n alimonyIdentifiable: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.alimonyIncomeDetails),\n option.chain(value => value.alimonyIdentifiable)\n ),\n alimonyOutsideCountry: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.alimonyIncomeDetails),\n option.chain(value => value.alimonyOutsideCountry)\n ),\n monthlyAlimonyIncome: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.alimonyIncomeDetails),\n option.chain(value => value.monthlyAlimonyIncome)\n ) as Option,\n paymentMethod: pipe(\n incomeData.contractInfo,\n option.chain(data => data.paymentMethod)\n ),\n alimonyCurrency: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.alimonyIncomeDetails),\n option.chain(value => value.alimonyCurrency)\n ),\n },\n fieldValidators: () => ({\n alimonyChildrenInvolved: validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(nonNegativeNumber)\n ),\n alimonyIdentifiable: foldTenant(tenant, constOptionNoneValidator, () =>\n definedNoExtract()\n ),\n alimonyOutsideCountry: foldTenant(\n tenant,\n constOptionNoneValidator,\n () => definedNoExtract()\n ),\n paymentMethod: foldTenant(\n tenant,\n () => definedNoExtract(),\n constOptionNoneValidator\n ),\n monthlyAlimonyIncome: validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(amountMinMax(0, 999_999_999))\n ),\n currency: definedNoExtract(),\n }),\n },\n {\n onSubmit: values =>\n taskEither.fromIO(() => {\n validatedValues.current = option.some({\n ...incomeData,\n incomeInfo: option.some({\n ...getEmptyIncomeInfoSpecial(\"Alimony\"),\n alimonyIncomeDetails: option.some({\n alimonyChildrenInvolved: values.alimonyChildrenInvolved,\n alimonyIdentifiable: values.alimonyIdentifiable,\n alimonyOutsideCountry: values.alimonyOutsideCountry,\n monthlyAlimonyIncome: values.monthlyAlimonyIncome,\n alimonyCurrency: values.alimonyCurrency,\n }),\n }),\n companyInfo: option.some({\n ...getEmptyCompanyInfo(),\n }),\n contractInfo: option.some({\n ...getEmptyContractInfo(),\n paymentMethod: values.paymentMethod,\n }),\n allowanceInfo: option.some({\n ...getEmptyAllowanceInfo(),\n }),\n });\n }),\n }\n );\n useEffect(() => {\n resetForm();\n }, [props.employmentType]);\n useControlledSubmit(props, handleSubmit, validatedValues);\n\n const reworkedAlimony = (alimonyField: keyof AlimonyIncomeDetails): boolean =>\n pipe(\n props.rework,\n option.chain(rework => rework.incomeInfo),\n option.chain(incomeInfo => incomeInfo.alimonyIncomeDetails),\n option.map(details => details[alimonyField]),\n option.fold(\n () => false,\n () => true\n )\n );\n\n const monthlyAlimonyIncomeReworked = reworkedAlimony(\"monthlyAlimonyIncome\");\n const alimonyChildrenInvolvedReworked = reworkedAlimony(\n \"alimonyChildrenInvolved\"\n );\n const alimonyIdentifiableReworked = reworkedAlimony(\"alimonyIdentifiable\");\n const alimonyOutsideCountryReworked = reworkedAlimony(\n \"alimonyOutsideCountry\"\n );\n const alimonyCurrencyReworked = reworkedAlimony(\"alimonyCurrency\");\n\n const disabled = !options.isEditing;\n\n return (\n \n \n (() => tenantCurrency)\n )}\n />\n \n \n \n fieldProps(\"alimonyChildrenInvolved\").onChange(\n pipe(\n value,\n option.map(v => Math.round(v))\n )\n )\n }\n />\n \n {foldTenant(tenant, constNull, () => (\n \n \n \n ))}\n {foldTenant(tenant, constNull, () => (\n \n \n \n ))}\n {foldTenant(\n tenant,\n () => (\n \n \n \n ),\n constNull\n )}\n \n \n \n \n );\n}\n","import { Stack, useForm, validators } from \"design-system\";\nimport { boolean, option, taskEither } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { useRef, useEffect, useState } from \"react\";\nimport { foldTenant } from \"../../../../globalDomain\";\nimport { useFormatMessage } from \"../../../../intl\";\nimport { useAppContext } from \"../../../../useAppContext\";\nimport { CompanySuggestion } from \"../../../../Common/CompanyField/domain\";\nimport { useValidators } from \"../../../../Common/useValidators\";\nimport {\n isReworked,\n useReworkComparator,\n} from \"../../../Rework/useReworkComparator\";\nimport { EmploymentType } from \"../../api\";\nimport {\n IncomeCardProps,\n useControlledSubmit,\n} from \"../../commons/useControlledSubmit\";\nimport {\n constOptionNoneValidator,\n getCompanyIcoWithDefault,\n getCompanyNameWithDefault,\n getEmptyAllowanceInfo,\n getEmptyCompanyInfo,\n getEmptyContractInfo,\n getEmptyIncomeInfo,\n notInTheFutureMonthYearValidator,\n useUniqueCompanyValidators,\n} from \"../../commons/Utils\";\nimport {\n IncomeData,\n isOptionTrue,\n PaymentMethod,\n useFormatPaymentMethod,\n} from \"../../../../StandardLoan/IncomeForm/domain\";\nimport { CompanySection } from \"./CompanySection\";\nimport { ContractSection } from \"./ContractSection/ContractSection\";\nimport { IncomeSection } from \"./IncomeSection/IncomeSection\";\n\nexport function CompanyOwnerCard(props: IncomeCardProps) {\n const { incomeData, options } = props;\n const {\n definedNoExtract,\n validCompanyNameRequired,\n validCompanyIcoRequired,\n amountMinMax,\n nonNegativeNumber,\n } = useValidators();\n const formatMessage = useFormatMessage();\n const {\n apiParameters: { tenant },\n } = useAppContext();\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(nonNegativeNumber)\n );\n const validatedValues = useRef>(option.none);\n\n const syncCompanyFields = (suggestion: CompanySuggestion) =>\n setFormState({\n companyName: suggestion.name,\n companyIco: suggestion.id,\n });\n\n const [\n uniqueCompanyNameValidator,\n uniqueCompanyIcoValidator,\n ] = useUniqueCompanyValidators(options);\n\n const [companyNameIsValid, setCompanyNameIsValid] = useState(true);\n const [companyIcoIsValid, setCompanyIcoIsValid] = useState(true);\n\n const { specialFieldsReworkFieldProps } = useReworkComparator(props.rework);\n const formatPaymentMethod = useFormatPaymentMethod();\n const initialValues = {\n salaryCurrency: props.salaryCurrency,\n monthlyIncome: props.monthlyIncome,\n companyName: getCompanyNameWithDefault(incomeData),\n companyIco: getCompanyIcoWithDefault(incomeData),\n stakeInCompany: pipe(\n incomeData.companyInfo,\n option.chain(data => data.stakeInCompany)\n ),\n equityPositive: pipe(\n incomeData.companyInfo,\n option.chain(data => data.equityPositive)\n ),\n isProfitPeriodPositive: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.isProfitPeriodPositive),\n option.alt(() => option.some(true))\n ),\n employedInCompany: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.employedInCompany),\n option.alt(() => option.some(true))\n ),\n startingDate: pipe(\n incomeData.contractInfo,\n option.chain(data => data.startingDate)\n ),\n inProbation: pipe(\n incomeData.contractInfo,\n option.chain(data => data.inProbation)\n ),\n contractIndefinitePeriod: pipe(\n incomeData.contractInfo,\n option.chain(data => data.contractIndefinitePeriod),\n option.alt(() => option.some(true))\n ),\n workBasedOnAgreementOnWorkingActivity: pipe(\n incomeData.contractInfo,\n option.chain(data => data.workBasedOnAgreementOnWorkingActivity)\n ),\n paymentMethod: pipe(\n incomeData.contractInfo,\n option.chain(data => data.paymentMethod)\n ),\n employmentType: pipe(\n incomeData.contractInfo,\n option.chain(data => data.employmentType)\n ),\n jobPosition: pipe(\n incomeData.contractInfo,\n option.chain(data => data.jobPosition)\n ),\n hasAdditionalIncome: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.hasAdditionalIncome),\n option.alt(() => option.some(false))\n ),\n };\n const {\n fieldProps,\n setValues: setFormState,\n handleSubmit,\n setTouched,\n resetForm,\n } = useForm(\n {\n initialValues: initialValues,\n fieldValidators: values => ({\n salaryCurrency: () => definedNoExtract()(props.salaryCurrency),\n monthlyIncome: () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(nonNegativeNumber)\n )(props.monthlyIncome),\n companyName: validators.inSequence(\n validCompanyNameRequired(companyNameIsValid),\n uniqueCompanyNameValidator(values.companyName)\n ),\n companyIco: validators.inSequence(\n validCompanyIcoRequired(false, companyIcoIsValid),\n uniqueCompanyIcoValidator(values.companyIco)\n ),\n stakeInCompany: validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(amountMinMax(0, 100))\n ),\n equityPositive: validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(\n validators.fromPredicate(\n equity => equity === true,\n formatMessage(\"StandardLoan.CompanyOwnerCard.equityNegativeError\")\n )\n )\n ),\n employedInCompany: validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(\n validators.fromPredicate(\n inCompany => inCompany === true,\n formatMessage(\n \"StandardLoan.CompanyOwnerCard.employedInCompanyNegativeError\"\n )\n )\n )\n ),\n startingDate: pipe(\n isOptionTrue(values.employedInCompany),\n boolean.fold(constOptionNoneValidator, () =>\n notInTheFutureMonthYearValidator(\n formatMessage(\n \"StandardLoan.CompanyOwnerCard.invalidStartingDate\"\n ),\n formatMessage(\"Form.fieldError.required\")\n )\n )\n ),\n inProbation: pipe(\n isOptionTrue(values.employedInCompany),\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n ),\n contractIndefinitePeriod: pipe(\n isOptionTrue(values.employedInCompany),\n boolean.fold(constOptionNoneValidator, () =>\n foldTenant(tenant, constOptionNoneValidator, () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(\n validators.fromPredicate(\n inCompany => inCompany,\n formatMessage(\n \"StandardLoan.CompanyOwnerCard.noIndefinitePeriodContract\"\n )\n )\n )\n )\n )\n )\n ),\n workBasedOnAgreementOnWorkingActivity: foldTenant(\n tenant,\n constOptionNoneValidator,\n () =>\n pipe(\n isOptionTrue(values.employedInCompany),\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n )\n ),\n paymentMethod: pipe(\n isOptionTrue(values.employedInCompany),\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n ),\n\n employmentType: foldTenant(\n tenant,\n () =>\n pipe(\n isOptionTrue(values.employedInCompany),\n boolean.fold(constOptionNoneValidator, () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(\n validators.fromPredicate(\n typeOfEmployment =>\n typeOfEmployment !== \"LimitedContract\",\n formatMessage(\n \"StandardLoan.CompanyOwnerCard.limitedContract\"\n )\n )\n )\n )\n )\n ),\n constOptionNoneValidator\n ),\n jobPosition: foldTenant(\n tenant,\n () =>\n pipe(\n isOptionTrue(values.employedInCompany),\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n ),\n constOptionNoneValidator\n ),\n }),\n },\n {\n onSubmit: data =>\n taskEither.fromIO(\n () =>\n (validatedValues.current = option.some({\n ...incomeData,\n companyInfo: option.some({\n ...getEmptyCompanyInfo(),\n companyName: pipe(\n data.companyName,\n NonEmptyString.decode,\n option.fromEither\n ),\n companyIco: pipe(\n data.companyIco,\n NonEmptyString.decode,\n option.fromEither\n ),\n stakeInCompany: data.stakeInCompany,\n equityPositive: data.equityPositive,\n }),\n incomeInfo: option.some({\n ...getEmptyIncomeInfo(\"CompanyOwner\"),\n employedInCompany: data.employedInCompany,\n isProfitPeriodPositive: data.isProfitPeriodPositive,\n salaryCurrency: data.salaryCurrency,\n monthlyIncome: data.monthlyIncome,\n hasAdditionalIncome: data.hasAdditionalIncome,\n }),\n contractInfo: option.some({\n ...getEmptyContractInfo(),\n startingDate: data.startingDate,\n inProbation: data.inProbation,\n contractIndefinitePeriod: data.contractIndefinitePeriod,\n workBasedOnAgreementOnWorkingActivity:\n data.workBasedOnAgreementOnWorkingActivity,\n paymentMethod: data.paymentMethod,\n paymentMethodLabel: pipe(\n data.paymentMethod,\n option.map(paymentMethod =>\n formatPaymentMethod(paymentMethod)\n )\n ),\n employmentType: data.employmentType,\n jobPosition: data.jobPosition,\n }),\n allowanceInfo: option.some({ ...getEmptyAllowanceInfo() }),\n }))\n ),\n }\n );\n\n useEffect(() => {\n resetForm();\n }, [props.employmentType]);\n\n useControlledSubmit(props, handleSubmit, validatedValues);\n setTouched({ contractIndefinitePeriod: true });\n\n const employmentTypeReworked = isReworked(\n props.rework,\n \"contractInfo\",\n \"employmentType\"\n );\n const incomeSourceReworked = isReworked(\n props.rework,\n \"incomeInfo\",\n \"incomeSource\"\n );\n const disabled = !options.isEditing;\n const reworkDependent = employmentTypeReworked || incomeSourceReworked;\n\n const employedInCompanyReworked = isReworked(\n props.rework,\n \"incomeInfo\",\n \"employedInCompany\"\n );\n const onCompanyNameValidationChange = (isValid: boolean) => {\n setCompanyNameIsValid(isValid);\n };\n const onCompanyIcoValidationChange = (isValid: boolean) => {\n setCompanyIcoIsValid(isValid);\n };\n\n return (\n \n \n \n \n \n );\n}\n","import {\n ComputedFieldProps,\n FormRow,\n FormSection,\n RadioGroupField,\n} from \"design-system\";\nimport { boolean, option, record } from \"fp-ts\";\nimport { constNull, identity, 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 { foldTenant, MonthYear } from \"../../../../../globalDomain\";\nimport { useFormatMessage } from \"../../../../../intl\";\nimport { useAppContext } from \"../../../../../useAppContext\";\nimport { YesNoRadioGroupField } from \"../../../../../Common/YesNoRadioGroup/YesNoRadioGroupField\";\nimport { EmploymentType } from \"../../../api\";\nimport { JobPositionDropdown } from \"../../../commons/JobPositionsDropdown\";\nimport { MonthYearField } from \"../../../commons/MonthYearField\";\nimport {\n isOptionTrue,\n PaymentMethod,\n PaymentMethodCZ,\n PaymentMethodSK,\n useFormatPaymentMethod,\n} from \"../../../domain\";\nimport { EmploymentTypeDropdown } from \"./EmploymentTypeDropdown\";\nimport { STAKELIMIT } from \"../CompanySection\";\n\ntype Props = {\n employedInCompanyFieldProps: ComputedFieldProps>;\n startingDateFieldProps: ComputedFieldProps>;\n inProbationFieldProps: ComputedFieldProps>;\n contractIndefinitePeriodFieldProps: ComputedFieldProps>;\n workBasedOnAgreementOnWorkingActivityFieldProps: ComputedFieldProps<\n Option\n >;\n paymentMethodFieldProps: ComputedFieldProps>;\n jobPositionFieldProps: ComputedFieldProps>;\n employmentTypeFieldProps: ComputedFieldProps>;\n isEquityPositive: Option;\n stakeInCompany: ComputedFieldProps>;\n};\nexport function ContractSection(props: Props) {\n const formatMessage = useFormatMessage();\n const {\n apiParameters: { tenant },\n } = useAppContext();\n\n const currentYear = new Date().getFullYear();\n const formatPaymentMethod = useFormatPaymentMethod();\n\n const paymentMethods = pipe(\n foldTenant(\n tenant,\n () => record.keys(PaymentMethodSK.keys) as NonEmptyArray,\n () => record.keys(PaymentMethodCZ.keys) as NonEmptyArray\n )\n );\n\n const inProbationField = (\n \n \n \n );\n\n function isStakeInCompanyOverStakeLimit(): boolean {\n return pipe(\n props.stakeInCompany.value,\n option.exists(value => value >= STAKELIMIT)\n );\n }\n\n return pipe(\n isOptionTrue(props.isEquityPositive) ||\n isOptionTrue(props.employedInCompanyFieldProps.value) ||\n isStakeInCompanyOverStakeLimit(),\n boolean.fold(constNull, () => (\n \n {(isOptionTrue(props.isEquityPositive) ||\n isStakeInCompanyOverStakeLimit()) && (\n \n \n \n )}\n {(isOptionTrue(props.isEquityPositive) ||\n isStakeInCompanyOverStakeLimit()) &&\n isOptionTrue(props.employedInCompanyFieldProps.value) && [\n \n \n ,\n foldTenant(\n tenant,\n () => [\n ,\n ,\n inProbationField,\n ],\n () => [\n inProbationField,\n \n \n ,\n \n \n ,\n ]\n ),\n \n option.some(<>)}\n optionKey={identity}\n isOptionDisabled={() => false}\n renderOption={formatPaymentMethod}\n options={paymentMethods}\n label={formatMessage(\n \"StandardLoan.CompanyOwner.ContractSection.paymentMethodLabel\"\n )}\n />\n ,\n ]}\n \n ))\n );\n}\n","import { DropdownField } from \"../../../../../Common/DropdownField/DropdownField\";\nimport {\n dropdownOptionToValue,\n selectedDropdownOption,\n} from \"../../../../../Common/selectDropdownOption\";\nimport { DropdownOption, ComputedFieldProps } from \"design-system\";\nimport { useFormatMessage } from \"../../../../../intl\";\nimport { Option } from \"fp-ts/Option\";\nimport { record } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { useFormatEmploymentType } from \"../../../../../StandardLoan/IncomeForm/domain\";\nimport { EmploymentType } from \"../../../api\";\n\ntype Props = {\n fieldProps: ComputedFieldProps>;\n disabled?: boolean;\n};\nexport function EmploymentTypeDropdown({ fieldProps, disabled }: Props) {\n const formatMessage = useFormatMessage();\n const formatEmploymentType = useFormatEmploymentType();\n\n const dropdownOptions: Array> = pipe(\n EmploymentType.keys,\n record.collect(employmentType => ({\n value: employmentType,\n label: formatEmploymentType(employmentType),\n }))\n );\n\n const onChange = (dropdownOption: Option>) => {\n fieldProps.onChange(dropdownOptionToValue(dropdownOption));\n };\n\n const value = selectedDropdownOption(fieldProps.value, dropdownOptions);\n\n return (\n \n );\n}\n","import { ComputedFieldProps, FormRow, FormSection } from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { useFormatMessage } from \"../../../../../intl\";\nimport { useAppContext } from \"../../../../../useAppContext\";\nimport { YesNoRadioGroupField } from \"../../../../../Common/YesNoRadioGroup/YesNoRadioGroupField\";\n\ntype Props = {\n equityPositiveFieldProps: ComputedFieldProps>;\n isProfitPeriodPositive: ComputedFieldProps>;\n hasAdditionalIncome: ComputedFieldProps>;\n isMainIncome: boolean;\n};\n\nexport function IncomeSection(props: Props) {\n const formatMessage = useFormatMessage();\n\n const {\n apiParameters: {},\n } = useAppContext();\n\n const isEquityPositive = pipe(\n props.equityPositiveFieldProps.value,\n option.toNullable\n );\n\n return (\n \n \n \n \n {isEquityPositive && (\n \n \n \n )}\n {props.isMainIncome && (\n \n \n \n )}\n \n );\n}\n","import {\n ComputedFieldProps,\n LocalizedString,\n NumberField,\n TextChildren,\n} from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { useFormatIncomeCurrency } from \"../../../intl\";\nimport { useTenantCurrency } from \"../../../Common/useTenantCurrency\";\n\ntype Props = {\n fieldProps: ComputedFieldProps>;\n description?: LocalizedString;\n placeholder: LocalizedString;\n autoFocus?: boolean;\n min?: number;\n max?: number;\n allowNegative?: boolean;\n assistiveText?: TextChildren;\n currency?: string;\n disabled?: boolean;\n label: LocalizedString;\n};\n\nexport function AmountWithCurrencyField(props: Props) {\n const formatCurrency = useFormatIncomeCurrency();\n const tenantCurrency = useTenantCurrency();\n\n return (\n \n );\n}\n","import { ComputedFieldProps, DropdownOption } from \"design-system\";\nimport { record } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { DropdownField } from \"../../../Common/DropdownField/DropdownField\";\nimport {\n dropdownOptionToValue,\n selectedDropdownOption,\n} from \"../../../Common/selectDropdownOption\";\nimport * as api from \"../api\";\nimport { useFormatEmploymentType } from \"../domain\";\n\ntype Props = {\n fieldProps: ComputedFieldProps>;\n};\n\nexport function EmploymentTypeDropdown({ fieldProps }: Props) {\n const formatMessage = useFormatMessage();\n const formatEmploymentType = useFormatEmploymentType();\n\n const dropdownOptions: Array> = pipe(\n api.EmploymentType.keys,\n record.collect(employmentType => ({\n value: employmentType,\n label: formatEmploymentType(employmentType),\n }))\n );\n\n const onChange = (\n dropdownOption: Option>\n ) => {\n fieldProps.onChange(dropdownOptionToValue(dropdownOption));\n };\n\n const value = selectedDropdownOption(fieldProps.value, dropdownOptions);\n\n return (\n \n );\n}\n","import {\n PlusIcon,\n Button,\n FormRow,\n FormSection,\n Stack,\n useForm,\n validators,\n Box,\n} from \"design-system\";\nimport { boolean, option, taskEither } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { constFalse, constNull, constTrue, pipe } from \"fp-ts/function\";\nimport { IncomeData, isOptionTrue } from \"../domain\";\nimport { CompanySuggestion } from \"../../../Common/CompanyField/domain\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { YesNoRadioGroupField } from \"../../../Common/YesNoRadioGroup/YesNoRadioGroupField\";\nimport { MonthYearField } from \"../commons/MonthYearField\";\nimport { foldTenant } from \"../../../globalDomain\";\nimport { useAppContext } from \"../../../useAppContext\";\nimport { useTenantCurrency } from \"../../../Common/useTenantCurrency\";\nimport { useValidators } from \"../../../Common/useValidators\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n constOptionNoneValidator,\n getEmptyAllowanceInfo,\n getEmptyCompanyInfo,\n getEmptyContractInfo,\n getEmptyIncomeInfo,\n notInTheFutureMonthYearValidator,\n useUniqueCompanyValidators,\n} from \"../commons/Utils\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { FreelancerTypeDropdown } from \"../commons/FreelancerTypeDrowdown\";\nimport { ClientWithoutICO, CompanyInfoRow } from \"../commons/CompanyInfoRow\";\nimport {\n IncomeCardProps,\n useControlledSubmit,\n} from \"../commons/useControlledSubmit\";\nimport {\n isReworked,\n useReworkComparator,\n} from \"../../Rework/useReworkComparator\";\nimport { MoneyField } from \"../../../Common/Price/MoneyField/MoneyField\";\nimport { useQuery } from \"../../../useAPI\";\nimport * as api from \"../api\";\nimport * as remoteData from \"../../../RemoteData\";\n\nconst MIN_AMOUNT = -999999999;\nconst MAX_AMOUNT = 999999999;\n\nexport function FreelancerCard(props: IncomeCardProps) {\n const formatMessage = useFormatMessage();\n const {\n validCompanyNameRequired,\n validCompanyIcoRequired,\n amountMinMaxWithNegative,\n definedNoExtract,\n validCompanyIco,\n validAddressField,\n validStreetNumber,\n validPhone,\n nonBlankString,\n nonNegativeNumber,\n } = useValidators();\n const {\n apiParameters: { tenant },\n } = useAppContext();\n const tenantCurrency = useTenantCurrency();\n const validatedValues = useRef>(option.none);\n\n const { options, incomeData } = props;\n\n const syncCompanyFields = (suggestion: CompanySuggestion) =>\n setFormState({\n companyName: suggestion.name,\n companyIco: suggestion.id,\n });\n\n const [\n uniqueCompanyNameValidator,\n uniqueCompanyIcoValidator,\n ] = useUniqueCompanyValidators(options);\n\n const amountValidator = () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(\n amountMinMaxWithNegative(MIN_AMOUNT, MAX_AMOUNT)\n )\n );\n const SKOnlyAmountValidator = foldTenant(\n tenant,\n amountValidator,\n constOptionNoneValidator\n );\n\n function shouldValidateCompanyIco(\n entrepreneurIcoOption: Option,\n addIco: Option\n ): boolean {\n if (isOptionTrue(addIco)) {\n const entrepreneurIco = pipe(\n entrepreneurIcoOption,\n option.getOrElse(() => \"\")\n );\n return entrepreneurIco.length > 0;\n }\n return false;\n }\n\n const { specialFieldsReworkFieldProps } = useReworkComparator(props.rework);\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 initialValues = {\n addInfoFromTaxReturn: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.equityFromLastYear),\n option.map(constTrue),\n option.getOrElse(constFalse)\n ),\n salaryCurrency: props.salaryCurrency,\n monthlyIncome: props.monthlyIncome,\n freelancerType: pipe(\n incomeData.companyInfo,\n option.chain(data => data.freelancerType)\n ),\n companyName: pipe(\n incomeData.companyInfo,\n option.chain(companyInfo => companyInfo.companyName),\n option.getOrElse(() => \"\")\n ),\n companyIco: pipe(\n incomeData.companyInfo,\n option.chain(companyInfo => companyInfo.companyIco),\n option.getOrElse(() => \"\")\n ),\n businessSector: pipe(\n incomeData.companyInfo,\n option.chain(value => value.businessSector)\n ),\n businessStartingDate: pipe(\n incomeData.companyInfo,\n option.chain(data => data.businessStartingDate)\n ),\n taxBase: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.taxBase)\n ),\n businessGrossIncome: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.businessGrossIncome)\n ),\n hasAdditionalIncome: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.hasAdditionalIncome),\n option.alt(() => option.some(false))\n ),\n hasInfoFromTaxReturn: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.hasInfoFromTaxReturn),\n option.alt(() => option.some(false))\n ),\n equityPositive: pipe(\n incomeData.companyInfo,\n option.fold(\n () => option.some(true),\n data => data.equityPositive\n )\n ),\n keepsAccountancy: pipe(\n incomeData.incomeInfo,\n option.fold(\n () => option.some(true),\n data => data.keepsAccountancy\n )\n ),\n equityFromLastYear: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.equityFromLastYear)\n ),\n grossIncomes: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.grossIncomes)\n ),\n r101BruttoIncomes: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.r101BruttoIncomes)\n ),\n r37PartialTaxBase: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.r37PartialTaxBase)\n ),\n addIco: pipe(\n incomeData.companyInfo,\n option.chain(data => data.addIco)\n ),\n nameOfEntrepreneur: pipe(\n incomeData.companyInfo,\n option.chain(data => data.nameOfEntrepreneur)\n ),\n entrepreneurIco: pipe(\n incomeData.companyInfo,\n option.chain(data => data.entrepreneurIco)\n ),\n country: pipe(\n incomeData.companyInfo,\n option.chain(data => data.country)\n ),\n phone: pipe(\n incomeData.companyInfo,\n option.chain(data => data.phone)\n ),\n city: pipe(\n incomeData.companyInfo,\n option.chain(data => data.city)\n ),\n street: pipe(\n incomeData.companyInfo,\n option.chain(data => data.street)\n ),\n houseNr: pipe(\n incomeData.companyInfo,\n option.chain(data => data.houseNr)\n ),\n zipCode: pipe(\n incomeData.companyInfo,\n option.chain(data => data.zipCode)\n ),\n };\n const [companyNameIsValid, setCompanyNameIsValid] = useState(true);\n const [companyIcoIsValid, setCompanyIcoIsValid] = useState(true);\n const onCompanyNameValidationChange = (isValid: boolean) => {\n setCompanyNameIsValid(isValid);\n };\n const onCompanyIcoValidationChange = (isValid: boolean) => {\n setCompanyIcoIsValid(isValid);\n };\n const onAddInfoFromTaxReturn = () => {\n fieldProps(\"addInfoFromTaxReturn\").onChange(true);\n };\n const onCloseAddInfoFromTaxReturnSection = () => {\n fieldProps(\"addInfoFromTaxReturn\").onChange(false);\n };\n\n const {\n fieldProps,\n setValues: setFormState,\n handleSubmit,\n resetForm,\n // fieldErrors,\n } = useForm(\n {\n initialValues: initialValues,\n fieldValidators: values => ({\n salaryCurrency: () => definedNoExtract()(props.salaryCurrency),\n monthlyIncome: () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(nonNegativeNumber)\n )(props.monthlyIncome),\n freelancerType: definedNoExtract(),\n companyName: !isOptionTrue(values.addIco)\n ? validators.inSequence(\n validCompanyNameRequired(companyNameIsValid),\n uniqueCompanyNameValidator(values.companyName)\n )\n : workAroundAlwaysRightValidator(),\n companyIco: !isOptionTrue(values.addIco)\n ? validators.inSequence(\n validCompanyIcoRequired(false, companyIcoIsValid),\n uniqueCompanyIcoValidator(values.companyIco)\n )\n : workAroundAlwaysRightValidator(),\n businessStartingDate: foldTenant(\n tenant,\n () =>\n notInTheFutureMonthYearValidator(\n formatMessage(\"StandardLoan.EmployedCard.startingDateError\"),\n formatMessage(\"Form.fieldError.required\")\n ),\n () =>\n pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n notInTheFutureMonthYearValidator(\n formatMessage(\"StandardLoan.EmployedCard.startingDateError\"),\n formatMessage(\"Form.fieldError.required\")\n )\n )\n )\n ),\n businessSector: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () => definedNoExtract())\n ),\n tax: pipe(\n values.addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, () => SKOnlyAmountValidator)\n ),\n taxBase: pipe(\n values.addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, () => SKOnlyAmountValidator)\n ),\n businessGrossIncome: pipe(\n values.addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, () => SKOnlyAmountValidator)\n ),\n equityPositive: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n isOptionTrue(values.keepsAccountancy),\n boolean.fold(constOptionNoneValidator, () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(\n validators.fromPredicate(\n equity => equity === true,\n formatMessage(\n \"StandardLoan.FreelancerCard.equityNegativeError\"\n )\n )\n )\n )\n )\n )\n ),\n keepsAccountancy: foldTenant(tenant, constOptionNoneValidator, () =>\n definedNoExtract()\n ),\n equityFromLastYear: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n isOptionTrue(values.keepsAccountancy) &&\n isOptionTrue(values.equityPositive) &&\n values.addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, amountValidator)\n )\n ),\n grossIncomes: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n isOptionTrue(values.keepsAccountancy) &&\n isOptionTrue(values.equityPositive) &&\n values.addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, amountValidator)\n )\n ),\n r101BruttoIncomes: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n isOptionActuallyFalse(values.keepsAccountancy) &&\n values.addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, amountValidator)\n )\n ),\n r37PartialTaxBase: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n (isOptionActuallyFalse(values.keepsAccountancy) ||\n isOptionTrue(values.equityPositive)) &&\n values.addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, amountValidator)\n )\n ),\n country: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n ),\n nameOfEntrepreneur: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(nonBlankString)\n )\n ),\n entrepreneurIco: pipe(\n shouldValidateCompanyIco(values.entrepreneurIco, values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(validCompanyIco(false))\n )\n ),\n city: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(validAddressField(40))\n )\n ),\n street: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(validAddressField(40))\n )\n ),\n houseNr: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(validStreetNumber)\n )\n ),\n zipCode: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(nonBlankString)\n )\n ),\n phone: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(validPhone)\n )\n ),\n }),\n },\n {\n onSubmit: values =>\n taskEither.fromIO(() => {\n validatedValues.current = option.some({\n ...incomeData,\n incomeInfo: option.some({\n ...getEmptyIncomeInfo(\"Freelancer\"),\n taxBase: values.taxBase,\n businessGrossIncome: values.businessGrossIncome,\n grossIncomes: values.grossIncomes,\n equityFromLastYear: values.equityFromLastYear,\n r101BruttoIncomes: values.r101BruttoIncomes,\n r37PartialTaxBase: values.r37PartialTaxBase,\n keepsAccountancy: values.keepsAccountancy,\n salaryCurrency: values.salaryCurrency,\n monthlyIncome: values.monthlyIncome,\n hasAdditionalIncome: values.hasAdditionalIncome,\n hasInfoFromTaxReturn: values.hasInfoFromTaxReturn,\n }),\n companyInfo: option.some({\n ...getEmptyCompanyInfo(),\n companyName: !isOptionTrue(values.addIco)\n ? pipe(\n values.companyName,\n NonEmptyString.decode,\n option.fromEither\n )\n : option.none,\n companyIco: !isOptionTrue(values.addIco)\n ? pipe(\n values.companyIco,\n NonEmptyString.decode,\n option.fromEither\n )\n : option.none,\n equityPositive: values.equityPositive,\n freelancerType: values.freelancerType,\n businessStartingDate: values.businessStartingDate,\n businessSector: values.businessSector,\n country: values.country,\n city: values.city,\n street: values.street,\n houseNr: values.houseNr,\n zipCode: values.zipCode,\n phone: values.phone,\n nameOfEntrepreneur: values.nameOfEntrepreneur,\n entrepreneurIco: values.entrepreneurIco,\n addIco: values.addIco,\n }),\n contractInfo: option.some({\n ...getEmptyContractInfo(),\n }),\n allowanceInfo: option.some({\n ...getEmptyAllowanceInfo(),\n }),\n });\n }),\n }\n );\n\n useEffect(() => {\n resetForm();\n }, [props.employmentType]);\n\n useControlledSubmit(props, handleSubmit, validatedValues);\n const currentYear = new Date().getFullYear();\n\n const employmentTypeReworked = isReworked(\n props.rework,\n \"contractInfo\",\n \"employmentType\"\n );\n const incomeSourceReworked = isReworked(\n props.rework,\n \"incomeInfo\",\n \"incomeSource\"\n );\n const disabled = !options.isEditing;\n const reworkDependent = employmentTypeReworked || incomeSourceReworked;\n\n const keepAccountancyReworked = isReworked(\n props.rework,\n \"incomeInfo\",\n \"keepsAccountancy\"\n );\n\n const [dataForClientWithoutIco] = useQuery(api.dataForClientWithoutIco);\n const clientPhone = pipe(\n dataForClientWithoutIco,\n remoteData.fold(\n () => option.none,\n () => option.none,\n value => value.phone\n )\n );\n const phoneValue = pipe(\n fieldProps(\"phone\").value,\n option.fold(\n () => clientPhone,\n somePhoneValue => {\n if (somePhoneValue.length <= 4) {\n return clientPhone;\n } else {\n return option.some(somePhoneValue);\n }\n }\n )\n );\n return (\n \n \n \n \n \n\n {\n setFormState({\n city: option.some(suggestion),\n });\n }}\n onSelectStreetSuggestion={suggestion => {\n setFormState({\n street: option.some(suggestion),\n });\n }}\n dataForClientWithoutIco={dataForClientWithoutIco}\n phoneValue={phoneValue}\n />\n\n {!isOptionTrue(fieldProps(\"addIco\").value) && (\n \n )}\n\n {foldTenant(\n tenant,\n () =>\n !isOptionTrue(fieldProps(\"addIco\").value) && (\n \n \n \n ),\n constNull\n )}\n \n \n {foldTenant(\n tenant,\n () => (\n \n {props.isMainIncome && (\n \n \n \n )}\n {fieldProps(\"addInfoFromTaxReturn\").value && [\n \n \n \n \n ,\n ]}\n {!fieldProps(\"addInfoFromTaxReturn\").value && [\n \n \n \n \n ,\n ]}\n {fieldProps(\"addInfoFromTaxReturn\").value && (\n \n \n \n )}\n {fieldProps(\"addInfoFromTaxReturn\").value && (\n \n \n \n )}\n \n ),\n () => (\n \n \n \n \n {isOptionTrue(fieldProps(\"keepsAccountancy\").value) && (\n \n \n \n )}\n\n \n \n \n\n {!fieldProps(\"addInfoFromTaxReturn\").value && [\n \n \n \n \n ,\n ]}\n {fieldProps(\"addInfoFromTaxReturn\").value && [\n \n \n \n \n ,\n ]}\n {fieldProps(\"addInfoFromTaxReturn\").value &&\n isOptionTrue(fieldProps(\"keepsAccountancy\").value) &&\n isOptionTrue(fieldProps(\"equityPositive\").value) && [\n \n \n ,\n \n \n ,\n ]}\n {fieldProps(\"addInfoFromTaxReturn\").value &&\n isOptionActuallyFalse(fieldProps(\"keepsAccountancy\").value) && (\n \n \n \n )}\n {fieldProps(\"addInfoFromTaxReturn\").value &&\n (isOptionActuallyFalse(fieldProps(\"keepsAccountancy\").value) ||\n isOptionTrue(fieldProps(\"equityPositive\").value)) && (\n \n \n \n )}\n \n )\n )}\n \n \n );\n}\n\nfunction isOptionActuallyFalse(value: Option): boolean {\n return pipe(\n value,\n option.exists(value => value === false)\n );\n}\n","import {\n ComputedFieldProps,\n DropdownOption,\n unsafeLocalizedString,\n} from \"design-system\";\nimport { tuple, option } from \"fp-ts\";\nimport { pipe, constant, identity } from \"fp-ts/function\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { Option } from \"fp-ts/Option\";\nimport { fold } from \"../../../RemoteData\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { selectedDropdownOption } from \"../../../Common/selectDropdownOption\";\nimport { DropdownField } from \"../../../Common/DropdownField/DropdownField\";\nimport { useQuery } from \"../../../useAPI\";\nimport * as api from \"../api\";\n\ntype Props = {\n fieldProps: ComputedFieldProps>;\n};\n\nexport function FreelancerTypeDropdown(props: Props) {\n const formatMessage = useFormatMessage();\n\n const freelancerTypes = pipe(\n useQuery(api.freelancerTypes),\n tuple.fst,\n fold(constant([]), constant([]), identity)\n );\n\n const options: DropdownOption[] = freelancerTypes.map(\n freelancer => ({\n value: freelancer.key,\n label: unsafeLocalizedString(freelancer.name),\n })\n );\n\n const onChange = (dropdownOption: Option>) => {\n props.fieldProps.onChange(\n pipe(\n dropdownOption,\n option.map(v => v.value)\n )\n );\n };\n\n const value = selectedDropdownOption(props.fieldProps.value, options);\n\n return (\n \n );\n}\n","import { FormRow, useForm, validators, FormSection } from \"design-system\";\nimport { option, taskEither } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { useRef, useEffect } from \"react\";\nimport { useFormatMessage } from \"../../../../intl\";\nimport { MoneyField } from \"../../../../Common/Price/MoneyField/MoneyField\";\nimport { useTenantCurrency } from \"../../../../Common/useTenantCurrency\";\nimport { useValidators } from \"../../../../Common/useValidators\";\nimport {\n isReworked,\n useReworkComparator,\n} from \"../../../Rework/useReworkComparator\";\nimport { AllowanceType } from \"../../api\";\nimport { AllowanceTypeDropdown } from \"../../commons/AllowanceTypeDropdown\";\nimport {\n IncomeCardProps,\n useControlledSubmit,\n} from \"../../commons/useControlledSubmit\";\nimport {\n getEmptyAllowanceInfo,\n getEmptyCompanyInfo,\n getEmptyContractInfo,\n getEmptyIncomeInfoSpecial,\n} from \"../../commons/Utils\";\nimport { IncomeData, MaternityOrParentalIncomeDetails } from \"../../domain\";\nimport { YesNoRadioGroupField } from \"../../../../Common/YesNoRadioGroup/YesNoRadioGroupField\";\n\nexport function MaternityLeaveCard(props: IncomeCardProps) {\n const { definedNoExtract, amountMinMax } = useValidators();\n const validatedValues = useRef>(option.none);\n const formatMessage = useFormatMessage();\n const tenantCurrency = useTenantCurrency();\n const monthlySocialBenefitMax = 999999999;\n const { options, incomeData } = props;\n\n const { specialFieldsReworkFieldProps } = useReworkComparator(props.rework);\n\n const initialValues = {\n allowanceType: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.maternityOrParentalIncomeDetails),\n option.chain(value => value.allowanceType)\n ),\n monthlySocialBenefit: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.maternityOrParentalIncomeDetails),\n option.chain(value => value.monthlySocialBenefit as Option)\n ),\n hasAdditionalIncome: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.hasAdditionalIncome),\n option.alt(() => option.some(false))\n ),\n };\n\n const { fieldProps, handleSubmit, resetForm } = useForm(\n {\n initialValues: initialValues,\n fieldValidators: () => ({\n allowanceType: definedNoExtract(),\n monthlySocialBenefit: validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(amountMinMax(0, monthlySocialBenefitMax))\n ),\n hasAdditionalIncome: definedNoExtract(),\n }),\n },\n {\n onSubmit: values =>\n taskEither.fromIO(() => {\n validatedValues.current = option.some({\n ...incomeData,\n incomeInfo: option.some({\n ...getEmptyIncomeInfoSpecial(\"MaternityLeave\"),\n maternityOrParentalIncomeDetails: option.some({\n allowanceType: values.allowanceType,\n monthlySocialBenefit: values.monthlySocialBenefit,\n }),\n hasAdditionalIncome: values.hasAdditionalIncome,\n }),\n companyInfo: option.some({\n ...getEmptyCompanyInfo(),\n }),\n contractInfo: option.some({\n ...getEmptyContractInfo(),\n }),\n allowanceInfo: option.some({\n ...getEmptyAllowanceInfo(),\n }),\n });\n }),\n }\n );\n useEffect(() => {\n resetForm();\n }, [props.employmentType]);\n useControlledSubmit(props, handleSubmit, validatedValues);\n\n const reworkedMaternityLeave = (\n maternityField: keyof MaternityOrParentalIncomeDetails\n ): boolean =>\n pipe(\n props.rework,\n option.chain(rework => rework.incomeInfo),\n option.chain(incomeInfo => incomeInfo.maternityOrParentalIncomeDetails),\n option.map(details => details[maternityField]),\n option.fold(\n () => false,\n () => true\n )\n );\n\n const monthlySocialBenefitReworked = reworkedMaternityLeave(\n \"monthlySocialBenefit\"\n );\n\n const allowanceTypeReworked = reworkedMaternityLeave(\"allowanceType\");\n\n const disabled = !options.isEditing;\n const employmentTypeReworked = isReworked(\n props.rework,\n \"contractInfo\",\n \"employmentType\"\n );\n const incomeSourceReworked = isReworked(\n props.rework,\n \"incomeInfo\",\n \"incomeSource\"\n );\n const reworkDependent = employmentTypeReworked || incomeSourceReworked;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { DropdownOption } from \"design-system\";\nimport { record } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { pipe } from \"fp-ts/function\";\nimport { MaternityParentalLeaveProps, useFormatAllowanceType } from \"../domain\";\nimport { useFormatMessage } from \"../../../intl\";\nimport * as api from \"../api\";\nimport { DropdownField } from \"../../../Common/DropdownField/DropdownField\";\nimport {\n dropdownOptionToValue,\n selectedDropdownOption,\n} from \"../../../Common/selectDropdownOption\";\n\nexport function AllowanceTypeDropdown({\n fieldProps,\n}: MaternityParentalLeaveProps) {\n const formatMessage = useFormatMessage();\n const formatEmploymentType = useFormatAllowanceType();\n\n const dropdownOptions: Array> = pipe(\n api.AllowanceType.keys,\n record.collect(employmentType => ({\n value: employmentType,\n label: formatEmploymentType(employmentType),\n }))\n );\n\n const onChange = (\n dropdownOption: Option>\n ) => {\n fieldProps.onChange(dropdownOptionToValue(dropdownOption));\n };\n\n const value = selectedDropdownOption(fieldProps.value, dropdownOptions);\n\n return (\n \n );\n}\n","import { useForm, validators } from \"design-system\";\nimport { boolean, option, taskEither } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { useEffect, useRef } from \"react\";\nimport { foldTenant } from \"../../../../globalDomain\";\nimport { useAppContext } from \"../../../../useAppContext\";\nimport { useValidators } from \"../../../../Common/useValidators\";\nimport {\n IncomeCardProps,\n useControlledSubmit,\n} from \"../../../../StandardLoan/IncomeForm/commons/useControlledSubmit\";\nimport {\n constOptionNoneValidator,\n getEmptyAllowanceInfo,\n getEmptyCompanyInfo,\n getEmptyContractInfo,\n getEmptyIncomeInfoSpecial,\n} from \"../../../../StandardLoan/IncomeForm/commons/Utils\";\nimport {\n IncomeData,\n PaymentMethod,\n useFormatPaymentMethod,\n} from \"../../../../StandardLoan/IncomeForm/domain\";\nimport { PensionerFormFields, PensionType } from \"./domain\";\nimport { PensionerForm } from \"./PensionerForm\";\n\nexport function PensionerCard(props: IncomeCardProps) {\n const { incomeData, options } = props;\n\n const {\n apiParameters: { tenant },\n } = useAppContext();\n\n const { definedNoExtract, nonNegativeNumber } = useValidators();\n const validatedValues = useRef>(option.none);\n\n const isRetirement = (value: Option) =>\n pipe(\n value,\n option.exists(value => value === \"Retirement\")\n );\n\n const formatPaymentMethod = useFormatPaymentMethod();\n\n const { fieldProps, handleSubmit, resetForm } = useForm(\n {\n initialValues: {\n pensionType: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.pensionerIncomeDetails),\n option.chain(value => value.pensionType)\n ),\n monthlyPension: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.pensionerIncomeDetails),\n option.chain(value => value.monthlyPension)\n ),\n paymentMethod: pipe(\n incomeData.contractInfo,\n option.chain(data => data.paymentMethod)\n ),\n monthlyRent: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.pensionerIncomeDetails),\n option.chain(value => value.monthlyRent)\n ),\n hasAdditionalIncome: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.hasAdditionalIncome)\n ),\n } as PensionerFormFields,\n fieldValidators: values => ({\n pensionType: definedNoExtract(),\n monthlyPension: foldTenant(\n tenant,\n () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(nonNegativeNumber)\n ),\n () =>\n pipe(\n isRetirement(values.pensionType),\n boolean.fold(\n () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(nonNegativeNumber)\n ),\n constOptionNoneValidator\n )\n )\n ),\n monthlyRent: pipe(\n isRetirement(values.pensionType),\n boolean.fold(constOptionNoneValidator, () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(nonNegativeNumber)\n )\n )\n ),\n paymentMethod: foldTenant(\n tenant,\n () => definedNoExtract(),\n constOptionNoneValidator\n ),\n }),\n },\n {\n onSubmit: data =>\n taskEither.fromIO(() => {\n validatedValues.current = option.some({\n ...incomeData,\n incomeInfo: option.some({\n ...getEmptyIncomeInfoSpecial(\"Pensioner\"),\n pensionerIncomeDetails: option.some({\n pensionType: data.pensionType,\n monthlyPension: data.monthlyPension,\n monthlyRent: data.monthlyRent,\n }),\n hasAdditionalIncome: data.hasAdditionalIncome,\n }),\n contractInfo: option.some({\n ...getEmptyContractInfo(),\n paymentMethod: data.paymentMethod,\n paymentMethodLabel: pipe(\n data.paymentMethod,\n option.map(paymentMethod => formatPaymentMethod(paymentMethod))\n ),\n }),\n companyInfo: option.some({\n ...getEmptyCompanyInfo(),\n }),\n allowanceInfo: option.some({\n ...getEmptyAllowanceInfo(),\n }),\n });\n }),\n }\n );\n useEffect(() => {\n resetForm();\n }, [props.employmentType]);\n useControlledSubmit(props, handleSubmit, validatedValues);\n\n return (\n \n );\n}\n","import { ComputedFieldProps, FormRow, FormSection } from \"design-system\";\nimport { boolean, option } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { foldTenant } from \"../../../../globalDomain\";\nimport { useFormatMessage } from \"../../../../intl\";\nimport { useAppContext } from \"../../../../useAppContext\";\nimport { MoneyField } from \"../../../../Common/Price/MoneyField/MoneyField\";\nimport { useTenantCurrency } from \"../../../../Common/useTenantCurrency\";\nimport { ReworkIncomeNoSourceOutput } from \"../../../Rework/api\";\nimport {\n isReworked,\n useReworkComparator,\n} from \"../../../Rework/useReworkComparator\";\nimport { PaymentMethodRadiogroup } from \"../../commons/PaymentMethodRadioGroup\";\nimport { PensionerIncomeDetails } from \"../../domain\";\nimport { PensionerFormFields, PensionType } from \"./domain\";\nimport { PensionTypeDropdown } from \"./PensionerTypeDropdown\";\nimport { YesNoRadioGroupField } from \"../../../../Common/YesNoRadioGroup/YesNoRadioGroupField\";\n\nexport type PensionerFormProps = {\n fieldProps: (\n name: K\n ) => ComputedFieldProps;\n disabled?: boolean;\n rework: Option;\n reworkAll: boolean;\n};\n\ntype Props = PensionerFormProps;\n\nexport function PensionerForm({\n fieldProps,\n disabled,\n rework,\n reworkAll,\n}: Props): JSX.Element {\n const formatMessage = useFormatMessage();\n const {\n apiParameters: { tenant },\n } = useAppContext();\n const currency = useTenantCurrency();\n\n const getPensionType = () =>\n pipe(\n fieldProps(\"pensionType\").value,\n option.getOrElse(() => \"\" as PensionType)\n );\n\n const {\n reworkFieldProps,\n specialFieldsReworkFieldProps,\n } = useReworkComparator(rework);\n\n const reworkedPension = (\n pensionField: keyof PensionerIncomeDetails\n ): boolean =>\n pipe(\n rework,\n option.chain(rework => rework.incomeInfo),\n option.chain(incomeInfo => incomeInfo.pensionerIncomeDetails),\n option.chain(details => details[pensionField] as any),\n option.isSome\n );\n\n const pensionTypeReworked = reworkedPension(\"pensionType\");\n const monthlyPensionReworked = reworkedPension(\"monthlyPension\");\n const monthlyRentReworked = reworkedPension(\"monthlyRent\");\n\n const employmentTypeReworked = isReworked(\n rework,\n \"contractInfo\",\n \"employmentType\"\n );\n const incomeSourceReworked = isReworked(rework, \"incomeInfo\", \"incomeSource\");\n const reworkDependent = employmentTypeReworked || incomeSourceReworked;\n\n return (\n \n \n \n \n {foldTenant(\n tenant,\n () => [\n \n \n ,\n \n \n ,\n ],\n () =>\n pipe(\n getPensionType() === \"Retirement\",\n boolean.fold(\n () =>\n pipe(\n fieldProps(\"pensionType\").value,\n option.fold(\n (): Array => [],\n () => [\n \n \n ,\n ]\n )\n ),\n () => [\n \n \n ,\n ]\n )\n )\n )}\n \n \n \n \n );\n}\n","import { DropdownField } from \"../../../../Common/DropdownField/DropdownField\";\nimport {\n selectedDropdownOption,\n dropdownOptionToValue,\n} from \"../../../../Common/selectDropdownOption\";\nimport { Option } from \"fp-ts/Option\";\nimport { DropdownOption, ComputedFieldProps } from \"design-system\";\nimport { PensionType, PensionTypeSK, PensionTypeCZ } from \"./domain\";\nimport { record, array } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { foldTenant } from \"../../../../globalDomain\";\nimport { useAppContext } from \"../../../../useAppContext\";\nimport { useFormatMessage } from \"../../../../intl\";\nimport { useFormatPensionType } from \"./utils\";\n\ntype Props = {\n fieldProps: ComputedFieldProps>;\n};\n\nexport function PensionTypeDropdown({ fieldProps }: Props) {\n const {\n apiParameters: { tenant },\n } = useAppContext();\n const formatMessage = useFormatMessage();\n const formatPensionType = useFormatPensionType();\n\n const options = pipe(\n foldTenant>(\n tenant,\n () => record.keys(PensionTypeSK.keys),\n () => record.keys(PensionTypeCZ.keys)\n ),\n array.map(pensionType => ({\n value: pensionType,\n label: formatPensionType(pensionType),\n }))\n );\n\n const handleChange = (value: Option>) => {\n fieldProps.onChange(dropdownOptionToValue(value));\n };\n\n const value = selectedDropdownOption(fieldProps.value, options);\n\n return (\n \n );\n}\n","import {\n FormRow,\n FormSection,\n Stack,\n useForm,\n validators,\n} from \"design-system\";\nimport { boolean, option, taskEither } from \"fp-ts\";\nimport { constNull, constTrue, identity, pipe } from \"fp-ts/function\";\nimport { Option } from \"fp-ts/Option\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { foldTenant } from \"../../../../globalDomain\";\nimport { useFormatMessage } from \"../../../../intl\";\nimport { useAppContext } from \"../../../../useAppContext\";\nimport { CompanySuggestion } from \"../../../../Common/CompanyField/domain\";\nimport { useValidators } from \"../../../../Common/useValidators\";\nimport {\n isReworked,\n useReworkComparator,\n} from \"../../../Rework/useReworkComparator\";\nimport { JobPositionDropdown } from \"../../commons/JobPositionsDropdown\";\nimport {\n IncomeCardProps,\n useControlledSubmit,\n} from \"../../../../StandardLoan/IncomeForm/commons/useControlledSubmit\";\nimport {\n constOptionNoneValidator,\n getEmptyAllowanceInfo,\n getEmptyCompanyInfo,\n getEmptyContractInfo,\n getEmptyIncomeInfo,\n notInTheFutureMonthYearValidator,\n useUniqueCompanyValidators,\n} from \"../../../../StandardLoan/IncomeForm/commons/Utils\";\nimport {\n IncomeData,\n isOptionTrue,\n} from \"../../../../StandardLoan/IncomeForm/domain\";\nimport {\n CompanySectionCZ,\n CompanySectionSK,\n} from \"./CompanySection/CompanySection\";\nimport {\n IncomeSectionCZ,\n IncomeSectionSK,\n} from \"./IncomeSection/IncomeSection\";\nimport { ClientWithoutICO } from \"../../commons/CompanyInfoRow\";\nimport { useQuery } from \"../../../../useAPI\";\nimport * as api from \"../../api\";\nimport * as remoteData from \"../../../../RemoteData\";\n\nconst isOptionFalse = (value: Option) => {\n return pipe(\n value,\n option.exists(value => value === false)\n );\n};\n\nconst MIN_AMOUNT = -999999999;\nconst MAX_AMOUNT = 999999999;\n\nconst currentYear = new Date().getFullYear();\n\nexport function TradesManCard(props: IncomeCardProps) {\n const { incomeData, options } = props;\n const {\n apiParameters: { tenant },\n } = useAppContext();\n\n const {\n definedNoExtract,\n validCompanyNameRequired,\n validCompanyIcoRequired,\n amountMinMaxWithNegative,\n validCompanyIco,\n validAddressField,\n validStreetNumber,\n validPhone,\n nonBlankString,\n nonNegativeNumber,\n } = useValidators();\n\n const amountValidator = () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(\n amountMinMaxWithNegative(MIN_AMOUNT, MAX_AMOUNT)\n )\n );\n\n const SKOnlyAmountValidator = foldTenant(\n tenant,\n amountValidator,\n constOptionNoneValidator\n );\n const formatMessage = useFormatMessage();\n const validatedValues = useRef>(option.none);\n\n const syncCompanyFields = (suggestion: CompanySuggestion) =>\n setFormState({\n companyName: suggestion.name,\n companyIco: suggestion.id,\n });\n\n const [\n uniqueCompanyNameValidator,\n uniqueCompanyIcoValidator,\n ] = useUniqueCompanyValidators(options);\n\n const startingDateMinYear = useMemo(\n () =>\n pipe(\n incomeData.incomeOptions.startDateYearOptions,\n option.map(years => years.sort((a, b) => a - b)[0]),\n option.getOrElse(() => currentYear - 50)\n ),\n [incomeData.incomeOptions.startDateYearOptions]\n );\n\n function shouldValidateCompanyIco(\n entrepreneurIcoOption: Option,\n addIco: Option\n ): boolean {\n if (isOptionTrue(addIco)) {\n const entrepreneurIco = pipe(\n entrepreneurIcoOption,\n option.getOrElse(() => \"\")\n );\n return entrepreneurIco.length > 0;\n }\n return false;\n }\n\n const {\n reworkFieldProps,\n specialFieldsReworkFieldProps,\n } = useReworkComparator(props.rework);\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 initialValues = {\n salaryCurrency: props.salaryCurrency,\n monthlyIncome: props.monthlyIncome,\n companyName: pipe(\n incomeData.companyInfo,\n option.chain(companyInfo => companyInfo.companyName),\n option.getOrElse(() => \"\")\n ),\n companyIco: pipe(\n incomeData.companyInfo,\n option.chain(companyInfo => companyInfo.companyIco),\n option.getOrElse(() => \"\")\n ),\n keepsAccountancy: pipe(\n incomeData.incomeInfo,\n option.fold(\n () => option.some(true),\n data => data.keepsAccountancy\n )\n ),\n equityPositive: pipe(\n incomeData.companyInfo,\n option.fold(\n () => option.some(true),\n data => data.equityPositive\n )\n ),\n equityFromLastYear: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.equityFromLastYear)\n ),\n grossIncomes: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.grossIncomes)\n ),\n r37PartialTaxBase: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.r37PartialTaxBase)\n ),\n r39PartialTaxBase: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.r39PartialTaxBase)\n ),\n r201IncomeFromLease: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.r201IncomeFromLease)\n ),\n r101BruttoIncomes: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.r101BruttoIncomes)\n ),\n reInPersonalOwnership: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.reInPersonalOwnership)\n ),\n reCoOwned: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.reCoOwned)\n ),\n reUsedAsCollateral: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.reUsedAsCollateral)\n ),\n incomeFromRentContract: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.incomeFromRentContract)\n ),\n isApplicantDeclareAsUserInDeclaration: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.isApplicantDeclareAsUserInDeclaration)\n ),\n isCooperativeOwnership: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.isCooperativeOwnership)\n ),\n tax: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.tax)\n ),\n taxBase: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.taxBase)\n ),\n businessGrossIncome: pipe(\n incomeData.incomeInfo,\n option.chain(value => value.businessGrossIncome)\n ),\n businessSector: pipe(\n incomeData.companyInfo,\n option.chain(value => value.businessSector)\n ),\n businessStartingDate: pipe(\n incomeData.companyInfo,\n option.chain(value => value.businessStartingDate)\n ),\n jobPosition: pipe(\n incomeData.contractInfo,\n option.chain(value => value.jobPosition)\n ),\n addIco: pipe(\n incomeData.companyInfo,\n option.chain(data => data.addIco)\n ),\n nameOfEntrepreneur: pipe(\n incomeData.companyInfo,\n option.chain(data => data.nameOfEntrepreneur)\n ),\n entrepreneurIco: pipe(\n incomeData.companyInfo,\n option.chain(data => data.entrepreneurIco)\n ),\n country: pipe(\n incomeData.companyInfo,\n option.chain(data => data.country)\n ),\n phone: pipe(\n incomeData.companyInfo,\n option.chain(data => data.phone)\n ),\n city: pipe(\n incomeData.companyInfo,\n option.chain(data => data.city)\n ),\n street: pipe(\n incomeData.companyInfo,\n option.chain(data => data.street)\n ),\n houseNr: pipe(\n incomeData.companyInfo,\n option.chain(data => data.houseNr)\n ),\n zipCode: pipe(\n incomeData.companyInfo,\n option.chain(data => data.zipCode)\n ),\n hasAdditionalIncome: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.hasAdditionalIncome),\n option.alt(() => option.some(false))\n ),\n hasInfoFromTaxReturn: pipe(\n incomeData.incomeInfo,\n option.chain(data => data.hasInfoFromTaxReturn),\n option.alt(() => option.some(false))\n ),\n };\n const [companyNameIsValid, setCompanyNameIsValid] = useState(true);\n const [companyIcoIsValid, setCompanyIcoIsValid] = useState(true);\n const [addInfoFromTaxReturn, setAddInfoFromTaxReturn] = useState(\n option.isSome(initialValues.hasInfoFromTaxReturn)\n ? initialValues.hasInfoFromTaxReturn.value\n : false\n );\n\n const onCompanyNameValidationChange = (isValid: boolean) => {\n setCompanyNameIsValid(isValid);\n };\n const onCompanyIcoValidationChange = (isValid: boolean) => {\n setCompanyIcoIsValid(isValid);\n };\n const {\n fieldProps,\n setValues: setFormState,\n handleSubmit,\n resetForm,\n } = useForm(\n {\n initialValues: initialValues,\n fieldValidators: values => ({\n salaryCurrency: () => definedNoExtract()(props.salaryCurrency),\n monthlyIncome: () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(nonNegativeNumber)\n )(props.monthlyIncome),\n companyName: !isOptionTrue(values.addIco)\n ? validators.inSequence(\n validCompanyNameRequired(companyNameIsValid),\n uniqueCompanyNameValidator(values.companyName)\n )\n : workAroundAlwaysRightValidator(),\n companyIco: !isOptionTrue(values.addIco)\n ? validators.inSequence(\n validCompanyIcoRequired(false, companyIcoIsValid),\n uniqueCompanyIcoValidator(values.companyIco)\n )\n : workAroundAlwaysRightValidator(),\n keepsAccountancy: foldTenant(tenant, constOptionNoneValidator, () =>\n definedNoExtract()\n ),\n equityPositive: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n isOptionTrue(values.keepsAccountancy),\n boolean.fold(constOptionNoneValidator, () =>\n validators.inSequence(\n definedNoExtract(),\n validators.validateIfDefined(\n validators.fromPredicate(\n identity,\n formatMessage(\n \"StandardLoan.CompanyOwnerCard.equityNegativeError\"\n )\n )\n )\n )\n )\n )\n ),\n equityFromLastYear: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n isOptionTrue(values.keepsAccountancy) && addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, () => amountValidator())\n )\n ),\n grossIncomes: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n isOptionTrue(values.keepsAccountancy) && addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, () => amountValidator())\n )\n ),\n r37PartialTaxBase: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, amountValidator)\n )\n ),\n r39PartialTaxBase: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, amountValidator)\n )\n ),\n r101BruttoIncomes: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n isOptionFalse(values.keepsAccountancy) && addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, amountValidator)\n )\n ),\n reInPersonalOwnership: foldTenant(\n tenant,\n constOptionNoneValidator,\n () =>\n pipe(\n needsRentFieldsValidation(values.r39PartialTaxBase),\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n )\n ),\n reCoOwned: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n isOptionTrue(values.reInPersonalOwnership),\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n )\n ),\n r201IncomeFromLease: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n needsRentFieldsValidation(values.r39PartialTaxBase),\n boolean.fold(constOptionNoneValidator, () => amountValidator())\n )\n ),\n reUsedAsCollateral: foldTenant(tenant, constOptionNoneValidator, () =>\n pipe(\n isOptionTrue(values.reInPersonalOwnership),\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n )\n ),\n incomeFromRentContract: foldTenant(\n tenant,\n constOptionNoneValidator,\n () =>\n pipe(\n needsRentFieldsValidation(values.r39PartialTaxBase),\n boolean.fold(constOptionNoneValidator, () => amountValidator())\n )\n ),\n isCooperativeOwnership: foldTenant(\n tenant,\n constOptionNoneValidator,\n () =>\n pipe(\n isOptionFalse(values.reInPersonalOwnership) &&\n needsRentFieldsValidation(values.r39PartialTaxBase),\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n )\n ),\n isApplicantDeclareAsUserInDeclaration: foldTenant(\n tenant,\n constOptionNoneValidator,\n () =>\n pipe(\n needsRentFieldsValidation(values.r39PartialTaxBase),\n boolean.fold(constOptionNoneValidator, () =>\n pipe(\n isOptionTrue(values.isCooperativeOwnership),\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n )\n )\n )\n ),\n tax: pipe(\n addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, () => SKOnlyAmountValidator)\n ),\n taxBase: pipe(\n addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, () => SKOnlyAmountValidator)\n ),\n businessGrossIncome: pipe(\n addInfoFromTaxReturn,\n boolean.fold(constOptionNoneValidator, () => SKOnlyAmountValidator)\n ),\n businessSector: foldTenant(\n tenant,\n () => definedNoExtract(),\n () =>\n pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () => definedNoExtract())\n )\n ),\n businessStartingDate: foldTenant(\n tenant,\n () =>\n notInTheFutureMonthYearValidator(\n formatMessage(\"StandardLoan.EmployedCard.startingDateError\"),\n formatMessage(\"Form.fieldError.required\")\n ),\n () =>\n pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n notInTheFutureMonthYearValidator(\n formatMessage(\"StandardLoan.EmployedCard.startingDateError\"),\n formatMessage(\"Form.fieldError.required\")\n )\n )\n )\n ),\n jobPosition: foldTenant(\n tenant,\n () => definedNoExtract(),\n constOptionNoneValidator\n ),\n country: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n definedNoExtract()\n )\n ),\n nameOfEntrepreneur: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(nonBlankString)\n )\n ),\n entrepreneurIco: pipe(\n shouldValidateCompanyIco(values.entrepreneurIco, values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(validCompanyIco(false))\n )\n ),\n city: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(validAddressField(40))\n )\n ),\n street: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(validAddressField(40))\n )\n ),\n houseNr: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(validStreetNumber)\n )\n ),\n zipCode: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(nonBlankString)\n )\n ),\n phone: pipe(\n isOptionTrue(values.addIco),\n boolean.fold(constOptionNoneValidator, () =>\n validators.validateIfDefined(validPhone)\n )\n ),\n }),\n },\n {\n onSubmit: data => {\n return taskEither.fromIO(\n () =>\n (validatedValues.current = option.some({\n ...incomeData,\n companyInfo: option.some({\n ...getEmptyCompanyInfo(),\n companyName: !isOptionTrue(data.addIco)\n ? pipe(\n data.companyName,\n NonEmptyString.decode,\n option.fromEither\n )\n : option.none,\n companyIco: !isOptionTrue(data.addIco)\n ? pipe(\n data.companyIco,\n NonEmptyString.decode,\n option.fromEither\n )\n : option.none,\n equityPositive: data.equityPositive,\n businessSector: data.businessSector,\n businessStartingDate: data.businessStartingDate,\n country: data.country,\n city: data.city,\n street: data.street,\n houseNr: data.houseNr,\n zipCode: data.zipCode,\n phone: data.phone,\n nameOfEntrepreneur: data.nameOfEntrepreneur,\n entrepreneurIco: data.entrepreneurIco,\n addIco: data.addIco,\n }),\n incomeInfo: option.some({\n ...getEmptyIncomeInfo(\"TradesmanCoOperatingPerson\"),\n keepsAccountancy: data.keepsAccountancy,\n equityFromLastYear: data.equityFromLastYear,\n grossIncomes: data.grossIncomes,\n r37PartialTaxBase: data.r37PartialTaxBase,\n r39PartialTaxBase: data.r39PartialTaxBase,\n r201IncomeFromLease: data.r201IncomeFromLease,\n r101BruttoIncomes: data.r101BruttoIncomes,\n reInPersonalOwnership: data.reInPersonalOwnership,\n isApplicantDeclareAsUserInDeclaration:\n data.isApplicantDeclareAsUserInDeclaration,\n isCooperativeOwnership: data.isCooperativeOwnership,\n reCoOwned: data.reCoOwned,\n reUsedAsCollateral: data.reUsedAsCollateral,\n incomeFromRentContract: data.incomeFromRentContract,\n businessGrossIncome: data.businessGrossIncome,\n tax: data.tax,\n taxBase: data.taxBase,\n salaryCurrency: data.salaryCurrency,\n monthlyIncome: data.monthlyIncome,\n hasAdditionalIncome: data.hasAdditionalIncome,\n hasInfoFromTaxReturn: option.some(addInfoFromTaxReturn),\n }),\n contractInfo: option.some({\n ...getEmptyContractInfo(),\n jobPosition: data.jobPosition,\n }),\n allowanceInfo: option.some({ ...getEmptyAllowanceInfo() }),\n }))\n );\n },\n }\n );\n useEffect(() => {\n resetForm();\n }, [props.employmentType]);\n useControlledSubmit(props, handleSubmit, validatedValues);\n\n const employmentTypeReworked = isReworked(\n props.rework,\n \"contractInfo\",\n \"employmentType\"\n );\n const incomeSourceReworked = isReworked(\n props.rework,\n \"incomeInfo\",\n \"incomeSource\"\n );\n const disabled = !options.isEditing;\n const reworkDependent = employmentTypeReworked || incomeSourceReworked;\n\n const keepAccountancyReworked = isReworked(\n props.rework,\n \"incomeInfo\",\n \"keepsAccountancy\"\n );\n const reInPersonalOwnershipReworked = isReworked(\n props.rework,\n \"incomeInfo\",\n \"reInPersonalOwnership\"\n );\n const isCooperativeOwnershipReworked = isReworked(\n props.rework,\n \"incomeInfo\",\n \"isCooperativeOwnership\"\n );\n\n const [dataForClientWithoutIco] = useQuery(api.dataForClientWithoutIco);\n const clientPhone = pipe(\n dataForClientWithoutIco,\n remoteData.fold(\n () => option.none,\n () => option.none,\n value => value.phone\n )\n );\n const phoneValue = pipe(\n fieldProps(\"phone\").value,\n option.fold(\n () => clientPhone,\n somePhoneValue => {\n if (somePhoneValue.length <= 4) {\n return clientPhone;\n } else {\n return option.some(somePhoneValue);\n }\n }\n )\n );\n\n const companySection = foldTenant(\n tenant,\n () =>\n !isOptionTrue(fieldProps(\"addIco\").value) && (\n \n ),\n () =>\n !isOptionTrue(fieldProps(\"addIco\").value) && (\n \n )\n );\n\n const incomeSection = foldTenant(\n tenant,\n () => (\n \n ),\n () => (\n \n )\n );\n\n return (\n \n {foldTenant(\n tenant,\n () => (\n \n \n \n \n \n ),\n constNull\n )}\n {\n setFormState({\n city: option.some(suggestion),\n });\n }}\n onSelectStreetSuggestion={suggestion => {\n setFormState({\n street: option.some(suggestion),\n });\n }}\n dataForClientWithoutIco={dataForClientWithoutIco}\n phoneValue={phoneValue}\n />\n {companySection}\n {incomeSection}\n \n );\n}\n\nfunction needsRentFieldsValidation(r39: Option) {\n return pipe(\n r39,\n option.exists(value => value !== 0)\n );\n}\n","import { FormRow } from \"design-system\";\nimport { useFormatMessage } from \"../../../../../../intl\";\nimport { MoneyField } from \"../../../../../../Common/Price/MoneyField/MoneyField\";\nimport { RFieldProps } from \"../domain\";\n\nexport function R101Field(props: RFieldProps) {\n const formatMessage = useFormatMessage();\n\n return (\n \n \n \n );\n}\n","import { FormRow, ComputedFieldProps, FormSection } from \"design-system\";\nimport { useFormatMessage } from \"../../../../../../intl\";\nimport { MoneyField } from \"../../../../../../Common/Price/MoneyField/MoneyField\";\nimport { Option } from \"fp-ts/Option\";\nimport { constNull, pipe } from \"fp-ts/function\";\nimport { boolean, option } from \"fp-ts\";\nimport { YesNoRadioGroupField } from \"../../../../../../Common/YesNoRadioGroup/YesNoRadioGroupField\";\nimport { Currency } from \"../../../../../../globalDomain\";\nimport { isOptionTrue } from \"../../../../domain\";\n\ntype Props = {\n reInPersonalOwnershipFieldProps: ComputedFieldProps>;\n reUsedAsCollateralFieldProps: ComputedFieldProps>;\n reCoOwned: ComputedFieldProps>;\n incomeFromRentContractFieldProps: ComputedFieldProps>;\n r201IncomeFromLeaseFieldProps: ComputedFieldProps>;\n isCooperativeOwnership: ComputedFieldProps>;\n isApplicantDeclareAsUserInDeclaration: ComputedFieldProps>;\n currency: Currency;\n};\n\nexport function RentFields(props: Props) {\n const formatMessage = useFormatMessage();\n\n const MIN_MONEY_VALIDATION = -999999999;\n const MAX_MONEY_VALIDATION = 999999999;\n\n return (\n \n \n \n \n {pipe(\n props.reInPersonalOwnershipFieldProps.value,\n option.fold(\n constNull,\n boolean.fold(\n () => (\n \n \n \n ),\n () => (\n \n \n \n \n \n \n \n \n )\n )\n )\n )}\n\n {pipe(\n !isOptionTrue(props.reInPersonalOwnershipFieldProps.value) &&\n isOptionTrue(props.isCooperativeOwnership.value),\n boolean.fold(constNull, () => (\n \n \n \n ))\n )}\n \n \n \n \n \n \n \n );\n}\n","import {\n Banner,\n Box,\n FeedbackBlock,\n useAuthenticationContext,\n} from \"design-system\";\nimport { IO } from \"fp-ts/IO\";\nimport { constNull, pipe } from \"fp-ts/function\";\nimport { either, option, taskEither } from \"fp-ts\";\nimport { useFormatMessage } from \"../../intl\";\nimport { PageHeading } from \"../../Common/PageHeading/PageHeading\";\nimport { foldFlowType, StandardLoanFlowType } from \"../domain\";\nimport { CreateProfileWithRemoteCredentials } from \"./CreateProfileWithRemoteCredentials\";\nimport { CreateProfile } from \"./CreateProfile\";\nimport { Option } from \"fp-ts/Option\";\nimport { ExistingClientAuthenticationMethod } from \"../../globalDomain\";\nimport { LFStatus } from \"../api\";\nimport { Rework } from \"../StandardLoanState\";\nimport { useCommand, useQuery } from \"../../useAPI\";\nimport { useEffect, useState } from \"react\";\nimport { readParameters } from \"../../UKontoSecondPart/Credentials/api\";\nimport * as remoteData from \"../../RemoteData\";\nimport * as reworkApi from \"../Rework/api\";\nimport { MainContent } from \"../../Common/MainContent\";\nimport { GDPR } from \"../../GDPR/GDPR\";\nimport { useAppContext } from \"../../useAppContext\";\nimport { useIsInPersonChannel } from \"../../useChannel\";\n\nexport type CredentialStatus =\n | { type: \"existingClient\" }\n | { type: \"newClient\"; shouldAskCredential: boolean }\n | { type: \"unknown\" };\n\ntype Props = {\n onContinue: (status: Option) => void;\n onApplicationRejected: IO;\n onExit: IO;\n flowType: StandardLoanFlowType;\n authenticationMethod: Option;\n rework: Rework;\n credentialStatus: CredentialStatus;\n existingClient: boolean;\n isCredentialsAndSigningRemote: boolean;\n isKycNeeded: boolean;\n onRemoteCredentialsExit: IO;\n onAfterSignature: (status: Option) => void;\n};\n\ntype State =\n | { type: \"Loading\" }\n | { type: \"Ready\"; skipContracts: boolean }\n | { type: \"Error\" };\n\nexport function FollowUpAndSignature(props: Props) {\n const formatMessage = useFormatMessage();\n const [isRiskyClient, setIsRiskyClient] = useState(false);\n const getReworkDetails = useCommand(reworkApi.reworkDetails);\n const loadingState: State = { type: \"Loading\" };\n const errorState: State = { type: \"Error\" };\n const [state, setState] = useState(loadingState);\n\n useEffect(\n () =>\n pipe(\n props.rework.reworkSteps,\n option.fold(\n () => setState({ type: \"Ready\", skipContracts: false }),\n () =>\n taskEither.bracket(\n taskEither.fromIO(() => setState(loadingState)),\n getReworkDetails,\n (_, result) =>\n taskEither.fromIO(() => {\n either.isLeft(result)\n ? setState(errorState)\n : setState({\n type: \"Ready\",\n skipContracts: !result.right.needContractsUpdate,\n });\n })\n )()\n )\n ),\n []\n );\n\n const { authInfo } = useAuthenticationContext();\n const id = pipe(\n authInfo,\n option.map(i => i.flowId),\n option.getOrElse(() => \"\")\n );\n\n const [parametersQuery] = useQuery(readParameters, { id });\n const {\n apiParameters: { tenant },\n } = useAppContext();\n const isInPersonChannel = useIsInPersonChannel();\n\n useEffect(() => {\n pipe(\n parametersQuery,\n remoteData.fold(constNull, constNull, (parameters: any) => {\n setIsRiskyClient(parameters.riskyActivitiesOrPep);\n })\n );\n }, [parametersQuery]);\n\n const renderClientProfile = (\n credentialStatus:\n | {\n existingClient: true;\n }\n | {\n existingClient: false;\n shouldAskCredential: boolean;\n },\n skipContracts: boolean\n ) => (\n \n );\n\n const renderClientProfileWithRemoteCredentials = (\n credentialStatus:\n | {\n existingClient: true;\n }\n | {\n existingClient: false;\n shouldAskCredential: boolean;\n },\n skipContracts: boolean,\n mustReadAllDocuments?: boolean\n ) => (\n \n );\n\n const createProfile = (\n credentialStatus:\n | {\n existingClient: true;\n }\n | {\n existingClient: false;\n shouldAskCredential: boolean;\n },\n skipContracts: boolean\n ) =>\n pipe(\n props.flowType,\n foldFlowType({\n when3P: () =>\n renderClientProfileWithRemoteCredentials(\n credentialStatus,\n skipContracts,\n true\n ),\n whenHomeBanking: () =>\n renderClientProfile(credentialStatus, skipContracts),\n whenSmartBanking: () =>\n renderClientProfile(credentialStatus, skipContracts),\n whenInPerson: () =>\n renderClientProfile(\n props.isCredentialsAndSigningRemote\n ? {\n existingClient: false,\n shouldAskCredential: false,\n }\n : credentialStatus,\n skipContracts\n ),\n whenTLSAgent: () =>\n props.existingClient\n ? renderClientProfile(credentialStatus, skipContracts)\n : renderClientProfileWithRemoteCredentials(\n credentialStatus,\n skipContracts\n ),\n whenPWSRemote: () =>\n renderClientProfile(credentialStatus, skipContracts),\n })\n );\n\n const renderContent = (skipContracts: boolean) => {\n switch (props.credentialStatus.type) {\n case \"existingClient\":\n return createProfile({ existingClient: true }, skipContracts);\n case \"newClient\":\n return createProfile(\n {\n existingClient: false,\n shouldAskCredential: props.credentialStatus.shouldAskCredential,\n },\n skipContracts\n );\n case \"unknown\":\n return createProfile(\n props.existingClient\n ? { existingClient: true }\n : { existingClient: false, shouldAskCredential: true },\n skipContracts\n );\n }\n };\n\n const [gdprDialogDisplayed, setGdprDialogDisplayed] = useState(false);\n const showGdprDialog =\n tenant === \"SK\" &&\n isInPersonChannel &&\n (props.credentialStatus.type === \"newClient\" ||\n (props.credentialStatus.type === \"unknown\" && !props.existingClient)) &&\n !gdprDialogDisplayed;\n return (\n \n \n {state.type === \"Loading\" && (\n \n )}\n {state.type === \"Error\" && (\n \n )}\n {state.type === \"Ready\" && (\n <>\n \n {showGdprDialog && (\n {\n setGdprDialogDisplayed(true);\n }}\n paperBased={state.skipContracts}\n />\n )}\n {!showGdprDialog && renderContent(state.skipContracts)}\n \n )}\n \n \n );\n}\n","import { IO } from \"fp-ts/IO\";\nimport { pipe } from \"fp-ts/function\";\nimport { CredentialsMain } from \"../../UKontoSecondPart/Credentials/CredentialsMain\";\nimport * as remoteData from \"../../RemoteData\";\nimport { usePolling } from \"../../useAPI\";\nimport * as api from \"../api\";\nimport { ErrorBanner, FeedbackBlock } from \"design-system\";\nimport { useFormatMessage } from \"../../intl\";\nimport { boolean, option } from \"fp-ts\";\nimport { foldClientStatus } from \"./LowRiskClient/LowRiskClientState\";\nimport { useState } from \"react\";\nimport { CheckingContracts } from \"./LowRiskClient/CheckingContracts\";\nimport { Option } from \"fp-ts/Option\";\nimport { ExistingClientAuthenticationMethod } from \"../../globalDomain\";\nimport { StandardLoanFlowType } from \"../domain\";\n\ntype Props = {\n onExit: IO;\n onComplete: (status: Option) => void;\n onAfterSignature: (status: Option) => void;\n authenticationMethod: Option;\n onApplicationRejected: IO;\n skipContracts: boolean;\n flowType: StandardLoanFlowType;\n isCredentialsAndSigningRemote: boolean;\n onRemoteCredentialsExit: IO;\n credentialStatus:\n | {\n existingClient: true;\n }\n | {\n existingClient: false;\n shouldAskCredential: boolean;\n };\n isKycNeeded: boolean;\n isRiskyClient: boolean;\n mustReadAllDocuments?: boolean;\n};\n\nexport function CreateProfileWithRemoteCredentials(props: Props) {\n return props.isKycNeeded\n ? CreateProfileWithRemoteCredentialsAndKyc(props)\n : CreateProfileWithRemoteCredentialsAndWithoutKyc(props);\n}\n\nfunction CreateProfileWithRemoteCredentialsAndKyc(props: Props) {\n const formatMessage = useFormatMessage();\n const [didCreateCredentials, setDidCreateCredentials] = useState(\n props.credentialStatus.existingClient\n ? props.credentialStatus.existingClient\n : !props.credentialStatus.shouldAskCredential\n );\n const [getCustomerStatusResult] = usePolling(api.getKnowYourCustomerStatus, {\n shouldPollingContinue: ({ status }) => status === \"PENDING\",\n intervalMS: 3000,\n });\n\n const renderLoading = (\n \n );\n\n return pipe(\n getCustomerStatusResult,\n remoteData.fold(\n () => renderLoading,\n () => ,\n response =>\n pipe(\n response,\n foldClientStatus(\n () => renderLoading,\n () => (\n \n ),\n () =>\n pipe(\n didCreateCredentials,\n boolean.fold(\n () => (\n setDidCreateCredentials(true)}\n withCountdown\n onRemoteCredentialsExit={props.onRemoteCredentialsExit}\n isSLFlow={true}\n />\n ),\n () => (\n \n )\n )\n )\n )\n )\n )\n );\n}\n\nfunction CreateProfileWithRemoteCredentialsAndWithoutKyc(props: Props) {\n const [didCreateCredentials, setDidCreateCredentials] = useState(\n props.credentialStatus.existingClient\n ? props.credentialStatus.existingClient\n : !props.credentialStatus.shouldAskCredential\n );\n\n return pipe(\n didCreateCredentials,\n boolean.fold(\n () => (\n setDidCreateCredentials(true)}\n withCountdown\n onRemoteCredentialsExit={props.onRemoteCredentialsExit}\n isSLFlow={true}\n />\n ),\n () => (\n \n )\n )\n );\n}\n","import { constNull, pipe } from \"fp-ts/function\";\nimport * as remoteData from \"../../../RemoteData\";\nimport { usePolling } from \"../../../useAPI\";\nimport * as api from \"../../api\";\nimport { foldRemoteSignatureStatus } from \"./LowRiskClientState\";\nimport { Option } from \"fp-ts/Option\";\nimport { LFStatus } from \"../../api\";\nimport { BasicFullScreenLoader } from \"../../../Common/BasicFullScreenLoader\";\n\ntype Props = {\n onContinueRemoteSigning: (status: Option) => unknown;\n onCancelSignature: () => unknown;\n};\n\nexport function CheckingRemoteClientSignature(props: Props) {\n const [getRemoteSignatureStatus] = usePolling(api.getRemoteSignatureStatus, {\n shouldPollingContinue: ({ status }) =>\n status === \"PENDING\" || status === \"SIGNING\",\n intervalMS: 3000,\n });\n\n return pipe(\n getRemoteSignatureStatus,\n remoteData.fold(\n () => constNull(),\n constNull,\n response =>\n pipe(\n response,\n foldRemoteSignatureStatus(\n () => constNull(),\n () => ,\n () => constNull(),\n () => {\n props.onContinueRemoteSigning(response.lfStatus);\n return null;\n }\n )\n )\n )\n );\n}\n","import { Either } from \"fp-ts/Either\";\nimport { TaskEither } from \"fp-ts/TaskEither\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useCommand } from \"../../useAPI\";\nimport * as api from \"./api\";\nimport { boolean, either, taskEither } from \"fp-ts\";\nimport { constVoid, pipe } from \"fp-ts/function\";\n\nexport type DocumentState = \"Loading\" | \"Ready\" | \"Error\" | \"KycRejected\";\n\ntype Props = {\n signingRemoteContractsAlreadyPrepared: boolean;\n};\n\nexport const useDocumentStateFold = (props: Props) => {\n const pollingTimeout = useRef();\n const [documentState, setDocumentState] = useState(\"Loading\");\n\n const prepareDocuments = useCommand(api.prepareDocuments);\n const checkDocumentPrepared = useCommand(api.checkDocumentPrepared);\n\n const pollDocumentPrepared: TaskEither = () =>\n new Promise((resolve: (result: Either) => unknown) => {\n checkDocumentPrepared()().then(\n either.fold(\n error => resolve(either.left(error)),\n result => {\n switch (result.status) {\n case \"retry\":\n pollingTimeout.current = window.setTimeout(\n () => pollDocumentPrepared().then(resolve),\n 3000\n );\n return;\n case \"error\":\n setDocumentState(\"Error\");\n resolve(either.left(null));\n return;\n case \"success\":\n setDocumentState(\"Ready\");\n resolve(either.right(null));\n return;\n }\n }\n )\n );\n });\n\n useEffect(\n () =>\n pipe(\n documentState === \"Ready\",\n boolean.fold(constVoid, () => clearTimeout(pollingTimeout.current))\n ),\n [documentState]\n );\n\n useEffect(() => {\n pipe(\n props.signingRemoteContractsAlreadyPrepared,\n boolean.fold(\n () =>\n pipe(\n prepareDocuments(),\n taskEither.fold(\n () => taskEither.fromIO(() => setDocumentState(\"Error\")),\n ({ status }) =>\n status === \"KYC_REJECTED\"\n ? taskEither.fromIO(() => setDocumentState(\"KycRejected\"))\n : pollDocumentPrepared\n )\n ),\n () => pollDocumentPrepared\n )\n )();\n }, []);\n\n const foldDocumentState = (\n onLoading: () => R,\n onReady: () => R,\n onError: () => R,\n onRejectedKyc: () => R\n ): R => {\n switch (documentState) {\n case \"Loading\":\n return onLoading();\n case \"Ready\":\n return onReady();\n case \"Error\":\n return onError();\n case \"KycRejected\":\n return onRejectedKyc();\n }\n };\n\n return { foldDocumentState, documentState };\n};\n","import { constNull, pipe } from \"fp-ts/function\";\nimport * as remoteData from \"../../../RemoteData\";\nimport { usePolling } from \"../../../useAPI\";\nimport * as api from \"../../api\";\nimport { foldClientStatus } from \"./LowRiskClientState\";\nimport { ClientStatusErrorId } from \"../../api\";\nimport { Option } from \"fp-ts/Option\";\nimport { option } from \"fp-ts\";\n\ntype Props = {\n feedbackBlock: (\n status: \"loading\" | \"error\",\n errId: Option\n ) => JSX.Element;\n content: () => JSX.Element;\n};\n\nexport function CheckingContractsWithStatusCheck(props: Props) {\n const [getClientStatusResult] = usePolling(api.getClientStatus, {\n shouldPollingContinue: ({ status }) => status === \"PENDING\",\n intervalMS: 3000,\n });\n\n return pipe(\n getClientStatusResult,\n remoteData.fold(\n () => props.feedbackBlock(\"loading\", option.none),\n constNull,\n response =>\n pipe(\n response,\n foldClientStatus(\n () => props.feedbackBlock(\"loading\", option.none),\n () => props.feedbackBlock(\"error\", response.id),\n () => props.content()\n )\n )\n )\n );\n}\n","import { constNull, pipe } from \"fp-ts/function\";\nimport { IO } from \"fp-ts/IO\";\nimport { useQuery } from \"../../useAPI\";\nimport { foldRiskType } from \"./FollowUpAndSignatureState\";\nimport { HighRiskClient } from \"./HighRiskClient/HighRiskClient\";\nimport { LowRiskClient } from \"./LowRiskClient/LowRiskClient\";\nimport { followUpPreliminaryStatus, LFStatus } from \"../api\";\nimport * as remoteData from \"../../RemoteData\";\nimport { ContentRow, Loader } from \"design-system\";\nimport { StandardLoanFlowType } from \"../domain\";\nimport { Option } from \"fp-ts/Option\";\nimport { ExistingClientAuthenticationMethod } from \"../../globalDomain\";\n\ntype Props = {\n onContinue: (status: Option) => unknown;\n onApplicationRejected: IO;\n onAfterSignature: (status: Option) => unknown;\n flowType: StandardLoanFlowType;\n authenticationMethod: Option;\n mustReadAllDocuments?: boolean;\n skipContracts: boolean;\n isCredentialsAndSigningRemote: boolean;\n onRemoteCredentialsExit: IO;\n credentialStatus:\n | {\n existingClient: true;\n }\n | {\n existingClient: false;\n shouldAskCredential: boolean;\n };\n isRework: boolean;\n};\n\nexport function CreateProfile(props: Props) {\n const [preliminaryStatus] = useQuery(followUpPreliminaryStatus);\n\n return pipe(\n preliminaryStatus,\n remoteData.fold(\n () => (\n \n \n \n ),\n constNull,\n ({ statusCode }) =>\n pipe(\n statusCode === \"OK\" ? \"low\" : \"high\",\n foldRiskType(\n () => ,\n () => (\n \n )\n )\n )\n )\n );\n}\n","import { Reader } from \"fp-ts/Reader\";\nimport { IO } from \"fp-ts/IO\";\n\nexport type RiskType = \"high\" | \"low\";\n\nexport function foldRiskType(\n whenHighRisk: IO,\n whenLowRisk: IO\n): Reader {\n return type => {\n switch (type) {\n case \"high\":\n return whenHighRisk();\n case \"low\":\n return whenLowRisk();\n }\n };\n}\n","import { useReducer } from \"react\";\nimport { option, taskEither } from \"fp-ts\";\nimport { pipe } from \"fp-ts/function\";\nimport { TaskEither } from \"fp-ts/TaskEither\";\nimport { useFormatMessage } from \"../../../intl\";\nimport {\n passwordForCommunication,\n reducer,\n foldState,\n unableToProceedAction,\n unableToProceed,\n} from \"./HighRiskClientState\";\nimport { PasswordForCommunication } from \"./PasswordForCommunication\";\nimport { UnableToProceed } from \"./UnableToProceed\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { useCommand } from \"../../../useAPI\";\nimport * as api from \"../../api\";\n\nexport function HighRiskClient(props: {\n credentialStatus:\n | {\n existingClient: true;\n }\n | {\n existingClient: false;\n shouldAskCredential: boolean;\n };\n}) {\n const submitCredentials = useCommand(api.submitCredentials);\n\n const [state, dispatch] = useReducer(\n reducer,\n !props.credentialStatus.existingClient &&\n props.credentialStatus.shouldAskCredential\n ? passwordForCommunication()\n : unableToProceed()\n );\n const formatMessage = useFormatMessage();\n\n const onComplete = (password: NonEmptyString): TaskEither =>\n pipe(\n submitCredentials({\n profile: {\n userId: option.none,\n pin: option.none,\n password,\n },\n }),\n taskEither.orElse(() =>\n taskEither.leftIO(() =>\n pipe(\n formatMessage(\"UKonto.GenericError\"),\n option.fromPredicate(() => state.error)\n )\n )\n ),\n taskEither.chain(() =>\n taskEither.fromIO(() => dispatch(unableToProceedAction()))\n )\n );\n\n return pipe(\n state,\n foldState({\n PasswordForCommunication: () => (\n state.error)\n )}\n />\n ),\n UnableToProceed: () => ,\n })\n );\n}\n","import { Panel, TextChildren } from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { Option } from \"fp-ts/Option\";\nimport { ReaderTaskEither } from \"fp-ts/ReaderTaskEither\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { SecurityPassword } from \"../../../UKontoSecondPart/CreateProfileAndReadDocuments/CreateProfile/SecurityPassword\";\nimport { useFormatMessage } from \"../../../intl\";\n\ntype Props = {\n onComplete: ReaderTaskEither;\n error: Option;\n};\n\nexport function PasswordForCommunication(props: Props) {\n const formatMessage = useFormatMessage();\n\n return (\n (\n \n )}\n isOpen\n />\n );\n}\n","import { FlowAccordion, FlowAccordionItem } from \"design-system\";\nimport { option, taskEither } from \"fp-ts\";\nimport { IO } from \"fp-ts/IO\";\nimport { constVoid, flow, pipe } from \"fp-ts/function\";\nimport { NonEmptyArray } from \"fp-ts/NonEmptyArray\";\nimport { TaskEither } from \"fp-ts/TaskEither\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\nimport { useFormatMessage } from \"../../../intl\";\nimport { UserID } from \"../../../UKontoSecondPart/CreateProfileAndReadDocuments/CreateProfile/UserID\";\nimport { SecurityPin } from \"../../../UKontoSecondPart/CreateProfileAndReadDocuments/CreateProfile/SecurityPin\";\nimport { SecurityPassword } from \"../../../UKontoSecondPart/CreateProfileAndReadDocuments/CreateProfile/SecurityPassword\";\nimport { useCommand } from \"../../../useAPI\";\nimport * as api from \"../../../StandardLoan/api\";\nimport { CheckingContracts } from \"./CheckingContracts\";\nimport {\n foldState,\n onUserCreationErrorAction,\n savePasswordAction,\n saveSecurityPINAction,\n saveUserIDAction,\n setActiveItemAction,\n reducer,\n State,\n CreatedLowRiskClient,\n CreatingLowRiskClient,\n} from \"./LowRiskClientState\";\nimport { useReducer } from \"react\";\nimport { Option } from \"fp-ts/Option\";\nimport { StandardLoanFlowType } from \"../../domain\";\nimport { ExistingClientAuthenticationMethod } from \"../../../globalDomain\";\n\ntype Props = {\n onContinue: (status: Option) => unknown;\n onApplicationRejected: IO;\n onAfterSignature: (status: Option) => unknown;\n flowType: StandardLoanFlowType;\n authenticationMethod: Option;\n mustReadAllDocuments?: boolean;\n skipContracts: boolean;\n isCredentialsAndSigningRemote: boolean;\n credentialStatus:\n | {\n existingClient: true;\n }\n | {\n existingClient: false;\n shouldAskCredential: boolean;\n };\n isRework: boolean;\n};\ntype StateWithNoExistsClient = CreatingLowRiskClient | CreatedLowRiskClient;\n\nexport function LowRiskClient(props: Props) {\n const formatMessage = useFormatMessage();\n\n const initialState: State = props.credentialStatus.existingClient\n ? { type: \"ExistingClient\" }\n : props.credentialStatus.shouldAskCredential\n ? {\n type: \"CreatingLowRiskClient\",\n activeItem: option.some(0),\n userID: option.none,\n securityPIN: option.none,\n password: option.none,\n error: false,\n }\n : {\n type: \"CreatedLowRiskClient\",\n activeItem: option.some(0),\n userID: option.none,\n securityPIN: option.none,\n password: option.none,\n error: false,\n };\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const submitCredentials = useCommand(api.submitCredentials);\n\n const onProfileSubmit = (\n internalState: StateWithNoExistsClient,\n password: NonEmptyString\n ): TaskEither =>\n pipe(\n submitCredentials({\n profile: {\n userId: internalState.userID,\n pin: internalState.securityPIN,\n password,\n },\n }),\n taskEither.orElse(() =>\n taskEither.leftIO(() =>\n dispatch(onUserCreationErrorAction())\n )\n ),\n taskEither.chain(() =>\n taskEither.fromIO(() => dispatch(savePasswordAction(password)))\n )\n );\n\n const userIdStep = (\n internalState: StateWithNoExistsClient\n ): FlowAccordionItem => ({\n title: formatMessage(\n \"StandardLoan.FollowUpAndSignature.LowRiskClient.userID\"\n ),\n content: () => (\n \n taskEither.fromIO(() => dispatch(saveUserIDAction(newUserId)))\n }\n />\n ),\n });\n\n const securityPINStep: FlowAccordionItem = {\n title: formatMessage(\n \"StandardLoan.FollowUpAndSignature.LowRiskClient.securityPIN\"\n ),\n content: () => (\n \n ),\n };\n const passwordStep = (\n internalState: StateWithNoExistsClient\n ): FlowAccordionItem => ({\n title: formatMessage(\n \"StandardLoan.FollowUpAndSignature.LowRiskClient.passwordForCommunication\"\n ),\n content: () => (\n onProfileSubmit(internalState, password)}\n error={pipe(\n formatMessage(\"StandardLoan.SecurityPassword.error\"),\n option.fromPredicate(() => internalState.error)\n )}\n />\n ),\n });\n\n const accordionItems = (\n internalState: StateWithNoExistsClient\n ): NonEmptyArray => {\n const userIdStepContent = userIdStep(internalState);\n const passwordStepContent = passwordStep(internalState);\n return [userIdStepContent, securityPINStep, passwordStepContent];\n };\n\n const clientCredentialsFlow = (internalState: StateWithNoExistsClient) => {\n const items = accordionItems(internalState);\n\n return (\n state.type === \"CreatingLowRiskClient\")\n )}\n onChange={flow(setActiveItemAction, dispatch)}\n />\n );\n };\n\n return pipe(\n state,\n foldState({\n creating: creatingState => clientCredentialsFlow(creatingState),\n created: createdState => (\n <>\n {!props.isRework && clientCredentialsFlow(createdState)}\n \n \n ),\n existingClient: () => (\n \n ),\n })\n );\n}\n","import { Box, FeedbackBlock } from \"design-system\";\nimport { option } from \"fp-ts\";\nimport { constNull, pipe } from \"fp-ts/function\";\nimport { useFormatMessage } from \"../../../intl\";\nimport * as remoteData from \"../../../RemoteData\";\nimport { usePolling } from \"../../../useAPI\";\nimport * as api from \"../../api\";\nimport { foldSignatureStatus } from \"./LowRiskClientState\";\n\ntype Props = {\n onContinue: () => unknown;\n onRetrySignature: () => unknown;\n};\n\nexport function AfterSignature(props: Props) {\n const [getSignatureStatus] = usePolling(api.getSignatureStatus, {\n shouldPollingContinue: ({ signatureStatus }) =>\n signatureStatus === \"PENDING\",\n intervalMS: 3000,\n });\n const formatMessage = useFormatMessage();\n\n return pipe(\n getSignatureStatus,\n remoteData.fold(\n () => constNull(),\n constNull,\n response =>\n pipe(\n response,\n foldSignatureStatus(\n () => constNull(),\n () => (\n \n \n \n ),\n () => (\n \n \n \n ),\n () => {\n props.onContinue();\n return null;\n }\n )\n )\n )\n );\n}\n","import { eq } from \"fp-ts\";\nimport { constFalse } from \"fp-ts/function\";\nimport * as t from \"io-ts\";\nimport { apiCall } from \"../../APICall\";\nimport { NonNegativeInteger } from \"design-system\";\nimport { optionFromUndefined, Tenant } from \"../../globalDomain\";\nimport { NonEmptyString } from \"io-ts-types/lib/NonEmptyString\";\n\nexport const CurrenciesOutput = t.array(t.string);\nexport const currencies = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"income\", \"currencies\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: CurrenciesOutput,\n});\n\nexport const FreelancerType = t.type(\n {\n key: NonEmptyString,\n tenant: Tenant,\n name: NonEmptyString,\n },\n \"FreelancerType\"\n);\n\nexport type FreelancerType = t.TypeOf;\n\nexport const FreelancerTypesOutput = t.array(FreelancerType);\n\nexport const freelancerTypes = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"income\", \"freelancerTypes\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: FreelancerTypesOutput,\n});\n\nexport type DataForClientWithoutIcoOutput = t.TypeOf<\n typeof DataForClientWithoutIcoOutput\n>;\n\nexport const DataForClientWithoutIcoOutput = t.type(\n {\n phone: optionFromUndefined(t.string),\n country: optionFromUndefined(t.string),\n city: optionFromUndefined(t.string),\n street: optionFromUndefined(t.string),\n houseNumber: optionFromUndefined(t.string),\n zipCode: optionFromUndefined(t.string),\n },\n \"DataForClientWithoutIcoOutput\"\n);\n\nexport const dataForClientWithoutIco = apiCall({\n path: [\n \"packages\",\n \"loans\",\n \"standard-loan\",\n \"income\",\n \"dataForClientWithoutIco\",\n ],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: DataForClientWithoutIcoOutput,\n});\n\nexport const JobPosition = t.type(\n {\n id: NonNegativeInteger,\n key: NonEmptyString,\n tenant: Tenant,\n language: NonEmptyString,\n name: NonEmptyString,\n },\n \"JobPosition\"\n);\n\nexport type JobPosition = t.TypeOf;\n\nexport const JobPositionsOutput = t.array(JobPosition);\n\nexport const jobPositions = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"income\", \"jobPositions\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: JobPositionsOutput,\n});\n\nexport const EmploymentType = t.keyof(\n {\n IndefiniteContract: true,\n LimitedContract: true,\n Agreement: true,\n SeasonalContract: true,\n Other: true,\n },\n \"EmploymentType\"\n);\n\nexport type EmploymentType = t.TypeOf;\n\nexport const AllowanceType = t.keyof(\n {\n Parental: true,\n FutureParental: true,\n },\n \"AllowanceType\"\n);\nexport type AllowanceType = t.TypeOf;\n\nexport const BusinessSector = t.type(\n {\n id: NonNegativeInteger,\n key: NonEmptyString,\n tenant: Tenant,\n language: NonEmptyString,\n name: NonEmptyString,\n },\n \"BusinessSector\"\n);\n\nexport type BusinessSector = t.TypeOf;\n\nconst BusinessSectorsOutput = t.array(BusinessSector);\n\nexport const businessSectors = apiCall({\n path: [\"packages\", \"loans\", \"standard-loan\", \"income\", \"businessSectors\"],\n inputCodec: t.void,\n inputEq: eq.fromEquals(constFalse),\n outputCodec: BusinessSectorsOutput,\n});\n"],"sourceRoot":""}