{"version":3,"sources":["services/api.ts","pages/SSO/styles.ts","components/Button/styles.ts","components/Button/index.tsx","services/bolsa-api.ts","services/exterior-api.ts","contexts/AuthContext.tsx","assets/xp.svg","pages/SSO/index.tsx","styles/LoginSignUp/authContainer.ts","constants/others/states.ts","utils/validations.ts","utils/format.tsx","utils/mask.ts","utils/date.ts","utils/utils.ts","utils/formValidations.ts","pages/Login/index.tsx","components/DrawerModal/index.tsx","pages/Darfs/styles.ts","components/OperationModal/styles.ts","components/OperationModal/table.tsx","components/OperationModal/useOperationModal.ts","constants/others/exterior.ts","contexts/ClientsContext.tsx","components/OperationModal/index.tsx","assets/icons/send.svg","assets/icons/XRed.svg","assets/icons/filtro.svg","assets/icons/CheckGreen.svg","pages/Darfs/index.tsx","components/Darf/handlers.ts","components/Darf/SendDarfModal.tsx","pages/Darfs/tooltip.ts","pages/Reports/index.tsx","pages/Reports/styles.ts","components/ReportsModal/items.tsx","components/ReportsModal/Cards/styles.ts","components/ReportsModal/Cards/index.tsx","components/ReportsModal/styles.ts","components/ReportsModal/index.tsx","pages/Cadastro/index.tsx","components/Loading/index.tsx","assets/notification.svg","components/ChartBar/index.tsx","components/FooterModal/index.tsx","components/FormModal/index.tsx","components/Avisos/styles.ts","assets/icons/icon-integracao.svg","constants/plans/index.tsx","components/Planos/planos.tsx","components/Planos/styles.ts","components/Payment/PaymentModal/CreditCardStep/index.tsx","services/payment.ts","components/Payment/PaymentModal/CreditCardStep/components/Footer/index.tsx","components/Payment/PaymentModal/CreditCardStep/components/CardForm/index.tsx","services/cep.ts","components/Payment/PaymentModal/CreditCardStep/components/AddressForm/index.tsx","components/Payment/PaymentModal/CreditCardStep/components/ResultScreen/components/ErrorScreen/index.tsx","components/Payment/PaymentModal/CreditCardStep/components/ResultScreen/components/ConfirmScreen/index.tsx","components/Payment/PaymentModal/CreditCardStep/components/ResultScreen/index.tsx","components/Payment/PaymentModal/CreditCardStep/components/ResultScreen/components/PendingScreen/index.tsx","components/Payment/PaymentModal/PixStep/index.tsx","components/Payment/PaymentModal/PixStep/components/CopyText/index.tsx","components/Payment/PaymentModal/styles.ts","components/Payment/PaymentModal/index.tsx","components/Payment/PaymentModal/PaymentLink/styles.ts","components/Payment/PaymentModal/PaymentLink/index.tsx","components/Planos/index.tsx","components/Avisos/Avisos.tsx","components/UploadVelotax/styles.ts","components/UploadVelotax/index.tsx","components/Previdencia/styles.ts","components/Previdencia/index.tsx","constants/inputs/index.tsx","constants/formItems/index.ts","constants/others/permissoes.ts","assets/icons/empty.svg","pages/Professionals/index.tsx","components/UserPlanModal/index.tsx","components/DeleteConfirmationModal/index.tsx","pages/Clients/styles.ts","constants/clients/index.tsx","components/UserPlanModal/ChoosePlanStep/styles.ts","components/UserPlanModal/ChoosePlanStep/index.tsx","components/UserPlanModal/styles.ts","components/ProventosModal/styles.ts","components/ReportType/styles.ts","components/ReportType/ReportType.tsx","components/ProventosModal/index.tsx","assets/icons/mail.svg","assets/icons/whatsapp.svg","components/IntegrationModal/styles.ts","assets/Integracao_XP_B3.gif","assets/integracao_xp_exterior_fundo_branco.gif","components/IntegrationModal/index.tsx","components/NotasCorretagem/UploadNotas/styles.ts","components/NotasCorretagem/UploadNotas/index.tsx","components/PosicaoCard/styles.ts","components/PosicaoCard/index.tsx","assets/icons/selo.svg","utils/patrimonio.ts","components/Notification/styles.ts","components/Notification/Notification.tsx","assets/notification.png","assets/icons/selection.svg","pages/Clients/index.tsx","components/NotasCorretagem/useNotasCorretagem.ts","routes/PrivateRoutes.tsx","routes/OnlyPublicRoute.tsx","routes/OnlyClientAccountPermissionRoute.tsx","pages/Faturamento/styles.ts","pages/Faturamento/index.tsx","pages/MinhaConta/styles.ts","pages/MinhaConta/index.tsx","webpack:///./src/assets/xp.svg?1086","pages/PageNotFound/index.tsx","pages/Regulation/styles.ts","constants/regulation/index.tsx","pages/Regulation/index.tsx","components/Header/styles.ts","components/Header/index.tsx","components/Logo/styles.ts","components/Logo/index.tsx","components/Sidebar/styles.ts","assets/icons/sidebar/darfs.svg","assets/icons/sidebar/conta.svg","assets/icons/sidebar/clientes.svg","assets/icons/sidebar/assessores.svg","components/Sidebar/index.tsx","components/PageWrapper/styles.ts","components/PageWrapper/index.tsx","pages/Authorization/index.tsx","pages/ForgotPassword/index.tsx","pages/ChangePassword/index.tsx","components/PublicWrapper/Header/styles.ts","components/PublicWrapper/Header/index.tsx","components/PublicWrapper/styles.ts","components/PublicWrapper/index.tsx","pages/AuthorizeAccountant/index.tsx","routes/index.tsx","styles/global.ts","services/chatApi.ts","components/ChatGPT/styles.ts","assets/velotax/veloicon.svg","components/ChatGPT/index.tsx","styles/drawer-modal.ts","contexts/ContextWrapper.tsx","components/ErrorBoundary/index.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["api","axios","create","baseURL","process","headers","Container","styled","div","ButtonStyled","Button","isMobile","props","tooltip","css","type","size","disabled","children","apiBolsa","apiExterior","AuthContext","createContext","AuthProvider","navigate","useNavigate","useState","decUrl","setDecUrl","apiError","setApiError","loading","setLoading","showDrawer","setShowDrawer","showDbkModal","setShowDbkModal","loadingSession","setLoadingSession","wasMessageSent","setWasMessageSent","expandedSidebar","setExpandedSidebar","user","setUser","showIndicarModal","setShowIndicarModal","getUserInformation","a","token","localStorage","getItem","defaults","common","apiXPBolsa","apiXPExterior","get","response","userFromApi","data","username","name","email","isOffice","assessorId","fileLink","officeId","isManager","isAdmin","liberadaContratacao","discount","hasPassword","enviarDarfAutomaticamente","responsavel","office","admin","JSON","parse","getUserInfo","useCallback","callback","then","res","catch","err","console","log","updateUserInfo","updateUserDec","updatedUser","answeredStepDec","signOut","removeItem","setTimeout","window","location","reload","useEffect","interceptors","use","error","status","Promise","reject","setLocalStorageWithAuthData","setItem","stringify","handleSignIn","post","password","pass","message","handleSignUp","signUpData","policiesAccepted","isAssessor","usernameEscritorio","terms","handleError","Provider","value","signed","Object","keys","length","useAuth","useContext","SSO","useParams","authorization","success","className","src","veloLogo","alt","LoadingOutlined","htmlType","onClick","AuthContainer","section","states","isValidCPF","cpf","validateBr","isValidCNPJ","cnpj","isValidPhone","phone","yup","isValidSync","removeSpecialCharacters","normalize","replace","numberToPercentageWallet","toFixed","number","Number","toLocaleString","minimumFractionDigits","maximumFractionDigits","numberToPhone","sequenciaNumeros","test","String","ddd","slice","primeiraParte","segundaParte","formatCurrency","prefix","decimalScale","displayType","decimalSeparator","thousandSeparator","fixedDecimalScale","arrow","n","style","fontSize","marginBottom","negativeToPositive","numberToPercentage","currencyToNumber","zero","cpfInputMask","cnpjInputMask","maskCpf","includes","cpfArray","split","splice","join","monthsExtended","placeholder","CalendarLocale","navigator","userAgent","download","link","userAgentString","chromeAgent","indexOf","safariAgent","href","open","getBrowser","sUsrAg","exteriorTransactionsFilter","el","operation","manual","vendasTotaisExt","item","filteredItems","transactions","filter","reduce","t","varTotalBRL","quantity","valor","cambioVenda","vendasTotais","sellPrice","code","substring","toUpperCase","fator","downloadPDF","base64","fileName","linkSource","downloadLink","document","createElement","Date","now","click","isAntesTerceiroDiaUtil","today","moment","isoWeekday","firstDayOfMonth","startOf","businessDaysCount","add","isBefore","thirdBusinessDayAndMonth","currentMonth","getMonth","currentYear","getFullYear","year","month","title","validationCpf","required","validator","_","resolve","Error","validationCnpj","validationCpfCnpj","replaceAll","validationFullName","rule","trim","validationEmail","validationLogo","validationPhone","validationPhoneRequired","validationFieldRequired","validationStateAddress","min","max","isValidStateAddress","validationCardShelfLife","monthYearTime","valueTime","reverse","isValidShelfLife","validationCep","cep","validationCVV","validationPassword","validationMaxLength20","validationPassConfirmation","getFieldValue","validationCreditCardNumber","Payment","fns","validateCardNumber","isValidCreditCard","Login","Form","useForm","form","onFinish","Item","rules","maxLength","Password","visibilityToggle","block","DrawerModal","height","visible","onCancel","getContainer","destroyOnClose","placement","onClose","closable","footer","Content","DownloadIcon","GrDocumentDownload","DarfAutomaticoContainer","DropdownButton","button","TitleContainer","StyledTable","VendasContainer","LoadingContainer","calcReturn","buyPrice","fee","ganho","ret","qtt","color","TabelasBolsa","transaction","index","setIndex","dtoBolsa","Resultado","handleDownloadSheetByLink","map","i","span","ghost","bordered","expandIconPosition","Panel","header","Title","level","memoriaCalculo","sheetFileUrl","icon","width","op","retorno","id","date","format","Text","marginRight","capitalGain","marginLeft","textAlign","TabelasExterior","oldModel","gainKeys","sellPriceKeys","buyPriceKeys","feeKeys","getByKey","isOldModel","undefined","key","k","find","getBuyPrice","getGain","getSellPrice","getFee","useDarfExterior","ExteriorFields","ativo","rendimentoAplicacao","ExteriorFieldsNew","isTrade","quantidade","totalGanho","isInteger","aliquotaDevida","impostoDevido","yearConfigPL4173","ClientsContext","ClientsProvider","clients","setClients","typeProventos","setTypeProventos","yearProventos","setYearProventos","proventos","setProventos","patrimonios","setPatrimonios","notificacoes","setNotificacoes","loadingNotificacoes","setLoadingNotificacoes","proventosLoading","setProventosLoading","patrimoniosLoading","setPatrimoniosLoading","totalClients","setTotalClients","totalPatrimonio","setTotalPatrimonio","totalPatrimonioReverse","setTotalPatrimonioReverse","darfs","setDarfs","totalDarfs","setTotalDarfs","proventosFileUrl","setProventosFileUrl","patrimoniosFileUrl","setPatrimoniosFileUrl","totalProfessionals","setTotalProfessionals","professionals","setProfessionals","selectedClient","setSelectedClient","professionalId","setProfessionalId","selectedProfessional","setSelectedProfessional","newClient","setNewClient","createStep","setCreateStep","loadingGet","setLoadingGet","loadingLogin","setLoadingLogin","professionalGet","setProfessionalGet","professionalSheetBuffer","setProfessionalSheetBuffer","buffer","setBuffer","createClientDeleted","setCreateClientDeleted","createClient","currentPage","professional","Math","random","mail","acesso","from","plan","assessores","person","userDeleted","showModal","getProfessionals","getClients","page","updateClient","filters","payload","tableEdit","userId","put","updateProfessional","getProventos","params","fileUrl","updated","getNotifications","getPatrimonios","client","wallet","posicoes","verifyClientVelotax","fullname","getClientsUpdating","cpfs","forEach","c","updatingB3Integration","push","newClients","stillUpdating","b3IntegrationUpdated","removeCurrent","darf","downloadSheetClientsFromPulling","delayPulling","rej","Uint8Array","blob","Blob","FileSaver","saveAs","pageSize","searchText","planActive","resp","darfEnviado","darfPago","getAllDarfStatus","orderBy","orderDirection","statusBolsa","statusExterior","updateAllClients","processAllClients","fromClients","selectClient","justDownload","info","total","sumPatrimonio","sumPatrimonioReverse","cliente","handleDownloadSheet","localBuffer","all","count","getClientToken","loginInClient","removeClient","delete","_id","removeProfessional","restoreClient","searchClients","search","toLocaleLowerCase","searchProfessionals","useClients","OperationModal","modalOperationsOpen","setModalOperationsOpen","clientsSelected","handleDarfDownload","handleDarfSend","setTransaction","showDarfTooltip","setShowDarfToolTip","isExterior","payed","idDarf","toLowerCase","idDarfBolsa","idDarfExterior","nAtualizarDarfsPassadas","nAtualizarIrrf","atualizouImpostoAcumulado","nAtualizarPrejuizosAcumulados","atualizarTotalmente","atualizouCorretagem","finally","valorPrincipal","irrfExterior","impostoComumFinal","impostoDTFinal","impostoFIIFinal","impostoTotal","impostoAcumulado","multa","juros","impostoTotalFinal","urlDarfExterior","urlDarfBolsa","bodyStyle","position","marginTop","flexGrow","display","justifyContent","alignItems","irrfTotal","multaAux","jurosAux","_extends","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","SvgSend","_ref","svgRef","titleId","viewBox","fill","xmlns","ref","ForwardRef","rx","SvgXRed","SvgFiltro","SvgCheckGreen","sendToWhatsapp","directDownload","inputClients","whatsappRedirectURL","setWhatsappRedirectURL","sendToResp","setSendToResp","setShowSendDarfModal","setEmailFlow","setWhatsappFlow","singleClient","shortPath","darfLabel","text","url","Authorization","SendDarfModal","browser","setKeys","showSendDarfModal","setClientsSelected","emailFlow","whatsappFlow","justify","margin","rel","onChange","e","checked","fontWeight","MailOutlined","paddingLeft","lineHeight","paddingTop","borderTop","InfoCircleOutlined","cursor","Paragraph","dayFilters","toString","m","yearFilters","y","debounce","monthsOrder","initialData","Darfs","setFilters","setSearchText","setCurrentPage","appliedFilters","setAppliedFilters","showFilterModal","setShowFilterModal","allDarfsSelected","setAllDarfsSelected","current","defaultPageSize","showSizeChanger","pageSizeOptions","pagination","handleDisabled","escritorioId","some","isAuthorized","handleSwitchDarfAutomatico","align","gutter","xs","sm","minWidth","clearTimeout","rowKey","dataSource","defaultCurrent","simple","rowSelection","selectedRowKeys","selectedRows","getCheckboxProps","record","body","sorter","order","field","locale","filterReset","columns","b","localeCompare","render","whiteSpace","dataIndex","isDisabled","items","label","menu","trigger","Drop","strong","allowClear","mode","getPopupContainer","parentNode","options","Group","event","checkedChildren","unCheckedChildren","cards","content","description","CardContainer","Card","ReportContainer","ReportsModal","clientSelected","downloading","setDownloading","action","setAction","setData","bolsaAPI","extAPI","veloproAPI","initialYear","setInitialYear","setYear","transactionsFeature","downloadFeature","historicFeature","darfFeature","yearOptions","Array","onChangeYear","parseInt","downloadAction","act","mobileAction","downloadDarf","darfUrl","getHistoric","itemLayout","renderItem","show2024Report","actions","showToast","itvl","setInterval","isProcessing","clearInterval","checkProcessorAction","justSave","noSendMail","paymentInfo","clientInfo","active","Meta","renderAction","handleActionButton","right","top","Reports","setClientSelected","typeReports","setTypeReports","modalReportsOpen","setModalReportsOpen","getPlan","planName","planType","hasPlanXp","unblockedReports","Cadastro","isPj","setIsPj","visiblePass","setVisiblePass","RegisterForm","setFieldValue","EyeInvisibleOutlined","EyeOutlined","activeKey","TabPane","tab","Loading","ChartBar","monthReport","setDataChart","bars","setBars","totalJscp","setTotalJscp","totalDiv","setTotalDiv","totalBonds","setTotalBonds","totalRendi","setTotalRendi","totalAmort","setTotalAmort","chartColors","background","getProviderColor","provider","proventoByMonth","dividendo","rendimento","amortizacao","bonds","groupedProventos","groupBy","operations","corporateActionTypeDescription","grossAmount","barsChart","corretora","futuro","liquidado","types","isFuturo","labelFormatter","notificationImage","ResponsiveContainer","BarChart","left","XAxis","dataKey","YAxis","axisLine","tick","Tooltip","Legend","layout","iconType","verticalAlign","formatter","entry","Bar","stackId","FooterModal","onOk","FormModal","edit","rows","visibility","itemToEdit","setUpdate","update","setFieldsValue","resetFields","onValuesChange","changedValues","values","flat","input","acc","cur","dataEntries","entries","setFields","row","getFieldsValue","hide","array","hidden","valuePropName","AvisosContainer","temPlano","SvgIconIntegracao","PlanEnum","UserPlanEnum","OtherFeatures","UserPlanUpgradeEnum","UserPlans","VELOTAX_MAIN_PRO","interval","showDiscount","price","originalPrice","percentDiscount","discountText","maskValue","includedFeatures","descriptions","VELOTAX_MAIN_PRO_MONTH","BASIC_V1","PRO_V1","PlanosContainer","planos","VELOTAX_MAIN_BASIC","installments","for","benefits","VELOTAX_MAIN_BASIC_MONTH","VELOTAX_MAIN_CONCIERGE","popular","VELOTAX_MAIN_CONCIERGE_MONTH","ETypePurchase","planUpgrade","BASIC_TO_PRO","BASIC_TO_CONCIERGE","PRO_TO_CONCIERGE","getPlanPrice","hasPlan","premium","basic","getPlanOriginalPrice","apiPayment","Footer","currentStep","setCurrentStep","handleProceed","getConditionToDisable","typePurchase","hideTerms","backtoRoot","md","step","CardForm","setCvc","setName","setPhone","setNumber","setExpiry","setFocused","setHolderDocument","setIsValidCardForm","uniqueValue","fixedInstallments","handleBack","signature","installmentSelected","customInstallments","inputType","setInputType","cardType","useMemo","changed","cvv","expiry","holderName","validateFields","mask","onPaste","setAttribute","clipboardData","getData","getAttribute","removeAttribute","onBeforeInput","method","AddressForm","setIsValidAddressForm","onFieldsChange","defaultValue","onValueChange","street","logradouro","neighborhood","bairro","city","localidade","state","uf","getAddressSuggestion","ErrorScreen","cb","ConfirmedScreen","ResultScreen","PendingScreen","getStatus","EPlanStep","CreditCardStep","handleClosableModal","darfData","handleSuccess","handleIdBack","backToRoot","createPlanXPPro","cardForm","addressForm","cvc","focused","holderDocument","setInstallments","isValidCardForm","isValidAddressForm","isPlan","spinning","addressInfo","monthExp","monthYear","paymentForm","clientUserId","cardInfo","line_1","zip_code","holder_name","exp_month","exp_year","createUniquePayment","handleCreatePlanXPPro","CopyText","isMinimalMobile","selection","range","createTextRange","moveToElementText","getElementById","select","getSelection","createRange","selectNode","removeAllRanges","addRange","selectText","pixTaxesByInsitution","PixStep","paymentData","backStep","onSucess","clientUsername","setStep","brCode","setBrCode","qrCode","setQrCode","checkWasPaid","delay","attempts","FINISHED","acceptTerms","br_code","CHOOSE_PAYMENT","stopIntervalPix","plano","p","totalPrice","getDiscount","planPrice","flexDirection","wordBreak","maxWidth","institution","PaymentLink","setLink","getTokenToCheckout","amount","sendMail","clientToEmail","linkUrl","clipboard","writeText","PaymentModal","show","disableCreditCardOption","callDarf","hideDarfDownload","disableCreditCardMessage","onSucessPix","planCurrent","onSucessCreditCard","maxPixValue","selectedYear","emitting","createConciergePlan","typeConcierge","cardList","setCardList","disabledConciergeOption","ocultaContratacaoViaFatura","desabilitaContratacaoViaPix","desabilitaContratacaoViaLink","list","LOADING","plansContentDisplay","backgroundColor","border","CC_PAYMENT","PIX_PAYMENT","PAYMENT_LINK","initialized","UNIQUE","setInitialized","padding","cancelActions","handlePadding","innerWidth","keyboard","maskClosable","Planos","onBack","selectedPlan","setSelectedPlan","paymentModal","setPaymentModal","setPlanUpgrade","setTypeConcierge","handleSelectPlan","createPlanFromSelectedClient","usernames","getMinDiscount","XP_CONCIERGE","XP_PRO","XP_BASIC","concierge","benefit","parentElement","Avisos","setPaymentType","clientsWithCancelRecurring","setIntegrationClient","setShowPaymentModal","setOpen","setIntegrationModal","dismissBolsa","setDismissBolsa","dismissExterior","setDismissExterior","userPlanInfoVelotax","closeIntegration","closeIntegrationBolsa","closeIntegrationExterior","planDueDate","isAfter","temIntegracaoBolsa","temIntegracaoExterior","UploadVelotax","accept","fileList","onRemove","maxCount","beforeUpload","customRequest","multiple","descText","showUploadList","listType","customText","PrevidenciaContainer","Question","Previdencia","resume","setResume","editting","setEditting","activeTabRenda","setActiveTabRenda","activeTabSaude","setActiveTabSaude","activeTabEducacao","setActiveTabEducacao","activeTabPensao","setActiveTabPensao","valuesToReport","setValuesToReport","helpModal","setHelpModal","loadingReportPrev","setLoadingReportPrev","rendaBrutaMensalMode","rendaBrutaMensal","rendaMensal","possuiDependentes","dependentes","possuiGastoMensalSaudeDependente","possuiGastoMensalEducacaoDependente","pagaPensaoAlimenticia","quantidadeDependente","gastoMensalSaudeDependenteMode","gastoMensalSaudeDependente","gastoMensalEducacaoDependenteMode","gastoMensalEducacaoDependente","gastoMensalSaudeMode","gastoMensalEducacaoMode","gastoPensaoAlimenticiaMode","gastoMensalSaude","gastoSaude","gastoMensalEducacao","gastoEducacao","gastoPensaoAlimenticia","gastoPensao","SalarioText","listStyle","EducacaoText","AnualMensalText","HelpModalTexts","rendaAnualMensal","saudeAnualMensal","educacaoAnualMensal","pensaoAnualMensal","Option","ispro","file","o","completa","valorRestituicao","simplificada","TextInput","rest","onBlur","SelectInput","SelectMultipleInput","assessoresSelected","handleChangeAssessores","optionFilterProp","MaskInput","MaskFormItem","TextFormItem","SelectFormItem","SelectMultipleFormItem","permissoes","assessor","gerente","clipPath","opacity","cx","cy","ry","transform","x","r","SvgEmpty","DeleteConfirmationModal","updateData","setVisibility","buttonLabel","finish","ContainerProventos","SideContent","ClientPlanContent","EmptyContainer","ClientContainer","RetornoLabel","IsentCardStyled","ConatinerDarfs","BlurBox","FilterDarfs","DarfFilterButton","selected","DarfCard","PlanContainer","assessorTooltip","Professionals","errors","setErrors","sendRequest","setSendRequest","itemRemove","setItemRemove","loadingFile","setLoadingFile","optionsModal","setOptionsModal","firstSelected","setFirsSelected","csvModalVisible","setCsvModalVisible","errorModalVisible","setErrorModalVisible","deleteModalVisible","setDeleteModalVisible","createModalVisible","setCreateModalVisible","modalPermissaoVisible","setModalPermissaoVisible","env","host","rowClassName","showLessItems","clsx","preventDefault","formData","FormData","append","AssessorFormItemRows","FormItemsAssessores","ClientFormItemRows","userSelected","getTime","formItems","cancelRecuring","FormItemsClients","Feature","CardStyled","hasConcierge","GrayOverlay","Interval","Price","Info","ChoosePlanStep","isActive","userCount","planBought","handleAction","isCancelRecurring","mostrarTip","setMostrarTip","feature","secondaryIcon","onMouseEnter","onMouseLeave","free","PlanModalStyled","Modal","UserPlanModal","closeModal","modalPlans","paymentType","showPaymentModal","paymentId","ContainerModal","ReportTypeContainer","ReportTypeDrawer","setType","closeIcon","months","Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez","ProventosModal","setOpenModal","setMonthProventos","originalData","setOriginalData","dataModalPDF","setDataModalPDF","dateFormat","dateBeginFilter","setDateBeginFilter","dateBeginRef","useRef","dateEndFilter","setDateEndFilter","setTotal","reportDrawerProventos","setReportDrawerProventos","downloadRelatorioProventos","workbook","XLSX","book_new","worksheet","json_to_sheet","book_append_sheet","reportPDFData","capitalize","unitPrice","monthNumber","dataFiltered","monthOp","yearOp","dataSerialized","Produto","Pagamento","Tipo","Instituição","zIndex","corretoras","newCorret","getCorretFilters","dataFinal","corret","dateBegin","toDate","dateEnd","datePagamento","getProventosWithFilter","B3Link","CopyLink","ShareItem","Instructions","b3Link","IntegrationModal","integrationModal","integrationClient","b3IntegrationExample","xpIntegrationExample","mainIcon","encodeURI","whatsIcon","UploadNotas","PosicaoCardStyled","Collapse","signal","LucroPrejuizo","cotacao","HidenValue","currency","PosicaoHeader","posicao","hideValues","codigo","categoria","lucroPrejuizoTotal","lucroPrejuizoDiario","precoAtual","lucroPrejuizoTotalPercentual","lucroPrejuizoDiarioPercentual","CustoMedioModal","to","PosicaoBody","details","cotacaoVenda","loan","typeLoan","precoVenda","hasPosition2019","custoMedio","avgPriceUsd","marketCap","beta","peRatio","earningDate","dividendYield","targetPrice","enterpriseValueRevenue","enterpriseValueEbitda","chart","AreaChart","bottom","x1","y1","x2","y2","offset","stopColor","stopOpacity","tickCount","tickFormatter","v","orientation","CartesianGrid","strokeDasharray","Area","fillOpacity","PosicaoCard","ExpandIcon","SvgSelo","getNomeCorretora","shortName","getCategoriaShortName","calculaSaldoCorretoras","posicao2019","agrupadoPorCorretora","saldosCorretoras","saldo","prev","curr","calculaPorgentagensCategorias","getTodasAsCorretoras","sort","calculaClassesAtivos","agrupadoPorCategoria","saldosCategorias","totalSaldos","percentage","calculaPorcentagemPosicoes","patrimonioTotal","posicoesOrdenadas","porcentagens","porcentagem","porcentagensOrdenadas","somatorioDasMaioresPorcentagens","somatorioDosMaioresValores","po","NotificationContainer","NotificationDrawer","loadingIndex","setLoadingIndex","lidas","viewed","naoLidas","removeNotification","notifications","viewedDate","patch","toLocaleDateString","day","stopPropagation","sendWhatsapp","SvgSelection","isValidFile","Months","0","1","2","3","4","5","6","7","8","9","10","11","mailTypes","whatsappMessage","PatrimonioSemPercentual","handleVencimento","planCancelPending","currentDay","getDate","currentHour","getHours","currentMinute","getMinutes","UTC","Clients","sameNameFiles","loadingSend","setLoadingSend","notas","setNotas","history","setHistory","showNotasCorretagemModal","setShowNotasCorretagemModal","getHistory","filterDay","filterMonth","filterYear","nota","uploadProps","uid","files","findIndex","sameNameFile","Upload","LIST_IGNORE","showRemoveIcon","showPreviewIcon","showDownloadIcon","setFiles","sendNotas","cpfCnpj","originFileObj","errorMessage","reponse","downloadNota","path","useNotasCorretagem","setLoadingMail","setLoadingToken","openModal","setDetailedActiveKeys","activeKeys","setActiveKeys","monthProventos","loadingProventos","setLoadingProventos","detailedPositions","setDetailedPositions","setShowDarfTooltip","setVisibleChart","visibleTabs","setVisibleTabs","chartType","setChartType","setUserSelected","React","showCorretoraFilterModal","setShowCorretoraFilterModal","filterCorretoraAtivo","setFilterCorretoraAtivo","setConfirmPlanModal","removeModalVisible","setRemoveModalVisible","setAssessoresSelected","updateAllPatrimonio","setUpdateAllPatrimonio","assessoresListModal","setAssessoresListModal","vendasBolsa","setVendasBolsa","vendasExterior","setVendasExterior","vendasRestantesBolsa","setVendasRestantesBolsa","vendasRestantesExterior","setVendasRestantesExterior","sendMailModalVisible","setSendMailModalVisible","checkboxCorretoras","setCheckboxCorretoras","selectedCorretoras","setSelectedCorretoras","patrimonioModalVisible","setPatrimonioModalVisible","showMobileActionSelectedClients","setShowMobileActionSelectedClients","selectedNotificationType","setSelectedNotificationType","currentTab","setCurrentTab","typeDarf","setTypeDarf","yearDarf","setYearDarf","prevDarfTabClient","setPrevDarfTabClient","darfLoading","setDarfLoading","darfSelected","setDarfSelected","notificationDrawerOpen","setNotificationDrawerOpen","reportDrawerWallet","setReportDrawerWallet","posicoesFilter","setPosicoesFilter","detailedLoadingIndex","setDetailedLoadingIndex","showUpgradePlan","setShowUpgradePlan","clientsToUpgrade","isConcierge","temInvestimentos","isManagerOrOffice","itemPatrimonio","corretoraFilter","posicoesFiltradas","corretoraNames","patrimonio","classesAtivos","serializePatrimonio","checkAll","indeterminate","updateFilter","carteiraCategorizadaSemFiltros","carteiraCategorizada","handleRemoveModal","handlePlan","createPlanFromSelectedUsers","filteredClients","handleUpdatePatrimonio","resposavel","handleSelectedTab","sendPermissionEmail","patrimonioFiltrado","patrimonioTotalFiltrado","lucroPrejuizoDiarioPercentualNumerator","resumo","lucroPrejuizoDiarioPercentualDenominator","lucroPrejuizoTotalPercentualNumerator","lucroPrejuizoTotalPercentualDenominator","downloadRelatorio","category","newProventos","ClientPlan","renderIsentCard","vendas","restante","limit","tipVendas","complete","borderBottomRightRadius","borderTopRightRadius","handleDarfSendAction","firstClient","TabProventos","selectYears","onChangeActiveKeys","lastOpened","market","detailedActiveKeys","exterior","positions","TabInvestimentos","isNaN","patrimonioReverse","PieChart","Pie","innerRadius","outerRadius","labelLine","legendType","midAngle","percent","RADIAN","PI","radius","cos","sin","colors","textAnchor","dominantBaseline","Cell","Intl","NumberFormat","numberToCurrency","suffixIcon","defaultActiveKey","expandIcon","lastUpdate","TabDarfs","filteredDarfs","darfsToDisplay","hoje","anoAtual","mesAtual","anoSelecionado","mesesPassados","getDarfs","vt","impostoIsento","endOf","temAvisos","SyncOutlined","spin","obj","showZero","WhatsAppOutlined","inputName","clientAttr","filtros","filterIcon","clientWithPhone","phoneParam","textParam","mailType","okText","cancelText","downloadExcel","PrivateRoute","OnlyPublicRoute","OnlyClientAccountPermissionRoute","FaturamentoTable","Faturamento","invoices","setInvoices","getInvoices","invoice","premiumClients","billedClients","MinhaConta","showPassword","setShowPassword","passwordAlreadyExists","setPasswordAlreadyExists","previewOpen","setPreviewOpen","previewImage","setPreviewImage","previewTitle","setPreviewTitle","setFileList","getBase64","reader","FileReader","readAsDataURL","onload","result","onerror","handlePreview","preview","lastIndexOf","handleChange","newFileList","conditions","config","onDrop","dataTransfer","logo","currentPass","onPreview","DownloadOutlined","SvgXp","PageNotFound","subTitle","extra","CompaniesExemptList","italic","Regulation","showListModal","setShowListModal","handleListModal","accordion","Link","frameBorder","allow","allowFullScreen","LayoutHeader","Layout","Header","theme","LogoStyled","Logo","origin","XPLogo","DrawerSider","Drawer","LayoutSider","Sider","Modules","Menu","Module","SvgDarfs","SvgConta","SvgClientes","SvgAssessores","SideBarContainer","setVisible","Sidebar","pagePath","openKeys","handleNavigate","focus","selectedKeys","MainLayout","AntLayout","PageWrapper","BiX","sideBar","overflow","pathname","useLocation","sidebar","isSucess","setIsSucess","ForgotPassword","ChangePassword","passwordConfirmation","HeaderContainer","PublicWrapper","AuthorizeAccountant","Routes","ConfigProvider","primaryColor","infoColor","errorColor","successColor","element","createGlobalStyle","chatApi","ChatButton","ChatWindow","SvgVeloicon","KEY","KEY_TIMESTAMP","defaultMsg","ChatGPT","storage","chatBodyRef","textareaRef","msg","setMsg","setShow","scrolled","setScrolled","firstLoading","setFirstLoading","msgs","setMsgs","scrollToBottom","scrollTo","scrollHeight","after24H","timestamp","loadMsgs","threadId","userMessage","formattedGptAnswer","DOMPurify","sanitize","botResponse","sendMsg","dangerouslySetInnerHTML","__html","textarea","onKeyDown","ContextWrapper","FallbackUI","ErrorBoundaryRollbar","ErrorBoundary","fallbackUI","App","rollbarConfig","accessToken","captureUncaught","captureUnhandledRejections","environment","ptBR","renderEmpty","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode"],"mappings":"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","file":"static/js/main.427ad95c.chunk.js","sourcesContent":["import axios from \"axios\";\n\nconst api = axios.create({\n baseURL: process.env.REACT_APP_VELOTAX_PRO_URL || \"http://localhost:8888\",\n headers: {\n \"ngrok-skip-browser-warning\": \"69420\"\n }\n});\n\nexport default api;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--ant-info-color);\n height: 100%;\n\n .sso-wrapper {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n img {\n max-width: 230px;\n margin-bottom: 40px;\n }\n\n .sso-area {\n background: var(--velotax-background-color);\n border-radius: 8px;\n padding: 20px;\n width: 500px;\n min-height: 100px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n h4 {\n margin-bottom: 20px;\n }\n\n .anticon {\n width: 40px;\n height: 40px;\n color: var(--ant-info-color);\n\n svg {\n width: 100%;\n height: 100%;\n }\n }\n }\n }\n`;\n","import { Button, ButtonProps } from \"antd\";\nimport styled, { css } from \"styled-components\";\n\ninterface ButtonStyledProps extends ButtonProps {\n tooltip?: boolean;\n}\n\nexport const ButtonStyled = styled(Button) `\n font-size: ${(isMobile) => (isMobile ? \"14px\" : \"\")};\n &.ant-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 0px;\n column-gap: 8px;\n box-shadow: none !important;\n }\n &[disabled] {\n border-color: var(--light-gray) !important;\n color: var(--velotax-font-color-ghost) !important;\n background-color: var(--light-gray) !important;\n }\n ${(props) =>\n props.tooltip &&\n css`\n border-color: var(--light-gray) !important;\n color: var(--velotax-font-color-ghost) !important;\n background-color: var(--light-gray) !important;\n `}\n ${(props) =>\n props.type === \"primary\" &&\n css`\n color: var(--black) !important;\n svg {\n fill: var(--black);\n }\n `}\n ${(props) =>\n props.size === \"large\" &&\n css`\n height: 56px;\n svg {\n width: 18px;\n height: 18px;\n min-width: 18px;\n min-height: 18px;\n max-width: 18px;\n max-height: 18px;\n }\n `}\n ${(props) =>\n props.disabled &&\n css`\n svg {\n fill: var(--velotax-font-color-ghost) !important;\n }\n `}\n`;\n","import { ButtonProps } from \"antd\";\nimport { ButtonStyled } from \"./styles\";\n\ninterface ButtonStyledProps extends ButtonProps {\n tooltip?: boolean;\n}\n\nconst Button: React.FC = (props) => (\n {props.children}\n);\n\nexport default Button;\n","import axios from \"axios\";\n\nconst apiBolsa = axios.create({\n baseURL: process.env.REACT_APP_WLBE_XP_BOLSA || \"http://localhost:8888\",\n});\n\nexport default apiBolsa;\n","import axios from \"axios\";\n\nconst apiExterior = axios.create({\n baseURL: process.env.REACT_APP_WLBE_XP_EXTERIOR || \"http://localhost:8888\",\n headers: {\n \"x-api-provider\": \"exterior-xpinvestimentos\",\n },\n});\n\nexport default apiExterior;\n","import { message } from \"antd\";\nimport { useNavigate } from \"react-router\";\nimport React, {\n Dispatch,\n SetStateAction,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport api from \"../services/api\";\nimport apiXPBolsa from \"../services/bolsa-api\";\nimport apiXPExterior from \"../services/exterior-api\";\n\ninterface ILoginData {\n username: string;\n pass: string;\n}\n\ninterface ISignUpData {\n email: string;\n pass: string;\n passConfirmation: string;\n username: string;\n usernameEscritorio: string;\n isAssessor: boolean;\n policiesAccepted: boolean;\n}\n\ninterface IUser {\n name: string;\n email: string;\n username: string;\n fileLink?: string;\n office: boolean;\n admin: boolean;\n officeId?: string;\n assessorId?: string;\n isManager?: boolean;\n liberadaContratacao: boolean;\n discount?: number;\n hasPassword: boolean;\n enviarDarfAutomaticamente?: boolean;\n responsavel?: {\n name: string;\n phone: string;\n }\n}\n\ninterface ISessionData extends IUser {\n token: string;\n}\n\nexport interface IAuthState {\n token: string;\n user: IUser;\n}\n\ninterface IAuthContext {\n handleSignIn: (loginData: ILoginData) => void;\n handleSignUp: (signUpData: ISignUpData) => void;\n setLocalStorageWithAuthData: (sesionData: ISessionData) => void;\n signOut: () => void;\n signed: boolean;\n user: IAuthState;\n apiError: string;\n loading: boolean;\n loadingSession: boolean;\n getUserInfo: () => void;\n updateUserInfo: () => void;\n updateUserDec: () => void;\n decUrl: string;\n showDrawer: boolean;\n showDbkModal: boolean;\n wasMessageSent: boolean;\n expandedSidebar: boolean;\n showIndicarModal: boolean;\n setDecUrl: Dispatch>;\n setUser: Dispatch>;\n setApiError: Dispatch>;\n setShowDrawer: Dispatch>;\n setShowDbkModal: Dispatch>;\n setWasMessageSent: Dispatch>;\n setExpandedSidebar: Dispatch>;\n setShowIndicarModal: Dispatch>;\n}\n\nexport const AuthContext = createContext({} as IAuthContext);\n\nexport const AuthProvider: React.FC = ({ children }) => {\n const navigate = useNavigate();\n\n const [decUrl, setDecUrl] = useState(\"\");\n const [apiError, setApiError] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [showDrawer, setShowDrawer] = useState(false);\n const [showDbkModal, setShowDbkModal] = useState(false);\n const [loadingSession, setLoadingSession] = useState(true);\n const [wasMessageSent, setWasMessageSent] = useState(false);\n const [expandedSidebar, setExpandedSidebar] = useState(false);\n const [user, setUser] = useState({} as IAuthState);\n const [showIndicarModal, setShowIndicarModal] = useState(false);\n\n const getUserInformation = async () => {\n const token = localStorage.getItem(\"@VeloTax:token\");\n const user = localStorage.getItem(\"@VeloTax:user\");\n if (user && token) {\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiXPBolsa.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiXPExterior.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n\n const response = await api.get(\"/auth/userInfo\");\n\n let userFromApi = null;\n if (response.data) {\n const {\n username,\n name,\n email,\n isOffice,\n assessorId,\n fileLink,\n officeId,\n isManager,\n isAdmin,\n liberadaContratacao,\n discount,\n hasPassword,\n enviarDarfAutomaticamente,\n responsavel\n } = response.data;\n userFromApi = {\n username,\n name,\n email,\n assessorId,\n fileLink,\n officeId,\n isManager,\n liberadaContratacao,\n discount,\n office: isOffice,\n admin: isAdmin,\n hasPassword,\n enviarDarfAutomaticamente,\n responsavel\n };\n }\n\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${\n response.headers.token || token\n }`;\n\n return {\n token: response.headers.token || token,\n user: userFromApi || JSON.parse(user),\n };\n }\n return {} as IAuthState;\n };\n\n const getUserInfo = useCallback((callback?: () => void) => {\n setLoadingSession(true);\n getUserInformation()\n .then((res) => {\n setUser(res);\n setLoadingSession(false);\n callback && callback();\n })\n .catch((err) => {\n console.log(\"err\", err);\n setLoadingSession(false);\n });\n }, []);\n\n const updateUserInfo = useCallback(() => {\n getUserInformation().then((res) => {\n setUser(res);\n });\n }, []);\n\n const updateUserDec = useCallback(() => {\n const updatedUser = { ...user.user, answeredStepDec: true };\n const token = localStorage.getItem(\"@VeloTax:token\") || \"\";\n\n setUser({ user: updatedUser, token });\n }, [user]);\n\n const signOut = useCallback(() => {\n setLoadingSession(true);\n localStorage.removeItem(\"@VeloTax:token\");\n localStorage.removeItem(\"@VeloTax:user\");\n api.defaults.headers.common[\"Authorization\"] = \"\";\n setUser({} as IAuthState);\n navigate(\"/p/login\");\n setTimeout(() => {\n window.location.reload();\n }, 500);\n }, [navigate]);\n\n useEffect(() => {\n api.interceptors.response.use(\n (response) => response,\n (error) => {\n console.log(error);\n if (error?.response?.status === 401) {\n signOut();\n }\n\n return Promise.reject(error);\n }\n );\n\n getUserInfo();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const setLocalStorageWithAuthData = useCallback(\n ({\n token,\n username,\n email,\n name,\n office,\n admin,\n fileLink,\n assessorId,\n officeId,\n isManager,\n liberadaContratacao,\n discount,\n hasPassword,\n enviarDarfAutomaticamente,\n responsavel\n }: ISessionData) => {\n localStorage.setItem(\"@VeloTax:token\", token);\n localStorage.setItem(\n \"@VeloTax:user\",\n JSON.stringify({\n username,\n email,\n name,\n fileLink,\n officeId,\n assessorId,\n isManager,\n office,\n admin,\n liberadaContratacao,\n hasPassword,\n })\n );\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n\n setUser({\n token,\n user: {\n username,\n email,\n name,\n officeId,\n assessorId,\n isManager,\n fileLink,\n liberadaContratacao,\n discount,\n office,\n admin,\n hasPassword,\n enviarDarfAutomaticamente,\n responsavel\n },\n });\n navigate(\"/clients\");\n setApiError(\"\");\n },\n // eslint-disable-next-line\n []\n );\n\n const handleSignIn = useCallback(\n async (data: ILoginData) => {\n setLoading(true);\n try {\n const response: any = await api.post(\"/auth/login\", {\n username: data.username,\n password: data.pass,\n });\n const {\n token,\n username,\n email,\n name,\n isOffice,\n isAdmin,\n fileLink,\n assessorId,\n officeId,\n isManager,\n liberadaContratacao,\n discount,\n hasPassword,\n enviarDarfAutomaticamente,\n responsavel\n } = response.data;\n\n setLoadingSession(true);\n setLocalStorageWithAuthData({\n token,\n username,\n email,\n name,\n assessorId,\n isManager,\n officeId,\n fileLink,\n liberadaContratacao,\n discount,\n office: isOffice,\n admin: isAdmin,\n hasPassword,\n enviarDarfAutomaticamente,\n responsavel\n });\n setLoading(false);\n setTimeout(() => {\n setLoadingSession(false);\n }, 500);\n } catch (err: any) {\n message.error(\n err.response?.data?.message ||\n \"CPF e/ou senha incorretos. Tente novamente\"\n );\n setLoading(false);\n // throw Error;\n }\n },\n [setLocalStorageWithAuthData]\n );\n\n const handleError = (err: any) => {\n message.error(\n err.response?.data?.message ||\n \"Algo deu errado, tente novemente mais tarde\"\n );\n setLoading(false);\n };\n\n const handleSignUp = useCallback(\n (signUpData) => {\n setLoading(true);\n const {\n name,\n username,\n email,\n pass,\n policiesAccepted,\n assessorId,\n isManager,\n isAssessor,\n usernameEscritorio,\n } = signUpData;\n\n const user = {\n name,\n username,\n email,\n assessorId,\n isManager,\n isAssessor,\n usernameEscritorio,\n password: pass,\n terms: policiesAccepted,\n };\n\n api\n .post(\"/accountants/register\", user)\n .then((response) => {\n const { token, username, email, name, assessorId, isManager } =\n response.data;\n\n localStorage.removeItem(\"publiconboarding\");\n localStorage.setItem(\"@VeloTax:token\", token);\n localStorage.setItem(\n \"@VeloTax:user\",\n JSON.stringify({\n username,\n email,\n assessorId,\n isManager,\n name,\n })\n );\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n\n getUserInfo(() => {\n navigate(\"/clients\");\n setApiError(\"\");\n setLoading(false);\n });\n })\n .catch((err) => handleError(err));\n },\n [navigate, getUserInfo]\n );\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAuth = (): IAuthContext => useContext(AuthContext);\n","export default __webpack_public_path__ + \"static/media/xp.070672ea.svg\";","import { message } from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport api from \"../../services/api\";\nimport { Container } from \"./styles\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport veloLogo from \"../../assets/xp.svg\";\n\nconst SSO: React.FC = () => {\n const { token } = useParams();\n const navigate = useNavigate();\n const { setLocalStorageWithAuthData, signOut } = useAuth();\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n api\n .post(\n \"/auth/sso\",\n {},\n {\n headers: {\n authorization: `Bearer ${token}`,\n },\n }\n )\n .then((res) => {\n message.success(\"Logado com sucesso\");\n signOut();\n setLoading(false);\n setLocalStorageWithAuthData(res.data);\n })\n .catch((err) => {\n message.error(\"Algo deu errado, tente novamente mais tarde.\");\n setLoading(false);\n });\n // eslint-disable-next-line\n }, [token]);\n\n return (\n \n
\n \"xp\n
\n {loading ? (\n <>\n

Logando...

\n \n \n ) : (\n navigate(\"/p/login\")}\n >\n Tentar fazer login manualmente\n \n )}\n
\n
\n
\n );\n};\n\nexport default SSO;\n","import styled from \"styled-components\";\n\nexport const AuthContainer = styled.section`\n margin: 80px auto 0;\n height: calc(100% - 80px);\n box-sizing: border-box;\n overflow-y: auto;\n overflow-x: hidden;\n background-color: var(--white);\n\n .cnpj-assessor-cadastro {\n display: flex;\n flex-direction: column;\n margin-bottom: 15px;\n align-items: end;\n span {\n color: var(--ant-primary-color);\n font-weight: bolder;\n cursor: pointer;\n }\n .ant-form-item {\n margin-bottom: 1px;\n width: 100%;\n }\n }\n\n .auth-content {\n min-height: 100%;\n margin: 0 auto;\n max-width: calc(100% - 128px);\n padding: 48px 0;\n position: relative;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n flex-direction: column;\n\n h1 {\n margin: 0 0 32px;\n }\n\n p {\n font-weight: 500;\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color);\n margin: 0 0 32px;\n text-align: center;\n }\n\n .form-container {\n width: 420px;\n &.register {\n width: 550px;\n }\n\n form {\n row-gap: 0;\n display: flex;\n flex-direction: column;\n }\n\n .bottom-acessar {\n display: flex;\n justify-content: center;\n }\n }\n }\n\n .buttons {\n margin: 0 0 16px;\n display: flex;\n column-gap: 16px;\n align-items: center;\n justify-content: space-between;\n .ant-btn-primary {\n min-width: 200px;\n text-transform: uppercase;\n }\n }\n\n .btn-underlined {\n padding: 0;\n font-weight: 600;\n text-decoration: none;\n border-bottom: 2px solid var(--ant-primary-color);\n }\n\n .password-with-eye {\n position: relative;\n\n button {\n position: absolute;\n right: 8px;\n top: 5px;\n }\n }\n\n .termos {\n color: var(--dark-2);\n font-size: 14px;\n font-weight: 300;\n line-height: 20px;\n }\n\n .ant-radio-group {\n flex-direction: row;\n margin: 0 0 16px;\n .ant-radio-button-wrapper {\n min-width: 50%;\n font-weight: 300;\n text-align: center;\n }\n .ant-radio-button-wrapper-checked {\n font-weight: 500;\n color: var(--velotax-font-color);\n }\n }\n\n .footer {\n display: flex;\n column-gap: 16px;\n align-items: center;\n width: 100%;\n padding: 16px 0;\n margin: 24px auto 0;\n color: var(--velotax-font-color);\n border-top: 1px solid var(--light-gray);\n }\n\n .checkbox {\n margin-top: 8px;\n }\n\n @media screen and (max-width: 576px) {\n .auth-content {\n border-left: none;\n padding: 64px 24px 0;\n\n :before {\n display: none;\n }\n\n .form-container {\n width: 100% !important;\n }\n }\n\n .buttons {\n button {\n width: 100%;\n }\n\n button + button {\n display: none;\n }\n }\n\n .footer {\n margin: 48px auto 0;\n }\n }\n\n .ant-tabs {\n .ant-tabs-tab + .ant-tabs-tab {\n margin: 0;\n }\n .ant-tabs-nav {\n margin: 0 0 32px;\n .ant-tabs-nav-operations {\n display: none;\n }\n .ant-tabs-nav-wrap {\n .ant-tabs-nav-list {\n width: 100%;\n .ant-tabs-ink-bar {\n background-color: var(--black);\n }\n .ant-tabs-tab {\n width: 50%;\n justify-content: center;\n .ant-tabs-tab-btn {\n font-size: 16px;\n font-weight: 500;\n line-height: 24px;\n color: var(--gray-1);\n }\n &.ant-tabs-tab-active {\n .ant-tabs-tab-btn {\n color: var(--black);\n }\n }\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .auth-content {\n max-width: 100%;\n padding: 48px 24px 64px;\n border-left: none;\n }\n }\n`;\n","export const states = [\n \"AC\",\n \"AL\",\n \"AP\",\n \"AM\",\n \"BA\",\n \"CE\",\n \"DF\",\n \"ES\",\n \"GO\",\n \"MA\",\n \"MT\",\n \"MS\",\n \"MG\",\n \"PA\",\n \"PB\",\n \"PR\",\n \"PE\",\n \"PI\",\n \"RR\",\n \"RO\",\n \"RJ\",\n \"RN\",\n \"RS\",\n \"SC\",\n \"SP\",\n \"SE\",\n \"TO\",\n];\n","import * as yup from \"yup\";\nimport \"yup-phone\";\nimport moment from \"moment\";\nimport { validateBr } from \"js-brasil\";\nimport { states } from \"../constants/others/states\";\nimport Payment from \"payment\";\n\nexport const isValidCPF = (cpf: string) => validateBr.cpf(cpf || \"\");\n\nexport const isValidCNPJ = (cnpj: string) => validateBr.cnpj(cnpj || \"\");\n\nexport const isValidRenavam = (renavam?: string) =>\n renavam && validateBr.renavam(renavam);\n\nexport const isValidFullName = (name: string) =>\n name.trim().split(\" \").length > 1;\n\nexport const isValidEmail = (email?: string) =>\n email && yup.string().email().isValidSync(email);\n\nexport const isValidLogo = (logo?: string) =>\n yup.string();\n\nexport const isValidPhone = (phone?: string) =>\n phone && yup.string().phone(\"BR\").isValidSync(phone);\n\nexport const isValidDate = (date?: string) =>\n date &&\n /^((0?[1-9]|[12][0-9]|3[01])[/](0?[1-9]|1[012])[/](19|20)[0-9]{2})*$/.test(\n date\n );\n\nexport const isDateOnReferenceMonth = (\n month: number,\n year: number,\n date?: string\n) => {\n if (date && isValidDate(date)) {\n try {\n const momentDate = moment(date, \"DD/MM/YYYY\");\n const start = moment(`${year}-${month + 1}`, \"YYYY-M\", true).startOf(\"M\");\n const end = moment(`${year}-${month + 1}`, \"YYYY-M\", true).endOf(\"M\");\n return moment(momentDate).isBetween(start, end, undefined, \"[]\");\n } catch (err) {\n return false;\n }\n }\n return false;\n};\n\nexport const isNonDateOnFuture = (\n month: number,\n year: number,\n date?: string\n) => {\n if (date && isValidDate(date)) {\n try {\n const momentDate = moment(date, \"DD/MM/YYYY\");\n const end = moment(`${year}-${month + 1}`, \"YYYY-M\", true).endOf(\"M\");\n return moment(momentDate).isSameOrBefore(end);\n } catch (err) {\n return false;\n }\n }\n return false;\n};\n\nexport const isValidVoterCard = (voterCard?: string) =>\n voterCard && voterCard.replace(/[._]/g, \"\").length === 12;\n\nexport const isValidCEP = (cep?: string) => cep && validateBr.cep(cep);\n\nexport const checkDateExpiration = (limit: string, value: string) => {\n const [day, month, year] = value.split(\"/\");\n const date = new Date(`${year}-${month}-${day} 23:59:59`);\n return date <= new Date(limit);\n};\n\nexport const isValidIPTU = (value?: string) =>\n !value ||\n String(value || \"\").length === 0 ||\n (String(value || \"\").length >= 8 && String(value || \"\").length <= 30);\n\nexport const isValidDeclarationReceipt = (value: string) =>\n !value || value.length === 10 || value.length === 12;\n\nexport const removeSpecialCharacters = (value: string) => {\n if (!value) return \"\";\n return value?.normalize(\"NFD\").replace(/[^a-zA-Zs]/g, \"\");\n};\n\nexport const isValidStateAddress = (value: string) => {\n return states.includes(value.toUpperCase());\n};\n\nexport const isValidShelfLife = (value: string) => {\n let currentMonth: number | string | undefined = new Date().getMonth() + 1;\n let currentYear = (new Date().getFullYear() + \"\")?.substring(2);\n currentMonth = currentMonth < 10 ? `0${currentMonth}` : currentMonth;\n let monthYearTime = `${currentYear}${currentMonth}`;\n let valueTime = value?.split(\"/\").reverse().join().replace(\",\", \"\");\n return (\n !!value &&\n (valueTime < monthYearTime ||\n !/\\b(0[1-9]|1[0-2])\\/?([0-9]{4}|[0-9]{2})\\b/.test(value))\n );\n};\n\nexport const isValidCreditCard = (value: string) =>\n Payment.fns.validateCardNumber(value);","import moment from \"moment\";\nimport { Tooltip } from \"antd\";\nimport { BiErrorCircle } from \"react-icons/bi\";\nimport NumberFormat from \"react-number-format\";\nimport { AiOutlineArrowDown, AiOutlineArrowUp } from \"react-icons/ai\";\n\nexport const removeLiNumbers = (t: string) => t.replace(/^([\\d]+\\.*)+/, \"\");\n\nexport const numberToPercentageWallet = (value?: number, toFixed = 2) => {\n const number = typeof value === \"number\" ? value : 0;\n return `${Number(number * 100).toLocaleString(\"pt-br\", {\n minimumFractionDigits: toFixed,\n maximumFractionDigits: toFixed,\n })}%`;\n};\n\nexport const onlyNumbersToPhone = (value: string) =>\n value.replace(/[()_.%-/\\s/]/g, \"\");\n\nexport function numberToPhone(sequenciaNumeros: string) {\n const numeroFormatadoRegex = /^\\(\\d{2}\\) \\d{5}-\\d{4}$/;\n if (numeroFormatadoRegex.test(sequenciaNumeros)) return sequenciaNumeros;\n if (String(sequenciaNumeros).length !== 11) return '';\n\n const ddd = sequenciaNumeros.slice(0, 2);\n const primeiraParte = sequenciaNumeros.slice(2, 7);\n const segundaParte = sequenciaNumeros.slice(7);\n\n return `(${ddd}) ${primeiraParte}-${segundaParte}`;\n}\n\nexport const formatCurrency = (value: number, prefix = \"R$ \") => {\n return (\n \n );\n};\n\nexport const numberToCurrency = (value: number) => {\n const formatter = new Intl.NumberFormat('pt-BR', {\n style: 'currency',\n currency: 'BRL',\n })\n\n return formatter.format(value)\n}\n\nexport const signal = (n: number) => (n > 0 ? \"+\" : n < 0 ? \"\" : \"\");\n\nexport const arrow = (n: number) => (n > 0 \n ? \n : n < 0 \n ? \n : \"\");\n\nexport const negativeToPositive = (n: number) => (n < 0 ? n * -1 : n);\n\nexport const numberToPercentage = (value?: number, toFixed = 2) => {\n const number = typeof value === \"number\" ? value : 0;\n return `${Number(number * 100).toLocaleString(\"pt-br\", {\n minimumFractionDigits: toFixed,\n maximumFractionDigits: toFixed,\n })}%`;\n};\n\nexport const currencyToNumber = (value: string, prefix = \"R$\") =>\n Number(value?.replace(prefix, \"\").replace(/\\./g, \"\").replace(/,/g, \".\")) || 0;\n\nexport const replaceDotByComma = (value: number) => {\n return String(value).replace(/\\./g, \",\");\n};\n\nexport const ErrorIcon = (\n \n \n \n);\n\nexport const zero = (n: number) => (n < 10 ? `0${n}` : `${n}`);\n\nexport const formatDate = (dateString: string) => {\n const date = new Date(dateString);\n const year = date.getFullYear();\n const day = zero(date.getDate());\n const month = zero(date.getMonth() + 1);\n return `${day}/${month}/${year}`;\n};\n\nexport const formatDateHour = (dateString: string) =>\n `${moment(dateString).format(\"DD/MM/YYYY\")} às ${moment(dateString).format(\n \"HH:mm\"\n )}`;\n","export const cpfInputMask = \"999.999.999-99\";\nexport const cnpjInputMask = \"99.999.999/9999-99\";\nexport const phoneInputMask = \"(99) 99999-9999\"\n\nexport const maskCpf = (cpf = \"\") => {\n if (!cpf) return \"\";\n if (cpf.includes(\".\")) return cpf;\n const cpfArray = cpf.split(\"\");\n cpfArray.splice(3, 0, \".\");\n cpfArray.splice(7, 0, \".\");\n cpfArray.splice(11, 0, \"-\");\n return cpfArray.join(\"\");\n};\n\nexport const maskNitPisPasep = (nitpispasep = \"\") => {\n if (!nitpispasep) return \"\";\n if (nitpispasep.includes(\".\")) return nitpispasep;\n const array = nitpispasep.split(\"\");\n array.splice(3, 0, \".\");\n array.splice(9, 0, \".\");\n array.splice(12, 0, \"-\");\n return array.join(\"\");\n};\n\nexport const maskCnpj = (cnpj = \"\") => {\n if (!cnpj) return \"\";\n if (cnpj.includes(\".\")) return cnpj;\n const cnpjArray = cnpj.split(\"\");\n cnpjArray.splice(2, 0, \".\");\n cnpjArray.splice(6, 0, \".\");\n cnpjArray.splice(10, 0, \"/\");\n cnpjArray.splice(15, 0, \"-\");\n return cnpjArray.join(\"\");\n};\n\nexport const maskCep = (cep = \"\") => {\n if (!cep) return \"\";\n if (cep.includes(\"-\")) return cep;\n const cepArray = cep.split(\"\");\n cepArray.splice(5, 0, \"-\");\n return cepArray.join(\"\");\n};\n\nexport const maskVoterCard = (voterCard = \"\") => {\n if (!voterCard) return \"\";\n const voterCardArray = voterCard.split(\"\");\n voterCardArray.splice(4, 0, \" \");\n voterCardArray.splice(9, 0, \" \");\n return voterCardArray.join(\"\");\n};\n\nexport const maskPhone = (phone = \"\") => {\n if (!phone) return \"\";\n const phoneArray = phone.split(\"\");\n if (phone.substring(0, 2) === \"55\") {\n phoneArray.splice(0, 0, \"+\");\n }\n if (phoneArray[0] === \"+\") {\n phoneArray.splice(3, 0, \" (\");\n phoneArray.splice(6, 0, \") \");\n phoneArray.splice(12, 0, \"-\");\n } else {\n phoneArray.splice(0, 0, \"(\");\n phoneArray.splice(3, 0, \") \");\n phoneArray.splice(9, 0, \"-\");\n }\n return phoneArray.join(\"\");\n};\n","import CalendarLocale from \"rc-picker/lib/locale/pt_BR\";\n\nexport const months = [\n \"Jan\",\n \"Fev\",\n \"Mar\",\n \"Abr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Ago\",\n \"Set\",\n \"Out\",\n \"Nov\",\n \"Dez\",\n];\n\nexport const monthsExtended = [\n \"Janeiro\",\n \"Fevereiro\",\n \"Março\",\n \"Abril\",\n \"Maio\",\n \"Junho\",\n \"Julho\",\n \"Agosto\",\n \"Setembro\",\n \"Outubro\",\n \"Novembro\",\n \"Dezembro\",\n];\n\nexport const antDatePickerLocale = {\n lang: {\n placeholder: \"\",\n ...CalendarLocale,\n },\n timePickerLocale: {},\n};\n","import moment from \"moment\";\n\nexport const getQuizLabel = (username: string, message: string): string => {\n return username !== \"Declarante\"\n ? `${username} ${message}`\n : `Você ${message}`;\n};\n\nexport const isSafari = /^((?!chrome|android).)*safari/i.test(\n navigator.userAgent\n);\n\nexport const isMobile = (): boolean => {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n};\n\nexport const isExternalLink = (link: string): boolean => {\n return /http:\\/\\/|https:\\/\\//i.test(link);\n};\n\nexport const errorMessage =\n \"Algo inesperado aconteceu. Tente novamente mais tarde.\";\n\nexport const reintegrateMessage =\n \"Faça novamente a integração para buscar dados mais novos\";\n\nexport const download = (link: string) => {\n const userAgentString = navigator.userAgent;\n let chromeAgent = userAgentString.indexOf(\"Chrome\") > -1;\n let safariAgent = userAgentString.indexOf(\"Safari\") > -1;\n if (chromeAgent && safariAgent) safariAgent = false;\n if (safariAgent) {\n window.location.href = link;\n return;\n } else {\n window.open(link);\n }\n};\n\nexport const getBrowser = () => {\n var sBrowser,\n sUsrAg = navigator.userAgent;\n\n if (sUsrAg.indexOf(\"Firefox\") > -1) {\n sBrowser = \"Mozilla Firefox\";\n // \"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0\"\n } else if (sUsrAg.indexOf(\"SamsungBrowser\") > -1) {\n sBrowser = \"Samsung Internet\";\n // \"Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G955F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.4 Chrome/67.0.3396.87 Mobile Safari/537.36\n } else if (sUsrAg.indexOf(\"Opera\") > -1 || sUsrAg.indexOf(\"OPR\") > -1) {\n sBrowser = \"Opera\";\n // \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.106\"\n } else if (sUsrAg.indexOf(\"Trident\") > -1) {\n sBrowser = \"Microsoft Internet Explorer\";\n // \"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Zoom 3.6.0; wbx 1.0.0; rv:11.0) like Gecko\"\n } else if (sUsrAg.indexOf(\"Edge\") > -1) {\n sBrowser = \"Microsoft Edge\";\n // \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299\"\n } else if (sUsrAg.indexOf(\"Chrome\") > -1) {\n sBrowser = \"Google Chrome or Chromium\";\n // \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 Chrome/66.0.3359.181 Safari/537.36\"\n } else if (sUsrAg.indexOf(\"Safari\") > -1) {\n sBrowser = \"Apple Safari\";\n // \"Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1 980x1306\"\n } else {\n sBrowser = \"unknown\";\n }\n\n return sBrowser;\n};\n\nexport const fator = (item: any) => {\n const value = (item.quantity || 0) * (item.sellPrice || 0);\n const code = item.code?.substring(0, 3)?.toUpperCase() || \"\";\n switch (code) {\n case \"WIN\":\n return value / 5;\n case \"WDO\":\n return value / 10;\n case \"DOL\":\n return value / 50;\n case \"IAP\":\n return value / 25;\n case \"ETN\":\n return value / 30;\n case \"ETH\":\n return value / 30;\n case \"SOY\":\n return value / 34;\n case \"CNY\":\n return value / 35;\n case \"EUR\":\n return value / 50;\n case \"ICF\":\n return value / 100;\n case \"KFE\":\n return value / 100;\n case \"OZ1\":\n return value / 250;\n case \"CCM\":\n return value / 450;\n case \"SFI\":\n return value / 450;\n case \"SJC\":\n return value / 450;\n case \"ACF\":\n return value / 508;\n default:\n return value;\n }\n};\n\nconst exteriorTransactionsFilter = (el: any) =>\n (el.operation === \"SELL\" && !el?.type) ||\n (el.operation === \"SELL\" && el.manual) ||\n (el.operation === \"SELL\" &&\n (el.type === \"TRADE\" || el.type === \"WITHDRAW\")) ||\n el.type === \"INTEREST\";\n\nexport const vendasTotaisExt = (item: any) => {\n const filteredItems = item?.transactions?.filter(exteriorTransactionsFilter) ?? []\n return filteredItems?.reduce((a: number, t: any) => {\n if (t.varTotalBRL) {\n return a + (t.varTotalBRL || 0) * (t.quantity || 0);\n }\n return a + (t.valor || 0) * (t.cambioVenda || 0)\n }, 0) || 0;\n}\n\nexport const vendasTotais = (item: any) =>\n item?.transactions?.reduce((a: number, t: any) => a + fator(t), 0) || 0;\n\nexport const downloadPDF = (base64: string, fileName?: string) => {\n const linkSource = `data:application/pdf;base64,${base64}`;\n const downloadLink = document.createElement(\"a\");\n fileName = fileName ?? `Relatório-${Date.now()}.pdf`;\n\n downloadLink.href = linkSource;\n downloadLink.download = fileName;\n downloadLink.click();\n};\n\nexport const mesesPassados = (date: Date) => {\n const hoje = new Date();\n const anoAtual = hoje.getFullYear();\n const mesAtual = hoje.getMonth();\n\n const anoSelecionado = date.getFullYear();\n\n const mesesPassados = [];\n\n if (anoSelecionado < anoAtual) {\n for (let i = 0; i < 12; i++) {\n mesesPassados.push(i + 1);\n }\n } else if (anoSelecionado === anoAtual) {\n for (let i = 0; i < mesAtual; i++) {\n mesesPassados.push(i + 1);\n }\n }\n\n return mesesPassados.sort((a, b) => b - a);\n};\n\nexport const isAntesTerceiroDiaUtil = () => {\n const today = moment();\n // Verifica se a data de hoje é um sábado\n if (today.isoWeekday() === 6) {\n return false;\n }\n // Verifica se a data de hoje é anterior ao terceiro dia útil\n const firstDayOfMonth = moment(today).startOf('month');\n let businessDaysCount = 0;\n while (businessDaysCount < 2) {\n if (firstDayOfMonth.isoWeekday() < 6) {\n businessDaysCount++;\n }\n firstDayOfMonth.add(1, 'day');\n }\n return today.isBefore(firstDayOfMonth);\n}\n\nexport const thirdBusinessDayAndMonth = (item: any) => {\n const today = new Date();\n const currentMonth = today.getMonth() + 1;\n const currentYear = today.getFullYear();\n if (item.year === currentYear && item.month === currentMonth)\n return { disabled: true, title: \"Aguarde o encerramento do mês para pagar seu DARF\" }\n else if (item.month == currentMonth - 1 && item.year == currentYear && isAntesTerceiroDiaUtil())\n return { disabled: true, title: \"Aguarde o terceiro dia útil deste mês para pagar seu DARF\" }\n else return { disabled: false, title: \"\" }\n}","import { Rule } from \"antd/lib/form\";\nimport {\n checkDateExpiration,\n isDateOnReferenceMonth,\n isNonDateOnFuture,\n isValidCEP,\n isValidCNPJ,\n isValidCPF,\n isValidCreditCard,\n isValidDate,\n isValidDeclarationReceipt,\n isValidEmail,\n isValidFullName,\n isValidIPTU,\n isValidLogo,\n isValidPhone,\n isValidRenavam,\n isValidShelfLife,\n isValidStateAddress,\n isValidVoterCard,\n months,\n} from \".\";\n\nconst dataLimite = \"2021-12-31 23:59:59\";\n\nexport const validationCpf: Rule[] = [\n {\n required: true,\n validator: (_: any, value: string) =>\n !value || !isValidCPF(value)\n ? Promise.reject(new Error(\"Informe um CPF válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationCnpj: Rule[] = [\n {\n validator: (_: any, value: string) =>\n !value || !isValidCNPJ(value)\n ? Promise.reject(new Error(\"Informe um CNPJ válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationCpfCnpj: Rule[] = [\n {\n validator: (_: any, value: string) => {\n const unmaskedValue = value.replaceAll(/[._-]/g, \"\");\n if (unmaskedValue.length > 11) {\n return !value || !isValidCNPJ(value)\n ? Promise.reject(new Error(\"Informe um CNPJ válido\"))\n : Promise.resolve();\n } else {\n return !value || !isValidCPF(value)\n ? Promise.reject(new Error(\"Informe um CPF válido\"))\n : Promise.resolve();\n }\n },\n },\n];\n\nexport const validationFullName: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !value || !isValidFullName(value)\n ? Promise.reject(\n new Error(\"Seu nome deve possuir duas palavras ou mais\")\n )\n : Promise.resolve(),\n },\n];\n\nexport const validationEmail: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !value || !isValidEmail(value)\n ? Promise.reject(new Error(\"Informe um e-mail válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationLogo: Rule[] = [\n {\n validator: (rule, value) =>\n !isValidLogo(value)\n ? Promise.reject(new Error(\"Insira uma logo válida\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationPhone: Rule[] = [\n {\n validator: (rule, value) =>\n !value || isValidPhone(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um telefone válido\")),\n },\n];\n\nexport const validationPhoneRequired: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !value || !isValidPhone(value)\n ? Promise.reject(new Error(\"Informe um telefone válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationDateNotRequired: Rule[] = [\n {\n validator: (rule, value) =>\n !value || isValidDate(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe uma data válida\")),\n },\n];\n\nexport const validationDate: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !isValidDate(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationDateIsOnReferenceMonth: (\n month: number,\n year: number\n) => Rule[] = (month, year) => [\n {\n validator: (_: any, value: string) =>\n isDateOnReferenceMonth(month, year, value)\n ? Promise.resolve()\n : Promise.reject(\n new Error(`Informe uma data do mês de ${months[month]} de ${year}`)\n ),\n },\n];\n\nexport const validationDateIsOnFuture: (\n month: number,\n year: number\n) => Rule[] = (month, year) => [\n {\n validator: (_: any, value: string) =>\n isNonDateOnFuture(month, year, value)\n ? Promise.resolve()\n : Promise.reject(\n new Error(\n `Informe uma data menor ou igual ao mês de ${months[month]} de ${year}`\n )\n ),\n },\n];\n\nexport const validationIPTU: Rule[] = [\n {\n validator: (rule, value) =>\n isValidIPTU(value)\n ? Promise.resolve()\n : Promise.reject(\n new Error(\"O número do IPTU precisa ter entre 8 e 30 caracteres.\")\n ),\n },\n];\n\nexport const validationDateNotRequired2021: Rule[] = [\n {\n validator: (rule, value) =>\n value && !isValidDate(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : value && !checkDateExpiration(dataLimite, value)\n ? Promise.reject(new Error(\"Informe uma data até 31/12/2021\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationDate2021: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !isValidDate(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : !checkDateExpiration(dataLimite, value)\n ? Promise.reject(new Error(\"Informe uma data até 31/12/2021\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationVoterCard: Rule[] = [\n {\n validator: (rule, value) =>\n !value || isValidVoterCard(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um Título de Eleitor válido\")),\n },\n];\n\nexport const validationRenavam: Rule[] = [\n {\n validator: (rule, value) =>\n !value || isValidRenavam(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um Renavam válido\")),\n },\n];\n\nexport const validationAcceptedTerms: Rule[] = [\n {\n validator: (rule, value) =>\n value\n ? Promise.resolve()\n : Promise.reject(\n new Error(\n \"O aceite dos termos de uso, política de privacidade e política de cookies é obrigatório\"\n )\n ),\n },\n];\n\nexport const validationFieldRequired: Rule[] = [\n {\n required: true,\n message: \"Este campo é obrigatório\",\n },\n];\n\nexport const validationNumberPercentageField: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0.0001,\n type: \"number\",\n message: \"O valor deve ser maior que 0,0001\",\n },\n {\n max: 100,\n type: \"number\",\n message: \"O valor deve ser menor que 100 (cem)\",\n },\n];\n\nexport const validationNumberPercentageFieldPositive: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0,\n type: \"number\",\n message: \"O valor deve estar entre 0 (zero) e 100 (cem)\",\n },\n {\n max: 100,\n type: \"number\",\n message: \"O valor deve estar entre 0 (zero) e 100 (cem)\",\n },\n];\n\nexport const validationNumberField: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0.01,\n type: \"number\",\n message: \"O valor deve ser maior que 0 (zero)\",\n },\n];\n\nexport const validationNumberAllowNegativeField: Rule[] = [\n ...validationFieldRequired,\n {\n type: \"number\",\n message: \"Não é um número válido\",\n },\n];\n\nexport const validationNumberFieldPositive: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0,\n type: \"number\",\n message: \"O valor deve ser positivo\",\n },\n];\n\nexport const validationQuantityCryptoField: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0,\n type: \"number\",\n message: \"O valor deve ser positivo\",\n },\n];\n\nexport const validationDeclarationReceipt: Rule[] = [\n {\n validator: (rule, value) =>\n isValidDeclarationReceipt(value)\n ? Promise.resolve()\n : Promise.reject(\n new Error(\"O número da declaração deve ter 10 ou 12 dígitos\")\n ),\n },\n];\n\nexport const validationStateAddress: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n value && isValidStateAddress(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um Estado válido\")),\n },\n];\n\nexport const validationCardShelfLife: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n isValidShelfLife(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationCep: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n isValidCEP(value ?? \"\")\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um CEP válido\")),\n },\n];\n\nexport const validationAmexCVV: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n (value?.replace(/[_]/g, \"\") ?? \"\")?.length === 4\n ? Promise.resolve()\n : Promise.reject(new Error(\"Insira um código de segurança válido\")),\n },\n];\n\nexport const validationCVV: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n (value?.replace(/[_]/g, \"\") ?? \"\")?.length === 3\n ? Promise.resolve()\n : Promise.reject(new Error(\"Insira um código de segurança válido\")),\n },\n];\n\nexport const validationPasswordNotRequired: Rule[] = [\n { min: 6, message: \"A senha deve ter pelo menos 6 caracteres\" },\n];\n\nexport const validationPassword: Rule[] = [\n { required: true, message: \"Informe uma senha\" },\n { min: 6, message: \"A senha deve ter pelo menos 6 caracteres\" },\n];\n\nexport const validationMaxLength20: Rule[] = [\n { required: true, message: \"Este campo é obrigatório\" },\n { max: 20, message: \"Deve possuir menos que 20 caracteres.\" },\n];\n\nexport const validationPassConfirmation: Rule[] = [\n ({ getFieldValue }) => ({\n validator: (_: any, value: string) =>\n value === getFieldValue(\"pass\")\n ? Promise.resolve()\n : Promise.reject(new Error(\"As senhas não coincidem\")),\n }),\n];\n\nexport const validationCreditCardNumber: Rule[] = [\n {\n validator: (rule, value: string) =>\n isValidCreditCard(value?.replace(/[^0-9\\\\.]+/g, \"\"))\n ? Promise.resolve()\n : Promise.reject(new Error(\"Número de cartão inválido\")),\n },\n];\n","import React from \"react\";\nimport { Form, Input } from \"antd\";\n// import ReactInputMask from \"react-input-mask\";\nimport { useNavigate } from \"react-router-dom\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\n// import { cnpjInputMask, cpfInputMask } from \"../../utils\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport {\n validationFieldRequired,\n validationMaxLength20,\n} from \"../../utils/formValidations\";\n\ninterface IData {\n username: string;\n pass: string;\n}\n\nexport const Login: React.FC = () => {\n const navigate = useNavigate();\n const [form] = Form.useForm();\n const { handleSignIn, loading } = useAuth();\n\n const onFinish = async (data: IData) => {\n try {\n await handleSignIn({\n ...data,\n username: data.username.replace(/[_.-/-]/g, \"\"),\n });\n } catch (err: any) {\n return;\n }\n };\n\n const handleNavigate = () => {\n navigate(\"/p/cadastrar\");\n };\n\n return (\n \n
\n
\n

Acesse sua conta

\n
\n \n \n {/* {\n if (\n e.target.value.replace(/[_.-/-]/g, \"\").length ===\n cpfCnpjValue.length\n ) {\n setIsCnpj(true);\n } else if (\n e.target.value.replace(/[_.-/-]/g, \"\").length < 12\n ) {\n setIsCnpj(false);\n }\n setCpfCnpjValue(e.target.value.replace(/[_.-/-]/g, \"\"));\n }}\n /> */}\n \n\n \n \n \n\n
\n \n Entrar\n \n
\n
\n navigate(\"/p/forgot-password\")}\n >\n ESQUECI MINHA SENHA\n \n
\n
\n\n
\n Ainda não possui uma conta?\n \n COMEÇAR\n \n
\n
\n
\n
\n );\n};\n","import { Drawer, DrawerProps, Modal, ModalProps } from \"antd\";\nimport { isMobile } from \"../../utils\";\n\nexport interface DrawerModalProps\n extends Omit,\n Omit {\n visible?: boolean;\n onCancel?: (e: any) => void;\n}\n\nexport const DrawerModal: React.FC = ({\n height,\n visible,\n onCancel,\n children,\n className,\n getContainer,\n ...props\n}) => {\n return isMobile() ? (\n \n {children}\n \n ) : (\n \n {children}\n \n );\n};\n","import { GrDocumentDownload } from \"react-icons/gr\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px;\n min-height: 100%;\n background-color: var(--ghost);\n\n @media only screen and (max-device-width: 812px) {\n padding: 0 0 24px;\n background-color: var(--white);\n }\n`;\n\nexport const Content = styled.div`\n width: 100%;\n padding: 48px;\n margin: 0 auto;\n border-radius: 8px;\n background-color: var(--white);\n box-shadow: 0px 4px 8px 0px #e0e0e0;\n\n .ant-btn {\n height: 48px !important;\n }\n\n .send-icon {\n fill: none !important;\n stroke: var(--dark-2);\n }\n\n .btn-filter {\n border-radius: 24px;\n font-weight: 500 !important;\n svg {\n stroke: var(--ant-primary-color);\n }\n &.filtro-aplicado {\n color: var(--ant-primary-color);\n border: 1px solid var(--ant-primary-color);\n background-color: var(--ant-primary-1);\n }\n }\n .downloadSheet {\n font-weight: 500 !important;\n svg {\n fill: var(--ant-primary-color);\n }\n }\n\n .button-disabled-plan {\n position: relative;\n\n .over-button-disabled {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 999;\n }\n }\n\n .calc-status {\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 6px;\n span {\n width: 8px;\n height: 8px;\n min-width: 8px;\n min-height: 8px;\n border-radius: 4px;\n display: inline-block;\n background-color: var(--red);\n &.Regular {\n background-color: var(--green-1);\n }\n &.NOT_PAYED {\n background-color: var(--yellow);\n }\n }\n }\n\n .ant-btn-group.ant-dropdown-button {\n .ant-btn {\n text-transform: none;\n border-color: var(--dark-1);\n :first-of-type {\n border-radius: 24px;\n margin-right: 8px;\n }\n :last-of-type {\n border-radius: 24px;\n }\n :disabled,\n :hover {\n color: var(--gray-1);\n border-color: var(--gray-1);\n }\n &.ant-dropdown-trigger {\n svg {\n fill: var(--dark-1);\n }\n :disabled,\n :hover {\n svg {\n fill: var(--gray-1);\n }\n }\n }\n }\n }\n\n .ant-list.ant-list-split {\n padding: 0 32px;\n border: 2px solid var(--dark-1);\n border-radius: 8px;\n .ant-list-item-action > li {\n padding: 0;\n }\n }\n .ant-list-item {\n padding: 20px 0;\n }\n .ant-list-item-meta-title {\n font-size: 1rem;\n font-weight: 700;\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--white);\n }\n .ant-list-item-action {\n display: flex;\n row-gap: 4px;\n column-gap: 8px;\n\n .ant-btn.hire-btn {\n color: var(--ant-primary-color) !important;\n border-color: var(--dark-1);\n background-color: var(--dark-1);\n }\n\n .ant-btn.action-btn {\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: space-between;\n row-gap: 0;\n height: 48px;\n padding: 0 4px;\n font-size: 14px;\n color: var(--white);\n\n svg,\n svg * {\n stroke: var(--ant-primary-color);\n }\n }\n }\n\n .ant-list-item-action-split {\n display: none;\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n\n .ant-btn {\n span {\n line-height: 18px;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n svg {\n min-width: 20px;\n min-height: 20px;\n }\n }\n\n .resp {\n p {\n margin: 0;\n text-align: left;\n max-width: 128px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n\n .action-btns {\n display: flex;\n justify-content: center;\n .action-btn + .action-btn {\n margin-left: 8px;\n width: 48px;\n }\n .action-btn {\n font-size: 14px;\n font-weight: 500;\n border-radius: 24px;\n border: 1px solid var(--ghost);\n background-color: var(--ghost);\n svg {\n path {\n transition: stroke 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\n }\n }\n &:active,\n &:focus,\n &:hover {\n color: var(--gray-1);\n svg {\n path {\n stroke: var(--gray-1);\n }\n }\n }\n }\n }\n\n .ant-table-container table > thead > tr:first-child th:first-child {\n border-top-left-radius: 8px;\n }\n .ant-table-container table > thead > tr:first-child th:last-child {\n border-top-right-radius: 8px;\n }\n .ant-table-container table > tbody > tr:last-child td:first-child {\n border-bottom-left-radius: 8px;\n }\n .ant-table-container table > tbody > tr:last-child td:last-child {\n border-bottom-right-radius: 8px;\n }\n\n .ant-table-container table > tbody > tr td {\n border-left: 1px solid var(--ghost);\n &:last-child {\n border-right: 1px solid var(--ghost);\n }\n }\n .ant-table-selection-column {\n padding: 16px;\n }\n\n .ant-table-thead .ant-table-cell {\n background-color: var(--ghost);\n font-weight: 500;\n color: black;\n &:before {\n visibility: hidden;\n }\n &.ant-table-selection-column {\n .ant-table-selection {\n .ant-checkbox {\n .ant-checkbox-inner {\n border-color: var(--white);\n background-color: var(--white);\n }\n &.ant-checkbox-checked {\n .ant-checkbox-inner {\n border-color: var(--ant-primary-color);\n background-color: var(--ant-primary-color);\n }\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 32px 16px;\n border-radius: 0;\n box-shadow: none;\n\n .ant-list.ant-list-split {\n padding: 0 16px;\n font-size: 12px;\n\n .ant-list-item {\n padding: 16px 0;\n }\n\n .ant-list-item-action {\n flex-direction: column;\n }\n }\n\n .ant-table-content {\n overflow-y: auto;\n }\n }\n`;\n\nexport const HiredTag = styled.div`\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 8px;\n padding: 4px 16px;\n border: none;\n font-size: 14px;\n font-weight: 500;\n color: var(--white);\n background-color: var(--dark-1);\n`;\n\nexport const DownloadIcon = styled(GrDocumentDownload)`\n width: 16px;\n height: 16px;\n margin-left: 4px;\n cursor: pointer;\n`;\n\nexport const DarfAutomaticoContainer = styled.div`\n height: 44px;\n display: flex;\n font-weight: 500;\n justify-content: flex-end;\n margin-top: 16px;\n align-items: center;\n color: var(--gray-3);\n\n .ant-switch {\n background-color: var(--ant-error-color);\n margin-right: 8px;\n }\n\n .ant-switch-checked {\n background-color: var(--ant-success-color);\n }\n\n .ant-switch-inner {\n position: relative;\n width: 16px;\n height: 16px;\n }\n .ant-switch-inner .anticon-loading {\n scale: 0.6;\n position: absolute;\n top: -4px;\n left: -4px;\n }\n\n @media only screen and (max-device-width: 812px) {\n margin: 0;\n padding: 0 16px;\n }\n`;\n\nexport const DropdownButton = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--ant-gray-2);\n svg {\n margin-right: 8px;\n transform: translateY(-1px);\n font-size: 16px;\n }\n`\n","import styled from \"styled-components\";\n\nexport const TitleContainer = styled.div`\n display: flex;\n justify-content: flex-start;\n align-items: center;\n font-size: 24px;\n\n svg {\n margin-right: 0.5rem;\n }\n`;\n\nexport const StyledTable = styled.div`\n width: 100%;\n border-top: 1px solid #eaecee;\n border-radius: 8px 8px 0 0;\n overflow: hidden;\n\n .columnTitle {\n justify-content: flex-end;\n height: 54px;\n font-weight: 600;\n background-color: #eaecee;\n\n div {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .show {\n justify-content: space-around !important;\n\n svg {\n width: 18px;\n height: 18px;\n }\n }\n }\n\n .operationsRow {\n height: 60px;\n\n div {\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: white;\n border-right: 1px solid #eaecee;\n border-bottom: 1px solid #eaecee;\n }\n .rowLabel {\n flex-grow: 1;\n background-color: var(--velotax-ghost) !important;\n justify-content: flex-start;\n padding-left: 1rem;\n background-color: transparent;\n border-left: 1px solid #eaecee;\n }\n\n &:last-of-type {\n .rowLabel {\n border-bottom-left-radius: 8px;\n }\n div {\n &:last-of-type {\n border-bottom-right-radius: 8px;\n }\n }\n }\n }\n\n .resumoRow {\n height: 42px;\n .secondary {\n padding-left: 32px;\n font-size: 11px;\n }\n }\n\n .chevronIcon {\n display: none;\n }\n\n @media only screen and (max-device-width: 812px) {\n .resumoRow {\n .secondary {\n padding-left: 8px;\n font-size: 11px;\n }\n }\n .operationsRow {\n .rowLabel {\n font-size: 9px;\n }\n }\n }\n\n @media only screen and (max-device-width: 670px) {\n font-size: 11px;\n\n .hide {\n display: none !important;\n }\n .show {\n width: 300px;\n max-width: 300px;\n flex: 0 0 300px;\n }\n .transparent {\n opacity: 0;\n }\n .chevronIcon {\n display: block;\n }\n }\n @media only screen and (max-device-width: 550px) {\n .operationsRow {\n .rowLabel {\n width: min-content;\n padding-left: 8px;\n }\n }\n .resumoRow .rowLabel {\n min-width: 160px;\n }\n .resumoRow .secondary {\n min-width: 160px;\n padding-left: 8px;\n }\n .show {\n width: 150px;\n max-width: 150px;\n flex: 0 0 150px;\n }\n }\n`;\n\nexport const VendasContainer = styled.div`\n background-color: var(--velotax-background-color-ghost);\n padding: 1rem 1rem 1rem 1rem;\n #title {\n font-weight: 600;\n margin-bottom: 4px;\n }\n`;\n\nexport const LoadingContainer = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 99;\n background-color: rgba(255, 255, 255, 0.8);\n`;\n","import moment from \"moment\";\nimport { AiOutlineDownload } from \"react-icons/ai\";\nimport { Col, Collapse, Row, Typography } from \"antd\";\nimport { BiChevronLeft, BiChevronRight } from \"react-icons/bi\";\nimport Button from \"../Button\";\nimport { StyledTable, VendasContainer } from \"./styles\";\nimport { download, formatCurrency, numberToPercentage, numberToPercentageWallet } from \"../../utils\";\nimport { useDarfExterior } from \"./useOperationModal\";\n\ninterface IBolsaProps {\n transaction: any;\n index: number;\n setIndex: React.Dispatch>;\n}\n\nconst calcReturn = (\n sellPrice: number,\n buyPrice: number,\n quantity: number,\n fee: number,\n ganho?: number\n) => {\n let ret = 0\n if(ganho) {\n const qtt = quantity ? quantity : 1;\n ret =\n sellPrice && buyPrice\n ? (sellPrice * qtt - (fee || 0)) / (buyPrice * qtt) - 1\n : 0;\n }\n return (\n = 0\n ? \"green\"\n : \"red\"\n }`,\n }}\n >\n {ret ? numberToPercentageWallet(ret) : \"-\"}\n \n );\n};\n\nexport const TabelasBolsa = ({ transaction, index, setIndex }: IBolsaProps) => {\n const dtoBolsa = [\n {\n title: \"Comum\",\n Resultado: \"varTotaisComum\",\n \"Ganhos tributáveis\": \"ganhoComum\",\n \"(-) Prejuízos a compensar\": \"prejuizoComum\",\n \"(x) Alíquota devida\": \"15%\",\n \"Imposto devido\": \"impostoComumFinal\",\n },\n {\n title: \"Day Trade\",\n Resultado: \"varTotaisDT\",\n \"Ganhos tributáveis\": \"ganhoDT\",\n \"(-) Prejuízos a compensar\": \"prejuizoDayTrade\",\n \"(x) Alíquota devida\": \"20%\",\n \"Imposto devido\": \"impostoDTFinal\",\n },\n {\n title: \"FII\",\n Resultado: \"varTotaisFII\",\n \"Ganhos tributáveis\": \"ganhoFII\",\n \"(-) Prejuízos a compensar\": \"prejuizoFII\",\n \"(x) Alíquota devida\": \"20%\",\n \"Imposto devido\": \"impostoFIIFinal\",\n },\n ];\n\n const handleDownloadSheetByLink = async (link: string) => {\n download(link);\n };\n\n return (\n <>\n \n \n {dtoBolsa.map((t, i) => (\n \n {\n if (index > 0) setIndex(index - 1);\n }}\n />\n {t.title}\n {\n if (index < dtoBolsa.length - 1) setIndex(index + 1);\n }}\n />\n \n ))}\n \n \n Resultado\n {dtoBolsa.map((t, i) => (\n \n {formatCurrency(transaction?.[t.Resultado])}\n \n ))}\n \n \n Ganhos tributáveis\n {dtoBolsa.map((t, i) => (\n \n {formatCurrency(transaction?.[t[\"Ganhos tributáveis\"]])}\n \n ))}\n \n \n (-) Prejuízos a compensar\n {dtoBolsa.map((t, i) => (\n \n {formatCurrency(transaction?.[t[\"(-) Prejuízos a compensar\"]])}\n \n ))}\n \n \n (x) Alíquota devida\n {dtoBolsa.map((t, i) => (\n \n {t[\"(x) Alíquota devida\"]}\n \n ))}\n \n \n Imposto devido\n {dtoBolsa.map((t, i) => (\n \n {formatCurrency(transaction?.[t[\"Imposto devido\"]])}\n \n ))}\n \n \n\n \n \n Vendas realizadas no mês\n \n }\n >\n {transaction?.memoriaCalculo?.length > 0 && (\n \n handleDownloadSheetByLink(transaction?.sheetFileUrl)\n }\n style={{\n fontSize: \"14px\",\n marginBottom: \"16px\",\n }}\n icon={\n \n }\n >\n BAIXAR PLANILHA\n \n )}\n \n {transaction?.memoriaCalculo?.length > 0 ? (\n (transaction?.memoriaCalculo || []).map((op: any, i: number) => {\n const retorno =\n op?.sellPrice && op?.buyPrice\n ? op?.sellPrice / op?.buyPrice - 1\n : 0;\n return (\n \n \n {op?.code}\n Data: {moment(op?.date).format(\"DD/MM/YYYY\")}\n Quantidade: {op?.quantity}\n \n \n Ganho:\n \n {formatCurrency(op?.capitalGain)}\n \n \n Retorno:\n 0 ? \"green\" : \"red\",\n marginLeft: \"4px\",\n }}\n >\n {numberToPercentage(retorno)}\n \n \n \n \n );\n })\n ) : (\n
\n Nenhuma operação de venda realizada neste mês\n
\n )}\n
\n \n \n \n );\n};\n\nexport const TabelasExterior = ({ transaction, oldModel, year }: { transaction: any, oldModel: boolean, year?: number }) => {\n const style = (i: any) => ({\n marginBottom:\n i ===\n (transaction?.memoriaCalculo || []).filter(\n (op: any) => op?.type !== \"DIVIDEND\"\n ).length -\n 1\n ? \"0\"\n : \"1.5rem\",\n })\n const { getBuyPrice, getFee, getGain, getSellPrice } = useDarfExterior()\n\n const ExteriorFields = ({op, i}: {op: any, i: any}) => (\n \n \n {op?.ativo}\n \n Data de liquidação:{\" \"}\n {moment(op?.data).format(\"DD/MM/YYYY\")}\n \n \n \n Ganho:\n \n {formatCurrency(\n op?.type === \"INTEREST\"\n ? op?.rendimentoAplicacao\n : op?.ganho\n )}\n \n \n \n )\n\n const ExteriorFieldsNew = ({op, i}: {op: any, i: any}) => {\n const isTrade = op?.type === \"TRADE\";\n return (\n \n \n {op?.ativo}\n \n Data:{\" \"}\n {moment(op?.data).format(\"DD/MM/YYYY\")}\n \n {\n (isTrade && !oldModel) && (\n \n \n Quantidade:\n \n {formatCurrency(op?.quantidade)}\n \n )\n }\n \n \n {isTrade ? 'Ganho:' : 'Rendimento total:'}\n \n {formatCurrency((() => {\n if (oldModel) {\n return op?.type === \"INTEREST\"\n ? op?.rendimentoAplicacao\n : op?.varTotalBRL\n }\n switch(op?.type) {\n case 'DIVIDEND':\n case 'INTEREST':\n return op?.rendimentoAplicacao;\n default:\n return op?.varTotalBRL\n }\n })()\n )}\n \n {\n (isTrade && !oldModel) && (\n \n \n Retorno:\n \n {calcReturn(\n getSellPrice(op, oldModel).value,\n getBuyPrice(op, oldModel).value,\n op?.quantidade,\n getFee(op, oldModel).value,\n getGain(op, oldModel).value\n )}\n \n )\n }\n \n \n )\n }\n\n return (\n <>\n {year && year <= 2023 && \n \n Ganho total\n \n {formatCurrency(transaction?.totalGanho)}\n \n \n \n (x) Alíquota devida\n \n {Number.isInteger(transaction?.aliquotaDevida)\n ? transaction?.aliquotaDevida\n : transaction?.aliquotaDevida?.toFixed(2)}{\" \"}\n %\n \n \n \n Imposto devido\n \n {formatCurrency(transaction?.impostoDevido)}\n \n \n }\n \n \n {year && year <= 2023 ? 'Vendas realizadas no mês' : 'Movimentações'}\n \n }\n >\n \n {transaction?.memoriaCalculo?.length > 0 ? (\n (transaction?.memoriaCalculo || [])\n .filter(\n (op: any) =>\n (op?.type === \"WITHDRAW\" && op?.operation === \"SELL\") ||\n (op?.type === \"TRADE\" && op?.operation === \"SELL\") ||\n (op?.type === \"INTEREST\" && op?.operation === \"BUY\") ||\n (op?.type === \"DIVIDEND\" && !oldModel)\n )\n .map((op: any, i: number) => {\n if(!oldModel) return \n return (\n \n );\n })\n ) : (\n
\n Nenhuma operação de venda realizada neste mês\n
\n )}\n
\n \n \n \n );\n};\n","export function useDarfExterior() {\n const gainKeys = ['ganho', 'varTotalBRL'];\n const sellPriceKeys = ['valor', 'sellPrice_BRL'];\n const buyPriceKeys = ['valueOriginBRA', 'buyPrice_BRL'];\n const feeKeys = ['fee', 'fee_BRL'];\n\n function getByKey(item: any, keys: string[], isOldModel?: boolean) {\n if (isOldModel !== undefined) {\n if (isOldModel) {\n return { key: keys[0], value: item[keys[0]] ?? null };\n }\n return { key: keys[1], value: item[keys[1]] ?? null };\n }\n const k = keys.find((key) => item[key] !== null && item[key] !== undefined);\n const value = k ? item[k] : null;\n const key = k ?? keys[0];\n return { key, value };\n }\n\n function getGain(item: any, isOldModel?: boolean) {\n return getByKey(item, gainKeys, isOldModel)\n }\n\n function getSellPrice(item: any, isOldModel?: boolean) {\n return getByKey(item, sellPriceKeys, isOldModel)\n }\n\n function getBuyPrice(item: any, isOldModel?: boolean) {\n return getByKey(item, buyPriceKeys, isOldModel)\n }\n\n function getFee(item: any, isOldModel?: boolean) {\n return getByKey(item, feeKeys, isOldModel)\n }\n\n return { getBuyPrice, getGain, getSellPrice, getFee }\n}","export const yearConfigPL4173 = 2024","import { message } from \"antd\";\nimport FileSaver from \"file-saver\";\nimport React, {\n Dispatch,\n SetStateAction,\n createContext,\n useCallback,\n useContext,\n useState,\n} from \"react\";\nimport api from \"../services/api\";\nimport { isAntesTerceiroDiaUtil, isMobile } from \"../utils\";\nimport { yearConfigPL4173 } from \"../constants/others/exterior\";\n\nexport type CalcStatus =\n | \"Integração inativa\"\n | \"Imposto apurado\"\n | \"Imposto devido\";\n\ninterface GetClientsParams {\n page?: number;\n pageSize?: number;\n searchText?: string;\n planActive?: any;\n resp?: string[];\n statusBolsa?: CalcStatus[];\n statusExterior?: CalcStatus[];\n getAllDarfStatus?: boolean;\n orderBy?: string;\n orderDirection?: string;\n month?: number[];\n year?: number[];\n type?: string[];\n impostoDevido?: string;\n darfEnviado?: string;\n darfPago?: string;\n updateAllClients?: boolean;\n processAllClients?: boolean;\n fromClients?: boolean\n selectClient?: string\n justDownload?: boolean\n}\n\ninterface IClientsContext {\n clients: IClient[];\n setClients: any;\n darfs: IClient[];\n setDarfs: any;\n professionals: IProfessional[];\n getClients: (params?: GetClientsParams) => Promise;\n getProventos: (\n cpf: string,\n year?: number,\n type?: string,\n onFinish?: (data: any) => void\n ) => Promise;\n getPatrimonios: (\n cpf: string,\n type?: string,\n onFinish?: (data: any) => void\n ) => Promise;\n getNotifications: (cpf: string) => void;\n totalClients: number;\n totalDarfs: number;\n totalPatrimonio: number;\n totalPatrimonioReverse: number;\n getProfessionals: (\n page?: number,\n value?: string,\n all?: boolean\n ) => Promise;\n totalProfessionals: number;\n typeProventos: string;\n setTypeProventos: any;\n searchClients: (search: string) => IClient[];\n searchProfessionals: (search: string) => IProfessional[];\n loginInClient: (client: IClient) => void;\n getClientToken: (client: IClient) => Promise;\n removeClient: (page: number) => Promise;\n removeProfessional: (data: any) => Promise;\n selectedClient: IClient | null;\n proventosLoading: any;\n patrimoniosLoading: any;\n selectedProfessional: IProfessional | null;\n setSelectedClient: Dispatch>;\n setProfessionalId: (id: string | null) => void;\n yearProventos: any;\n setSelectedProfessional: (professional: IProfessional | null) => void;\n newClient: IClient | null;\n createStep: number;\n verifyClientVelotax: (client: IClient) => Promise;\n createClient: (client: IClient, page?: number) => Promise;\n updateClient: (\n client: IClient,\n page?: number,\n filters?: any\n ) => Promise;\n updateProfessional: (client: IClient) => Promise;\n setCreateStep: (step: number) => void;\n setNewClient: (client: any) => void;\n setYearProventos: any;\n loadingGet: boolean;\n proventos: any;\n patrimonios: any;\n notificacoes: INotificacoes[];\n loadingNotificacoes: boolean;\n setNotificacoes: React.Dispatch>;\n professionalGet: boolean;\n setProventosLoading: any;\n loadingLogin: boolean;\n setLoadingGet: any;\n handleDownloadSheet: any;\n createClientDeleted: ClientDeleted;\n setCreateClientDeleted: React.Dispatch>;\n restoreClient: (username: string) => Promise;\n proventosFileUrl: string;\n patrimoniosFileUrl: string;\n getClientsUpdating: () => Promise\n}\n\nexport interface IClient {\n resp: any;\n _id: string;\n name: string;\n fullname?: string;\n email: string;\n phone?: string;\n username: string;\n type?: string;\n manager: string;\n manager_id: string;\n userPlanInfoVelotax: IPlanInfo;\n plan: any;\n planActive: boolean;\n clientPlanActive: boolean;\n hasPlanXp: boolean;\n planDueDate: number;\n planType: string;\n planName?: string;\n planCreatedAt?: Date;\n userId: string;\n month?: number;\n year?: number;\n id?: string;\n statusBolsa?: string;\n urlDarfBolsa?: string;\n statusExterior?: string;\n urlDarfExterior?: string;\n idDarfBolsa?: string;\n idDarfExterior?: string;\n impostoDevido?: number;\n cancelRecuring?: boolean;\n planCancelPending?: boolean;\n isConcierge?: boolean;\n wallet?: any;\n code?: Array;\n closeIntegrationBolsa?: boolean;\n closeIntegrationExterior?: boolean;\n notifications?: any[];\n updatingB3Integration?: boolean;\n b3IntegrationUpdated?: boolean\n}\n\nexport interface IPlanInfo {\n active: boolean;\n dueDate: number;\n type: string;\n paid: boolean;\n actionFree: boolean;\n}\n\nexport interface IProfessional {\n _id: string;\n name: string;\n fullname?: string;\n email: string;\n username: string;\n office: boolean;\n acesso: string;\n}\n\nexport interface ClientDeleted {\n showModal?: boolean;\n name?: string;\n cpf?: string;\n}\n\nexport interface INotificacoes {\n message: string;\n date: Date;\n viewed: boolean;\n viewedDate?: Date;\n}\n\nexport const ClientsContext = createContext(\n {} as IClientsContext\n);\n\nexport const ClientsProvider: React.FC = ({ children }) => {\n const [clients, setClients] = useState([]);\n const [typeProventos, setTypeProventos] = useState(\"\");\n const [yearProventos, setYearProventos] = useState(\n new Date().getFullYear()\n );\n const [proventos, setProventos] = useState([]);\n const [patrimonios, setPatrimonios] = useState([]);\n const [notificacoes, setNotificacoes] = useState([]);\n const [loadingNotificacoes, setLoadingNotificacoes] = useState(false);\n const [proventosLoading, setProventosLoading] = useState(false);\n const [patrimoniosLoading, setPatrimoniosLoading] = useState(false);\n const [totalClients, setTotalClients] = useState(0);\n const [totalPatrimonio, setTotalPatrimonio] = useState(0);\n const [totalPatrimonioReverse, setTotalPatrimonioReverse] = useState(0);\n const [darfs, setDarfs] = useState([]);\n const [totalDarfs, setTotalDarfs] = useState(0);\n const [proventosFileUrl, setProventosFileUrl] = useState(\"\");\n const [patrimoniosFileUrl, setPatrimoniosFileUrl] = useState(\"\");\n const [totalProfessionals, setTotalProfessionals] = useState(0);\n const [professionals, setProfessionals] = useState([]);\n const [selectedClient, setSelectedClient] = useState(null);\n const [professionalId, setProfessionalId] = useState(null);\n const [selectedProfessional, setSelectedProfessional] =\n useState(null);\n const [newClient, setNewClient] = useState(null);\n const [createStep, setCreateStep] = useState(1);\n const [loadingGet, setLoadingGet] = useState(false);\n const [loadingLogin, setLoadingLogin] = useState(false);\n const [professionalGet, setProfessionalGet] = useState(false);\n const [professionalSheetBuffer, setProfessionalSheetBuffer] = useState([]);\n const [buffer, setBuffer] = useState([]);\n const [createClientDeleted, setCreateClientDeleted] = useState<{\n showModal?: boolean;\n name?: string;\n cpf?: string;\n }>({});\n\n const createClient = async (data: any, currentPage?: number) => {\n setLoadingGet(true);\n const professional = !!data.professional;\n\n api\n .post(professional ? \"/assessores/\" : \"/clients/register\", {\n cpf: data.username.replace(/[_.-/-]/g, \"\"),\n name: data.name,\n id: `pro-velotax-${Math.random()}`,\n mail: data.email,\n phone: data.phone ?? \"\",\n acesso: data?.acesso ?? \"\",\n terms: true,\n professional,\n from: \"PRO\",\n plan: data.plan,\n assessores: data?.assessores,\n })\n .then((response) => {\n const person = professional ? \"Profissional\" : \"Cliente\";\n\n if (response?.data?.userDeleted) {\n setLoadingGet(false);\n setCreateClientDeleted({\n showModal: true,\n name: data.name,\n cpf: data.username,\n });\n } else {\n response.data.code === \"emailSended\"\n ? message.success(response.data.message)\n : message.success(`${person} ${data.name} cadastrado com sucesso`);\n\n professional\n ? getProfessionals()\n : getClients({ page: currentPage ?? 1 });\n }\n })\n .catch((err) => {\n if (\n err?.response?.status === 400 ||\n err?.response?.status === 409 ||\n err?.response?.status === 500\n )\n return message.error(\n err.response.data.message ||\n `Erro ao criar ${professional ? \"profissional\" : \"cliente\"}`\n );\n\n return message.error(\n `Erro ao criar ${professional ? \"profissional\" : \"cliente\"}`\n );\n });\n };\n const updateClient = async (data: any, page?: number, filters: any = {}) => {\n const professional = !!data.professional;\n let payload: any = {\n cpf: data.username.replace(/[_.-/-]/g, \"\"),\n name: data.name,\n id: `pro-velotax-${Math.random()}`,\n mail: data.email,\n phone: data.phone,\n terms: true,\n professional,\n from: \"PRO\",\n plan: data.plan,\n assessores: data?.assessores,\n tableEdit: data?.tableEdit,\n userId: data?.userId,\n };\n\n api\n .put(professional ? \"/assessores/\" : \"/clients/update\", {\n ...payload,\n })\n .then((response) => {\n const person = professional ? \"Profissional\" : \"Cliente\";\n\n response.data.code === \"emailSended\"\n ? message.success(response.data.message)\n : message.success(`${person} ${data.name} editado com sucesso`);\n\n setLoadingGet(true);\n\n professional ? getProfessionals() : getClients({ ...filters, page });\n })\n .catch((err) => {\n if (err?.response?.status === 400 || err?.response?.status === 409)\n return message.error(\n err.response.data.message ||\n `Erro ao atualizar ${professional ? \"profissional\" : \"cliente\"}`\n );\n\n return message.error(\n `Erro ao atualizar ${professional ? \"profissional\" : \"cliente\"}`\n );\n });\n };\n const updateProfessional = async (data: any) => {\n api\n .put(\"/assessores/update\", {\n cpf: data.username.replace(/[_.-/-]/g, \"\"),\n name: data.name,\n id: `pro-velotax-${Math.random()}`,\n mail: data.email,\n acesso: data.acesso,\n terms: true,\n from: \"PRO\",\n })\n .then((response) => {\n response.data.code === \"emailSended\"\n ? message.success(response.data.message)\n : message.success(`Assessor atualizado com sucesso`);\n\n setLoadingGet(true);\n\n getProfessionals();\n })\n .catch((err) => {\n if (err?.response?.status === 400 || err?.response?.status === 409)\n return message.error(\n err.response.data.message || \"Erro ao atualizar profissional\"\n );\n\n return message.error(`Erro ao criar profissional`);\n });\n };\n\n const getProventos = async (\n cpf: string,\n year?: number,\n type?: string,\n onFinish?: (data: any) => void\n ) => {\n if (cpf) {\n setProventosLoading(true);\n const { data } = await api.get(`/clients/get-proventos/${cpf}`, {\n params: {\n year,\n type,\n },\n });\n\n setProventosFileUrl(data.fileUrl);\n setTypeProventos(\"provento\");\n setProventos(data?.proventos || []);\n if (data?.updated) {\n getNotifications(cpf);\n }\n // setNotificacoes(data.notificacoes);\n setProventosLoading(false);\n if (onFinish) onFinish(data);\n }\n };\n\n const getPatrimonios = async (\n cpf: string,\n type?: string,\n onFinish?: (data: any) => void\n ) => {\n if (cpf) {\n setPatrimoniosLoading(true);\n const { data } = await api.get(`/clients/get-patrimonios/${cpf}`, {\n params: {\n type,\n },\n });\n\n setPatrimoniosFileUrl(data.fileUrl);\n setPatrimonios(data?.patrimonios || []);\n setPatrimoniosLoading(false);\n setSelectedClient((client) => ({\n ...client!,\n wallet: {\n ...client?.wallet,\n posicoes: data?.patrimonios || [],\n },\n }));\n if (onFinish) onFinish(data);\n }\n };\n\n const getNotifications = async (cpf: string) => {\n setLoadingNotificacoes(true);\n const { data } = await api.get(`/clients/notification/${cpf}`);\n setNotificacoes(data);\n setLoadingNotificacoes(false);\n };\n\n const verifyClientVelotax = async (client: IClient) => {\n const { data } = await api.get(\n `/clients/clientInfo/${client.username.replace(/[_.-/-]/g, \"\")}`\n );\n setCreateStep(3);\n if (data) {\n setNewClient({ ...data, name: data?.fullname || \"\" });\n }\n };\n\n const getClientsUpdating = useCallback(async () => {\n const cpfs: string[] = []\n clients.forEach(c => {\n if(c.updatingB3Integration) cpfs.push(c.username)\n })\n const { data } = await api.post('/clients/integration-updating', {\n clients: cpfs\n })\n \n const newClients = clients.map(c => {\n const stillUpdating = data.find((cpf: string) => cpf === c.username)\n if(c.updatingB3Integration && !stillUpdating) {\n if(c.username === selectedClient?.username) {\n setSelectedClient({...selectedClient, b3IntegrationUpdated: true, updatingB3Integration: false})\n }\n return {...c, b3IntegrationUpdated: true, updatingB3Integration: false}\n } else return c\n })\n \n setClients(newClients)\n }, [clients, selectedClient])\n\n const removeCurrent = useCallback((data: any)=> {\n const currentMonth = new Date().getMonth();\n const newData = data.filter((darf: any)=> {\n if (darf?.year == yearConfigPL4173 && darf?.month == currentMonth && isAntesTerceiroDiaUtil()) return;\n else return darf;\n })\n return newData;\n }, [])\n\n const downloadSheetClientsFromPulling = async (params: any) => {\n const delayPulling = 10000;\n let buffer: any;\n for(let i = 0 ; i < 200 ; i++) {\n const response = await api.get(\n `/clients/sheet`,\n { params }\n );\n await new Promise((res, rej) => {\n setTimeout(() => {\n res(true)\n }, delayPulling)\n })\n if (response?.data?.status === \"DONE\") {\n buffer = response?.data?.buffer?.data;\n i = 200;\n }\n }\n setLoadingGet(false);\n if (!buffer) {\n message.error(\"Algo deu errado ao gerar a planilha\")\n return\n }\n const data = Uint8Array.from(buffer);\n const blob = new Blob([data], { type: \"attach.contentType\" });\n FileSaver.saveAs(blob, `clientes.xlsx`);\n }\n\n const getClients = useCallback(async (params?: GetClientsParams) => {\n const {\n page,\n pageSize,\n searchText,\n planActive,\n resp,\n type,\n darfEnviado,\n darfPago,\n getAllDarfStatus,\n orderBy,\n orderDirection,\n month,\n year,\n statusBolsa,\n statusExterior,\n updateAllClients,\n processAllClients,\n fromClients,\n selectClient,\n justDownload\n } = params ?? {};\n setLoadingGet(true);\n try {\n const params = {\n page: page ?? 1,\n pageSize: pageSize ?? 10,\n planActive,\n resp,\n statusBolsa,\n statusExterior,\n searchText,\n impostoDevido: \"Impostos devidos\",\n darfEnviado,\n darfPago,\n orderBy,\n orderDirection,\n month,\n year,\n type,\n updateAllClients,\n processAllClients,\n fromClients,\n justDownload\n };\n if (justDownload) {\n downloadSheetClientsFromPulling(params)\n return\n }\n const response = await api.get(\n `/clients${getAllDarfStatus ? \"/allDarf\" : \"\"}`,\n { params }\n );\n if (updateAllClients) {\n message.info(`Atualizando os patrimônios de todos os seus clientes`, 5);\n } else {\n if (getAllDarfStatus) {\n const data = removeCurrent(response?.data?.data);\n setDarfs(data);\n setTotalDarfs(response?.data?.total);\n } else {\n setClients(response?.data?.data);\n setTotalClients(response?.data?.total);\n setTotalPatrimonio(response?.data?.sumPatrimonio);\n setTotalPatrimonioReverse(response?.data?.sumPatrimonioReverse);\n if(selectClient) {\n const cliente = (response?.data?.data as IClient[] || []).find((c: IClient) => c.username === selectClient)\n if(cliente) setSelectedClient(cliente)\n }\n }\n setBuffer(response?.data?.buffer?.data);\n }\n setLoadingGet(false);\n return {\n clients: response?.data?.data,\n buffer: response?.data?.buffer?.data,\n };\n } catch (err: any) {\n setLoadingGet(false);\n message.error(err?.response?.data?.message || \"Algo deu errado\");\n }\n }, []);\n\n const handleDownloadSheet = async (from: string, filters?: any) => {\n try {\n let localBuffer: any;\n if (from === \"Clientes\") {\n await getClients({ processAllClients: true, justDownload: true });\n return;\n }\n if (from === \"DARFs\") {\n const resp = await getClients({\n processAllClients: true,\n getAllDarfStatus: true,\n month: filters?.month,\n year: filters?.year,\n });\n localBuffer = resp?.buffer || undefined;\n }\n const data = Uint8Array.from(\n from === \"Assessores\" ? professionalSheetBuffer : localBuffer ?? buffer\n );\n const blob = new Blob([data], { type: \"attach.contentType\" });\n FileSaver.saveAs(blob, `${from}.xlsx`);\n } catch (error: any) {\n message.error(error);\n }\n };\n\n const getProfessionals = useCallback(\n async (page?: number, value?: string, all?: boolean) => {\n setProfessionalGet(true);\n const response = await api.get(\"/assessores\", {\n params: {\n page,\n value,\n all,\n },\n });\n setProfessionalSheetBuffer(response.data?.buffer?.data);\n setProfessionals(response.data.assessores);\n setTotalProfessionals(response.data.count);\n setProfessionalGet(false);\n },\n []\n );\n\n const searchClients = (search: string) => {\n const searchText = search.toLocaleLowerCase();\n return clients.filter(\n (client) =>\n client.email?.toLocaleLowerCase()?.includes(searchText) ||\n client.name?.toLocaleLowerCase()?.includes(searchText) ||\n client.username?.replace(/[.-]/g, \"\")?.includes(searchText)\n );\n };\n\n const searchProfessionals = (search: string) => {\n const searchText = search.toLocaleLowerCase();\n return professionals.filter(\n (client) =>\n client.email?.toLocaleLowerCase()?.includes(searchText) ||\n client.name?.toLocaleLowerCase()?.includes(searchText) ||\n client.username?.replace(/[.-]/g, \"\")?.includes(searchText)\n );\n };\n\n const getClientToken = async (client: IClient) => {\n const { data } = await api.post(`/clients/login/${client.username}`);\n return data.token;\n };\n\n const loginInClient = async (client: IClient) => {\n try {\n setLoadingLogin(true);\n const token = await getClientToken(client);\n setLoadingLogin(false);\n window.open(\n `${process.env.REACT_APP_VELOTAX_URL}/p/sso/${token}`,\n isMobile() ? \"_self\" : \"_blank\"\n );\n } catch (err) {\n setLoadingLogin(false);\n }\n };\n\n const removeClient = async (page: number) => {\n await api.delete(`/clients/${selectedClient?._id}`, {\n data: { professionalId },\n });\n getClients({ page });\n };\n\n const removeProfessional = async (data: any) => {\n await api.delete(`/assessores/delete`, { data: { cpf: data.username } });\n getProfessionals();\n };\n\n const restoreClient = async (username: string) => {\n try {\n setLoadingGet(true);\n const { data } = await api.post(`/clients/restore`, { username });\n if (data?.code === 403) message.error(data?.message);\n else {\n message.success(data.message);\n getClients();\n }\n } catch (error: any) {\n message.error(\n \"Não foi possível recuperar informações do cliente. Tente novamente mais tarde\"\n );\n }\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useClients = (): IClientsContext => useContext(ClientsContext);\n","import { useEffect, useState } from \"react\";\nimport { BsCalendar3 } from \"react-icons/bs\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Col, Row, Tooltip, Typography, message } from \"antd\";\nimport api from \"../../services/api\";\nimport Button from \"../../components/Button\";\nimport { DrawerModal } from \"../DrawerModal\";\nimport { DownloadIcon } from \"../../pages/Darfs/styles\";\nimport { TabelasBolsa, TabelasExterior } from \"./table\";\nimport { useClients } from \"../../contexts/ClientsContext\";\nimport { formatCurrency, monthsExtended, thirdBusinessDayAndMonth } from \"../../utils\";\nimport { LoadingContainer, StyledTable, TitleContainer } from \"./styles\";\nimport { yearConfigPL4173 } from \"../../constants/others/exterior\";\n\ninterface IProps {\n modalOperationsOpen: boolean;\n setModalOperationsOpen: React.Dispatch>;\n clientsSelected: Array;\n handleDarfSend: (\n sendToWhatsapp?: boolean,\n directDownload?: boolean,\n inputClients?: Array\n ) => Promise;\n handleDarfDownload: (url?: string, idDarf?: string) => Promise;\n}\n\nconst minDarfPrice = 10;\n\nexport const OperationModal = ({\n modalOperationsOpen,\n setModalOperationsOpen,\n clientsSelected,\n handleDarfDownload,\n handleDarfSend,\n}: IProps) => {\n const item = clientsSelected[0];\n const [transaction, setTransaction] = useState();\n const [index, setIndex] = useState(0);\n const { loadingGet, setLoadingGet } = useClients();\n const [showDarfTooltip, setShowDarfToolTip] = useState(false);\n const isExterior = item?.type === 'Exterior'\n const oldModel = (item?.year ?? 2023) < yearConfigPL4173\n\n function obterNomeMesPassado() {\n const hoje = new Date();\n let mesAnterior = hoje.getMonth() - 1;\n\n // Tratamento especial para janeiro (mês 0)\n if (mesAnterior < 0) {\n mesAnterior = 11; // Dezembro (mês 11)\n }\n\n const nomeMesAnterior = new Date(hoje.getFullYear(), mesAnterior, 1)\n .toLocaleString('default', { month: 'long' });\n\n // Transforma a primeira letra em maiúscula\n const nomeMesAnteriorComMaiuscula = nomeMesAnterior.charAt(0).toUpperCase() + nomeMesAnterior.slice(1);\n\n return nomeMesAnteriorComMaiuscula;\n }\n\n useEffect(() => {\n if (item?.username && modalOperationsOpen) {\n setLoadingGet(true);\n api\n .get(`/darf/transaction/${item.username}`, {\n params: {\n month: item?.month,\n year: item?.year,\n type: item?.type,\n payed: item?.darfPago,\n idDarf:\n item?.type?.toLowerCase() === \"bolsa\"\n ? item?.idDarfBolsa\n : item?.idDarfExterior,\n nAtualizarDarfsPassadas: false,\n nAtualizarIrrf: true,\n atualizouImpostoAcumulado: false,\n nAtualizarPrejuizosAcumulados: true,\n atualizarTotalmente: false,\n atualizouCorretagem: false,\n },\n })\n .then((res) => {\n setTransaction(res.data);\n })\n .catch((err) => {\n message.error(\n \"Não foi possível buscar operações. Tente novamente mais tarde\"\n );\n setModalOperationsOpen(false);\n })\n .finally(() => {\n setLoadingGet(false);\n });\n } else if (!modalOperationsOpen) {\n setTransaction(undefined);\n }\n }, [setModalOperationsOpen, modalOperationsOpen, item, setLoadingGet]);\n\n const valorPrincipal =\n item?.type === \"Exterior\"\n ? Math.max((transaction?.impostoDevido || 0) - (transaction?.irrfExterior ?? 0), 0)\n : Math.max(\n 0,\n Number(\n (transaction?.impostoComumFinal || 0) +\n (transaction?.impostoDTFinal || 0) +\n (transaction?.impostoFIIFinal || 0)\n ) +\n (Number(transaction?.[\"impostoAcumulado\"] || 0) -\n Number(transaction?.[\"irrfTotal\"] || 0))\n );\n\n const impostoTotal =\n item?.type === \"Exterior\"\n ? ((valorPrincipal - transaction?.irrfExterior) > 0 ?\n valorPrincipal - (transaction?.irrfExterior || 0) : 0) +\n (transaction?.impostoDevido + transaction?.impostoAcumulado < minDarfPrice\n ? 0\n : transaction?.multa + transaction?.juros)\n : transaction?.impostoTotalFinal;\n\n const impostoDevido =\n item?.type === \"Exterior\"\n ? transaction?.impostoDevido || 0\n : Number(\n (transaction?.impostoComumFinal || 0) +\n (transaction?.impostoDTFinal || 0) +\n (transaction?.impostoFIIFinal || 0)\n );\n\n return (\n setModalOperationsOpen(false)}\n title={\n \n \n {`${monthsExtended[(clientsSelected[0]?.month || 1) - 1]} de ${clientsSelected[0]?.year\n }`}\n \n }\n footer={\n impostoTotal > 0 ? (\n \n \n {\n item?.type === \"Bolsa\" && thirdBusinessDayAndMonth(clientsSelected[0]).disabled\n ?\n \n {((clientsSelected[0]?.year <= 2023 && isExterior) || !isExterior) && <>\n }\n onClick={() => {\n setShowDarfToolTip(!showDarfTooltip)\n\n setTimeout(() => {\n setShowDarfToolTip(false)\n }, 1500);\n }}\n >\n {isExterior && !oldModel ? 'Enviar relatório' : 'Baixar DARF'}\n \n }\n \n :\n <>{((clientsSelected[0]?.year <= 2023 && isExterior) || !isExterior) && }\n onClick={() => {\n if (\n (item.urlDarfExterior ||\n item.urlDarfBolsa ||\n item.idDarfBolsa ||\n item.idDarfExterior) &&\n item?.darfEnviado\n ) {\n handleDarfDownload(\n item.type === \"Bolsa\"\n ? item.urlDarfBolsa\n : item.urlDarfExterior,\n item.type === \"Bolsa\"\n ? item.idDarfBolsa\n : item.idDarfExterior\n );\n message.success(\"Transferência do DARF realizada\");\n } else {\n handleDarfSend(false, true, [item]);\n }\n }}\n disabled={\n !clientsSelected || clientsSelected.length === 0 || loadingGet || thirdBusinessDayAndMonth(clientsSelected[0]).disabled\n }\n >\n {isExterior && !oldModel ? 'Enviar relatório' : 'Baixar DARF'}\n }\n }\n \n \n ) : null\n }\n bodyStyle={{ position: \"relative\" }}\n >\n {item?.type === \"Bolsa\" ? (\n \n ) : (\n \n )}\n\n {((clientsSelected[0]?.year <= 2023 && isExterior) || !isExterior) && \n \n \n Imposto Total\n \n \n \n \n {formatCurrency(Math.max(impostoTotal, 0))}\n \n \n }\n\n {((clientsSelected[0]?.year <= 2023 && isExterior) || !isExterior) && \n \n (+) Valor do principal\n {(transaction?.impostoDevido + transaction?.impostoAcumulado - transaction?.irrfExterior) > 0\n ? formatCurrency(valorPrincipal - (transaction?.irrfExterior || 0))\n : formatCurrency(0)}\n \n \n (+) Imposto devido\n {formatCurrency(impostoDevido)}\n \n {(!isExterior || oldModel) && \n \n (+) DARFs passados abaixo de R$ 10\n \n {formatCurrency(transaction?.impostoAcumulado)}\n }\n {(!isExterior || !oldModel) && (\n \n \n (-) Imposto de Renda Retido na Fonte\n \n {formatCurrency(transaction?.irrfTotal || transaction?.irrfExterior)}\n \n )}\n {(!isExterior || oldModel) &&\n <>\n \n (+) Multa de atraso\n \n {formatCurrency(valorPrincipal < minDarfPrice ? 0 : transaction?.multaAux || transaction?.multa)}\n \n \n \n (+) Juros e/ou encargos de atraso\n \n {formatCurrency(valorPrincipal < minDarfPrice ? 0 : transaction?.jurosAux || transaction?.juros)}\n \n \n \n }\n }\n\n {loadingGet && (\n \n \n \n )}\n \n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 10C2 5.58172 5.58172 2 10 2C14.4183 2 18 5.58172 18 10C18 14.4183 14.4183 18 10 18M2.88889 17.1111L5.55556 14.4444M6.44444 18L7.33333 17.1111M2 13.5556L2.88889 12.6667M6.54185 10.1665L8.5234 10.9995C8.7376 11.0896 8.90799 11.26 8.99807 11.4742L9.83274 13.4588C9.97866 13.8053 10.3268 14.0226 10.7022 14.0014C11.0776 13.9802 11.3991 13.7252 11.5052 13.3645L13.0761 8.02688C13.168 7.71481 13.0821 7.37745 12.8521 7.14741C12.622 6.91737 12.2847 6.83142 11.9726 6.92334L6.63603 8.49401C6.27526 8.60005 6.02021 8.92159 5.99907 9.29703C5.97793 9.67247 6.19527 10.0206 6.54185 10.1665Z\",\n stroke: \"black\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgSend(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSend);\nexport default __webpack_public_path__ + \"static/media/send.14705f0a.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 18,\n rx: 9,\n fill: \"#DD2244\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.5 6.5L11.5 11.5M11.5 6.5L6.5 11.5\",\n stroke: \"white\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgXRed(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgXRed);\nexport default __webpack_public_path__ + \"static/media/XRed.aaf12e95.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 3.33333H14M2 3.33333H9.33333M6.66667 8H14M2 8H4M12 12.6667H14M2 12.6667H9.33333M11.6095 2.39052C12.1302 2.91122 12.1302 3.75544 11.6095 4.27614C11.0888 4.79684 10.2445 4.79684 9.72385 4.27614C9.20315 3.75545 9.20315 2.91122 9.72385 2.39052C10.2445 1.86983 11.0888 1.86983 11.6095 2.39052ZM6.27614 7.0572C6.79684 7.5779 6.79684 8.42212 6.27614 8.94282C5.75544 9.46352 4.91122 9.46352 4.39052 8.94282C3.86982 8.42212 3.86982 7.5779 4.39052 7.0572C4.91122 6.5365 5.75544 6.5365 6.27614 7.0572ZM11.6095 11.7239C12.1302 12.2446 12.1302 13.0888 11.6095 13.6095C11.0888 14.1302 10.2445 14.1302 9.72385 13.6095C9.20315 13.0888 9.20315 12.2446 9.72385 11.7239C10.2445 11.2032 11.0888 11.2032 11.6095 11.7239Z\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgFiltro(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFiltro);\nexport default __webpack_public_path__ + \"static/media/filtro.d769fa77.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 18,\n rx: 9,\n fill: \"#0A9E5A\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.4375 6.8125L7.92578 11.1875L5.875 9.19886\",\n stroke: \"white\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgCheckGreen(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckGreen);\nexport default __webpack_public_path__ + \"static/media/CheckGreen.ba9b6e14.svg\";\nexport { ForwardRef as ReactComponent };","import { HiOutlineDownload } from \"react-icons/hi\";\nimport React, { useEffect, useState } from \"react\";\nimport { BsEye, BsListUl, BsWhatsapp } from \"react-icons/bs\";\nimport {\n AiOutlineSearch,\n AiOutlineDownload,\n AiOutlineArrowLeft,\n} from \"react-icons/ai\";\nimport {\n LoadingOutlined,\n MailOutlined,\n InfoCircleOutlined,\n} from \"@ant-design/icons\";\nimport {\n Typography,\n Input,\n Row,\n Col,\n Table,\n Modal,\n message,\n TablePaginationConfig,\n Tooltip,\n Checkbox,\n Switch,\n Select,\n Dropdown,\n MenuProps,\n} from \"antd\";\nimport api from \"../../services/api\";\nimport Button from \"../../components/Button\";\nimport { getTooltipMessage } from \"./tooltip\";\nimport apiBolsa from \"../../services/bolsa-api\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { OperationModal } from \"../../components/OperationModal\";\nimport { IClient, useClients } from \"../../contexts/ClientsContext\";\nimport { ReactComponent as SendIcon } from \"../../assets/icons/send.svg\";\nimport { ReactComponent as DenyIcon } from \"../../assets/icons/XRed.svg\";\nimport { ReactComponent as FilterIcon } from \"../../assets/icons/filtro.svg\";\nimport { ReactComponent as CheckIcon } from \"../../assets/icons/CheckGreen.svg\";\nimport {\n Container,\n Content,\n DarfAutomaticoContainer,\n DropdownButton,\n} from \"./styles\";\nimport {\n formatCurrency,\n getBrowser,\n isMobile,\n maskCpf,\n monthsExtended,\n} from \"../../utils\";\nimport { SendDarfModal } from \"../../components/Darf/SendDarfModal\";\nimport { yearConfigPL4173 } from \"../../constants/others/exterior\";\n\ninterface IFilters {\n text: string;\n value: number;\n}\n\nexport const dayFilters: Array = [];\nfor (let d = 1; d <= 31; d++) {\n dayFilters.push({\n text: d.toString(),\n value: d,\n });\n}\n\nexport const monthFilters: Array = monthsExtended.map((m, i) => ({\n text: m,\n value: i + 1,\n}));\nexport const yearFilters: Array = [];\nfor (let y = 2020; y <= 2025; y++) {\n yearFilters.push({\n text: y.toString(),\n value: y,\n });\n}\n\nconst monthsOrder = [\n \"Janeiro\",\n \"Fevereiro\",\n \"Março\",\n \"Abril\",\n \"Maio\",\n \"Junho\",\n \"Julho\",\n \"Agosto\",\n \"Setembro\",\n \"Outubro\",\n \"Novembro\",\n \"Dezembro\",\n];\n\nvar debounce: NodeJS.Timeout;\n\nconst tooltip: any = () => (\n \n O usuário já possui uma conta cadastrada na plataforma. Enviamos um e-mail\n solicitando a sua permissão de acesso à conta e estamos aguardando a\n confirmação do usuário.\n

\n);\n\nconst initialData = {\n year: 2024\n}\n\nexport const Darfs: React.FC = () => {\n const { user, getUserInfo } = useAuth();\n const {\n loadingGet,\n setLoadingGet,\n darfs,\n getClients,\n totalDarfs,\n handleDownloadSheet,\n } = useClients();\n\n const [loading, setLoading] = useState(false);\n const [keys, setKeys] = useState([]);\n const [filters, setFilters] = useState({ year: [initialData.year] });\n const [searchText, setSearchText] = useState(\"\");\n const [emailFlow, setEmailFlow] = useState(false);\n const [sendToResp, setSendToResp] = useState(false);\n const [whatsappFlow, setWhatsappFlow] = useState(false);\n const [currentPage, setCurrentPage] = useState(1);\n const [appliedFilters, setAppliedFilters] = useState({ year: [initialData.year] });\n const [showFilterModal, setShowFilterModal] = useState(false);\n const [showSendDarfModal, setShowSendDarfModal] = useState(false);\n const [clientsSelected, setClientsSelected] = useState([]);\n const [allDarfsSelected, setAllDarfsSelected] = useState(false);\n const [modalOperationsOpen, setModalOperationsOpen] =\n useState(false);\n const [whatsappRedirectURL, setWhatsappRedirectURL] = useState<\n string | undefined\n >(undefined);\n const [pagination] = useState({\n current: currentPage,\n pageSize: 10,\n defaultPageSize: 10,\n showSizeChanger: false, // mudar para true quando o back estiver aceitando\n pageSizeOptions: [\"5\", \"10\", \"20\", \"50\", \"100\"],\n });\n\n const handleDisabled = (item: any) => {\n const codes = (item.code || []).filter(\n (el: any) =>\n el?.escritorioId?.toString() === user?.user?.officeId?.toString() ||\n el?.assessorId?.toString() === user?.user?.assessorId?.toString()\n );\n return !codes.some((el: any) => !!el?.isAuthorized) ?? false;\n };\n\n const handleSearch = (value: string) => {\n setSearchText(value);\n if (debounce) clearTimeout(debounce);\n debounce = setTimeout(() => {\n getClients({\n ...filters,\n searchText: value,\n page: pagination.current,\n pageSize: pagination.pageSize,\n getAllDarfStatus: true,\n planActive: true,\n });\n }, 1000);\n };\n\n const handleDarfSend = async (\n sendToWhatsapp?: boolean,\n directDownload?: boolean,\n inputClients?: Array\n ) => {\n try {\n const clients = (allDarfsSelected && clientsSelected.length == 10)\n ? (\n await getClients({\n getAllDarfStatus: true,\n planActive: true,\n year: filters.year,\n processAllClients: true,\n })\n ).clients\n : clientsSelected.length > 0\n ? clientsSelected\n : inputClients || [];\n\n if (whatsappRedirectURL) {\n window.open(whatsappRedirectURL, \"_blank\");\n setWhatsappRedirectURL(undefined);\n } else {\n setLoadingGet(true);\n if (sendToWhatsapp) {\n setWhatsappRedirectURL(\"loading\");\n }\n const { data } = await api.post(\"/darf/send\", {\n clients: clients,\n sendToResp,\n sendToWhatsapp,\n });\n const phone = clients[0].phone;\n const singleClient = data[0] || {};\n const shortPath = singleClient?.shortPath;\n\n const isExterior = singleClient?.type === 'Exterior'\n const oldModel = (singleClient?.year ?? 2023) < yearConfigPL4173\n const darfLabel = isExterior && !oldModel ? 'relatório' : 'DARF' \n\n if (shortPath && sendToWhatsapp) {\n const text = `Olá, ${\n singleClient?.name || \"Cliente\"\n }. Segue seu ${darfLabel} do mês ${singleClient?.month}/${\n singleClient?.year\n }: ${shortPath}`;\n const url = `https://wa.me${\n phone ? `/55${phone}` : \"\"\n }?text=${text.replaceAll(\" \", \"%20\")}`;\n setWhatsappRedirectURL(undefined);\n window.open(url, \"_blank\");\n }\n if (!sendToWhatsapp) {\n if (directDownload) {\n handleDarfDownload(shortPath);\n } else {\n message.success(`Envio de ${darfLabel}s realizado`);\n setWhatsappRedirectURL(undefined);\n }\n }\n getClients({ ...filters, getAllDarfStatus: true, planActive: true });\n }\n setShowSendDarfModal(false);\n setWhatsappFlow(false);\n setEmailFlow(false);\n setSendToResp(false);\n } catch (error: any) {\n setWhatsappRedirectURL(undefined);\n if (error.message.includes(\"400\")) {\n message.error(\n \"É necessário contratar o plano para prosseguir\"\n );\n } else {\n message.error(\"Algo errado aconteceu, tente novamente mais tarde.\");\n }\n }\n setLoadingGet(false);\n };\n\n const handleDarfDownload = async (url?: string, idDarf?: string) => {\n if (url) {\n window.open(url);\n } else if (idDarf) {\n const token = localStorage.getItem(\"@VeloTax:token\");\n const { data } = await apiBolsa.get(`/darf/download/${idDarf}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n window.open(data?.url || \"\");\n }\n };\n\n useEffect(() => {\n getClients({ getAllDarfStatus: true, planActive: true, year: filters?.year });\n }, [getClients]);\n\n useEffect(() => {\n if (allDarfsSelected) {\n setKeys((darfs ?? []).map((el) => el.id || \"\"));\n }\n }, [darfs, allDarfsSelected]);\n\n const handleSwitchDarfAutomatico = async () => {\n try {\n setLoading(true);\n const { enviarDarfAutomaticamente } = user?.user;\n await api.post(`/darf/enviarDarfAutomaticamente`, {\n enviarDarfAutomaticamente: !enviarDarfAutomaticamente,\n });\n await getUserInfo();\n setLoading(false);\n if (!enviarDarfAutomaticamente) {\n message.success(\n \"Os DARFs serão enviados para seus clientes automaticamente\"\n );\n } else {\n message.info(\n \"Os DARFs não serão mais enviados para seus clientes automaticamente\"\n );\n }\n } catch (error) {\n setLoading(false);\n message.error(\n \"Não foi possível registrar informação. Tente novamente mais tarde.\"\n );\n }\n };\n\n const Drop = (item: any, index: any, isDisabled: boolean) => {\n const handleClick = () => {\n setShowSendDarfModal(true);\n setClientsSelected([item]);\n setKeys([item.id]);\n };\n\n const items: MenuProps[\"items\"] = [\n {\n key: 1,\n label: (\n {\n setClientsSelected([item]);\n setModalOperationsOpen(true);\n }}\n >\n \n Ver operações\n \n ),\n },\n {\n key: 2,\n label: (\n {\n if (\n (item.urlDarfExterior ||\n item.urlDarfBolsa ||\n item.idDarfBolsa ||\n item.idDarfExterior) &&\n //@ts-ignore\n item?.darfEnviado\n ) {\n handleDarfDownload(\n item.type === \"Bolsa\"\n ? item.urlDarfBolsa\n : item.urlDarfExterior,\n item.type === \"Bolsa\" ? item.idDarfBolsa : item.idDarfExterior\n );\n message.success(\"Transferência do DARF realizada\");\n } else {\n handleDarfSend(false, true, [item]);\n }\n }}\n >\n \n Baixar DARF\n \n ),\n },\n ];\n\n return (\n
\n \n \n Enviar DARF\n \n \n \n \n
\n );\n };\n\n return (\n \n \n \n \n \n Impostos devidos\n \n \n \n \n \n \n \n \n }\n onClick={() => setShowSendDarfModal(true)}\n disabled={\n !clientsSelected || clientsSelected.length === 0\n }\n >\n Enviar DARFs\n \n \n \n \n }\n disabled={darfs.length === 0}\n onClick={() => handleDownloadSheet(\"DARFs\", filters)}\n >\n Baixar planilha\n \n \n \n \n \n \n \n }\n onClick={() => setShowFilterModal(true)}\n className={\n Object.keys(appliedFilters).filter(\n (key) => (appliedFilters[key]?.length || 0) > 0\n ).length > 1\n ? \"btn-filter filtro-aplicado\"\n : \"btn-filter\"\n }\n >\n Filtrar clientes\n \n \n \n }\n onChange={(e) => handleSearch(e.target.value)}\n />\n \n \n \n \n \n \n {\n if (info?.type === \"all\" && selectedRows?.length) {\n setAllDarfsSelected(true);\n } else setAllDarfsSelected(false);\n setClientsSelected(selectedRows);\n setKeys((selectedRows ?? []).map((el) => el.id || \"\"));\n },\n getCheckboxProps: (record: any) => ({\n disabled: handleDisabled(record),\n }),\n }}\n onChange={(pagination, body, sorter) => {\n const order: any = sorter;\n setCurrentPage(pagination.current ?? 1);\n setFilters(filters);\n setAppliedFilters(filters);\n getClients({\n searchText,\n page: pagination.current,\n pageSize: pagination.pageSize,\n month: filters.month || [],\n year: filters.year || [2023],\n type: filters.type || [],\n planActive: true,\n impostoDevido: (filters.impostoDevido || [])[0],\n darfEnviado: (filters.darfEnviado || [])[0],\n darfPago: (filters.darfPago || [])[0],\n orderBy: order?.field || undefined,\n orderDirection: order?.order || undefined,\n getAllDarfStatus: true,\n });\n }}\n locale={{\n filterReset: \"Limpar\",\n }}\n columns={[\n {\n title: \"Dados do cliente\",\n sorter: (a, b) => a.name.localeCompare(b.name),\n render: (_, item) => (\n <>\n \n \n {item.name}\n \n \n \n \n {maskCpf(item.username)}\n \n {handleDisabled(item) && (\n \n \n \n \n \n )}\n \n {/* \n {item.email}\n \n \n {numberToPhone(item.phone || \"\")}\n */}\n \n ),\n },\n {\n align: \"center\",\n title: \"Mês\",\n dataIndex: \"month\",\n sorter: (a: any, b: any) =>\n monthsOrder.indexOf(a.month) - monthsOrder.indexOf(b.month),\n render: (_, data) => {\n return (\n \n \n {monthsExtended[Number(data.month) - 1]}\n \n \n );\n },\n },\n {\n align: \"center\",\n title: \"Ano\",\n dataIndex: \"year\",\n sorter: (a: any, b: any) => a.year - b.year,\n render: (_, data) => {\n return (\n \n {data.year}\n \n );\n },\n },\n {\n align: \"center\",\n title: \"Mercado\",\n dataIndex: \"type\",\n sorter: (a: any, b: any) => a.type.localeCompare(b.type),\n render: (type, record) =>
{type}
,\n },\n {\n align: \"center\",\n title: \"Valor principal\",\n dataIndex: \"impostoDevido\",\n sorter: (a: any, b: any) => a.impostoDevido - b.impostoDevido,\n render: (impostoDevido, record) => (\n
\n {impostoDevido < 10\n ? \"Não há impostos\"\n : formatCurrency(Number(impostoDevido))}\n
\n ),\n },\n {\n align: \"center\",\n title: \"Enviado?\",\n dataIndex: \"darfEnviado\",\n sorter: (a: any, b: any) =>\n a.darfEnviado === b.darfEnviado\n ? 0\n : a.darfEnviado\n ? -1\n : 1,\n render: (darfEnviado, record) => {\n return (\n
\n {(record?.impostoDevido || 0) < 10 ? (\n \"N/A\"\n ) : (\n <>\n {darfEnviado ? : }\n {darfEnviado ? \"Sim\" : \"Não\"}\n \n )}\n
\n );\n },\n },\n {\n align: \"center\",\n title: \"Pago?\",\n dataIndex: \"darfPago\",\n sorter: (a: any, b: any) =>\n a.darfPago === b.darfPago ? 0 : a.darfPago ? -1 : 1,\n render: (darfPago, record) => {\n return (\n
\n {(record?.impostoDevido || 0) < 10 ? (\n \"N/A\"\n ) : (\n <>\n {darfPago ? : }\n {darfPago ? \"Sim\" : \"Não\"}\n \n )}\n
\n );\n },\n },\n {\n title: \"\",\n dataIndex: \"orderBy\",\n render: (_, item, index) =>\n Drop(\n item,\n index,\n Number(item.impostoDevido || 0) < 10 ||\n handleDisabled(item)\n ),\n },\n ]}\n />\n \n \n \n \n {\n setFilters(appliedFilters);\n setShowFilterModal(false);\n }}\n >\n \n \n \n \n Mês\n \n \n trigger.parentNode}\n options={monthsExtended.map((m, i) => ({\n label: m,\n value: i + 1,\n }))}\n onChange={(month) => {\n setFilters((filters: any) => ({ ...filters, month }));\n }}\n />\n \n \n \n \n \n \n Ano\n \n \n trigger.parentNode}\n onChange={(year) => {\n setFilters((filters: any) => ({ ...filters, year }));\n }}\n />\n \n \n \n \n \n \n Mercado\n \n \n {\n setFilters((filters: any) => ({\n ...filters,\n type,\n }));\n }}\n >\n \n \n Bolsa\n \n \n Exterior\n \n \n \n \n \n \n {/* \n \n \n Imposto devido\n \n \n {\n console.log('Teste', event.target.value)\n setFilters((filters: any) => ({\n ...filters,\n impostoDevido: event.target.value,\n }));\n }}\n >\n \n \n Impostos devidos\n \n \n Não há impostos\n \n \n \n \n \n */}\n \n \n \n DARF Enviado?\n \n \n {\n setFilters((filters: any) => ({\n ...filters,\n darfEnviado: event[0],\n }));\n }}\n >\n \n \n Sim\n \n \n Não\n \n \n \n \n \n \n \n \n \n DARF Pago?\n \n \n {\n setFilters((filters: any) => ({\n ...filters,\n darfPago: event[0],\n }));\n }}\n >\n \n \n Sim\n \n \n Não\n \n \n \n \n \n \n \n {\n setAppliedFilters(filters);\n setCurrentPage(1);\n getClients({\n searchText,\n page: 1,\n pageSize: pagination.pageSize,\n month: filters.month || [],\n year: filters.year || [],\n type: filters.type || [],\n impostoDevido: \"Impostos devidos\",\n planActive: true,\n darfEnviado: filters.darfEnviado,\n darfPago: filters.darfPago,\n orderBy: (filters.orderBy || [])[0],\n getAllDarfStatus: true,\n });\n setTimeout(() => {\n setShowFilterModal(false);\n }, 500);\n }}\n >\n Aplicar\n \n {!!filters.darfEnviado ||\n !!filters.darfPago ||\n !!filters.year ||\n !!filters.type ||\n !!filters.month ? (\n \n {\n setFilters({});\n }}\n >\n Limpar\n \n \n ) : null}\n \n \n \n
\n {(user?.user?.office || user?.user?.admin) && (\n \n : \"on\"}\n unCheckedChildren={loading ? : \"off\"}\n />\n Envio automático do DARF\n \n \n \n \n )}\n
\n );\n};\n","import { message } from \"antd\";\nimport { IClient } from \"../../contexts/ClientsContext\";\nimport api from \"../../services/api\";\nimport apiBolsa from \"../../services/bolsa-api\";\nimport { yearConfigPL4173 } from \"../../constants/others/exterior\";\n\ninterface IHandleDarfSend {\n clientsSelected: IClient[];\n sendToWhatsapp?: boolean;\n directDownload?: boolean;\n inputClients?: Array;\n whatsappRedirectURL?: string;\n setWhatsappRedirectURL: any;\n setLoadingGet: any;\n sendToResp: any;\n setSendToResp: any;\n setShowSendDarfModal: any;\n filters: any;\n getClients: any;\n setEmailFlow: any;\n setWhatsappFlow: any;\n}\nexport const handleDarfSend = async ({\n sendToWhatsapp,\n directDownload,\n inputClients,\n clientsSelected,\n whatsappRedirectURL,\n setLoadingGet,\n setWhatsappRedirectURL,\n sendToResp,\n setSendToResp,\n setShowSendDarfModal,\n filters,\n getClients,\n setEmailFlow,\n setWhatsappFlow,\n}: IHandleDarfSend) => {\n try {\n const clients =\n clientsSelected.length > 0 ? clientsSelected : inputClients || [];\n if (whatsappRedirectURL) {\n window.open(whatsappRedirectURL, \"_blank\");\n setWhatsappRedirectURL(undefined);\n } else {\n setLoadingGet(true);\n if (sendToWhatsapp) {\n setWhatsappRedirectURL(\"loading\");\n }\n const { data } = await api.post(\"/darf/send\", {\n clients: clients,\n sendToResp,\n sendToWhatsapp,\n });\n const phone = clients[0].phone;\n const singleClient = data[0] || {};\n const shortPath = singleClient?.shortPath;\n\n const isExterior = singleClient?.type === 'Exterior'\n const oldModel = (singleClient?.year ?? 2023) < yearConfigPL4173\n const darfLabel = isExterior && !oldModel ? 'relatório' : 'DARF'\n\n if (shortPath && sendToWhatsapp) {\n const text = `Olá, ${\n singleClient?.name || \"Cliente\"\n }. Segue seu ${darfLabel} do mês ${singleClient?.month}/${\n singleClient?.year\n }: ${shortPath}`;\n const url = `https://wa.me${\n phone ? `/55${phone}` : \"\"\n }?text=${text.replaceAll(\" \", \"%20\")}`;\n setWhatsappRedirectURL(undefined);\n window.open(url, \"_blank\");\n }\n if (!sendToWhatsapp) {\n if (directDownload) {\n handleDarfDownload(shortPath);\n } else {\n message.success(`Envio de ${darfLabel}s realizado`);\n setWhatsappRedirectURL(undefined);\n }\n }\n setShowSendDarfModal(false);\n setWhatsappFlow(false);\n setEmailFlow(false);\n setSendToResp(false);\n getClients({ ...filters, getAllDarfStatus: true, planActive: true });\n }\n } catch (error: any) {\n setWhatsappRedirectURL(undefined);\n if (error.message.includes(\"400\")) {\n message.error(\"É necessário contratar o plano para emitir e pagar darfs\");\n } else {\n message.error(\"Algo errado aconteceu, tente novamente mais tarde.\");\n }\n }\n setLoadingGet(false);\n};\n\nexport const handleDarfDownload = async (url?: string, idDarf?: string) => {\n if (url) {\n window.open(url, \"_blank\");\n } else if (idDarf) {\n const token = localStorage.getItem(\"@VeloTax:token\");\n const { data } = await apiBolsa.get(`/darf/download/${idDarf}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n window.open(data?.url || \"\", \"_blank\");\n }\n};\n","import { useState } from \"react\";\nimport { BsWhatsapp } from \"react-icons/bs\";\nimport { AiOutlineArrowLeft } from \"react-icons/ai\";\nimport { Checkbox, Col, Modal, Row, Tooltip, Typography } from \"antd\";\nimport {\n InfoCircleOutlined,\n LoadingOutlined,\n MailOutlined,\n} from \"@ant-design/icons\";\nimport Button from \"../Button\";\nimport { getBrowser } from \"../../utils\";\nimport { handleDarfSend } from \"./handlers\";\nimport { getTooltipMessage } from \"../../pages/Darfs/tooltip\";\nimport { IClient, useClients } from \"../../contexts/ClientsContext\";\nimport { yearConfigPL4173 } from \"../../constants/others/exterior\";\n\ninterface IProps {\n showSendDarfModal: boolean;\n setShowSendDarfModal: any;\n whatsappRedirectURL: string | undefined;\n setWhatsappRedirectURL: any;\n clientsSelected: IClient[];\n setClientsSelected: any;\n setKeys?: any;\n sendToResp: boolean;\n setSendToResp: any;\n}\n\nexport const SendDarfModal = ({\n setKeys,\n sendToResp,\n setSendToResp,\n clientsSelected,\n showSendDarfModal,\n setClientsSelected,\n whatsappRedirectURL,\n setShowSendDarfModal,\n setWhatsappRedirectURL,\n}: IProps) => {\n const [emailFlow, setEmailFlow] = useState(false);\n const [whatsappFlow, setWhatsappFlow] = useState(false);\n const { loadingGet, getClients, setLoadingGet } = useClients();\n\n \n const oldModel = !!clientsSelected.find(c => ((c?.year || 2023) < yearConfigPL4173 && c?.type === 'Exterior') || c?.type !== 'Exterior')\n const darfLabel = oldModel ? 'DARF' : 'relatório'\n \n return (\n 1) && !loadingGet\n ? \"Confirmar envio\"\n : `Enviar ${oldModel ? 'DARF' : 'Relatório'}`\n }\n onCancel={() => {\n setShowSendDarfModal(false);\n setEmailFlow(false);\n setWhatsappFlow(false);\n setWhatsappRedirectURL(undefined);\n setClientsSelected([]);\n setKeys([]);\n }}\n >\n {loadingGet && (\n <>\n \n \n \n {whatsappRedirectURL === \"loading\"\n ? `Por favor, aguarde um instante enquanto geramos o ${darfLabel}. Logo após você poderá enviá-lo por Whatsapp.`\n : `Por favor, aguarde um instante enquanto geramos e enviamos os ${darfLabel}s por e-mail.`}\n \n \n \n \n \n \n \n \n \n )}\n {(emailFlow || clientsSelected.length > 1) && !loadingGet && (\n <>\n \n \n \n \n Clique aqui {` `}\n \n caso queira ver uma prévia de como seu cliente receberá o e-mail\n antes de confirmar o envio.\n \n \n \n \n \n setSendToResp(e.target.checked)}\n style={{ fontSize: \"14px\", fontWeight: \"100\" }}\n >\n Enviar com o profissional responsável em cópia\n \n \n \n \n \n \n handleDarfSend({\n sendToWhatsapp: false,\n clientsSelected,\n filters: {},\n getClients,\n sendToResp,\n setLoadingGet,\n setSendToResp,\n setEmailFlow,\n setWhatsappFlow,\n setShowSendDarfModal,\n setWhatsappRedirectURL,\n })\n }\n >\n {loadingGet ? (\n \n ) : (\n
\n \n CONFIRMAR ENVIO POR E-MAIL\n
\n )}\n \n \n
\n {emailFlow && (\n \n \n }\n style={{\n height: \"40px\",\n paddingLeft: \"0\",\n margin: \"8px 0 -24px\",\n }}\n onClick={() => {\n setEmailFlow(false);\n }}\n >\n VOLTAR\n \n \n \n )}\n \n )}\n {whatsappFlow && !loadingGet && (\n <>\n \n \n \n handleDarfSend({\n sendToWhatsapp: true,\n clientsSelected,\n filters: {},\n getClients,\n sendToResp,\n setLoadingGet,\n setSendToResp,\n setEmailFlow,\n setWhatsappFlow,\n setShowSendDarfModal,\n setWhatsappRedirectURL,\n })\n }\n >\n {loadingGet ? (\n \n ) : (\n
\n \n CONFIRMAR ENVIO POR WHATSAPP\n
\n )}\n \n \n
\n \n \n }\n style={{\n height: \"40px\",\n paddingLeft: \"0\",\n margin: \"8px 0 -24px\",\n }}\n onClick={() => {\n setWhatsappFlow(false);\n }}\n >\n VOLTAR\n \n \n \n \n \n \n \n Caso sua mensagem não seja enviada, por favor, habilite os pop-ups e\n redirecionamentos em seu navegador clicando em{\" \"}\n \"Configurações do site\" e ativando a opção{\" \"}\n \"Permitir\".\n \n \n )}\n {!emailFlow && !whatsappFlow && clientsSelected.length === 1 && (\n <>\n \n \n \n Defina abaixo a forma como deseja enviar o {darfLabel} para o cliente\n selecionado:\n \n \n \n {\n setWhatsappFlow(false);\n setEmailFlow(true);\n }}\n >\n {loadingGet ? (\n \n ) : (\n \n \n ENVIAR {darfLabel.toUpperCase()} POR E-MAIL\n \n )}\n \n \n \n {oldModel && \n \n {\n setEmailFlow(false);\n setWhatsappFlow(true);\n }}\n >\n {loadingGet ? (\n \n ) : (\n \n \n ENVIAR {darfLabel.toUpperCase()} POR WHATSAPP\n \n )}\n \n \n }\n \n )}\n \n );\n};\n","export const getTooltipMessage = (browser: string) => {\n if(browser === 'Google Chrome or Chromium'){\n return `Clique nos três pontos verticais no canto superior direito, vá em \"Configurações\" > \"Privacidade e segurança\" > \"Configurações do site\" > \"Pop-ups e redirecionamentos\", e ative a opção \"Permitir\"`\n }\n if(browser === 'Mozilla Firefox'){\n return `Clique nas três linhas horizontais no canto superior direito, escolha \"Configurações\" > \"Privacidade e segurança\" > \"Exceções\" ao lado de \"Bloquear pop-ups e redirecionamentos\", adicione nosso site como exceção e clique em \"Salvar alterações\"`\n }\n if(browser === 'Microsoft Edge'){\n return `Clique nos três pontos horizontais no canto superior direito, selecione \"Configurações\" > \"Cookies e permissões do site\" > \"Pop-ups e redirecionamentos\", e ative \"Permitir\".`\n }\n if(browser === 'Apple Safari'){\n return `Clique em \"Safari\" na barra de menu, vá para \"Preferências\" > \"Sites\" > \"Janela pop-up\", selecione \"Permitir sempre\" para nosso site.`\n }\n if(browser === 'Microsoft Internet Explorer'){\n return `Clique no ícone de engrenagem (configurações) no canto superior direito, selecione \"Opções da Internet\". Em seguida, vá para a guia \"Privacidade\" e clique no botão \"Configurações de Pop-up\". Adicione nosso site à lista de exceções e clique em \"Fechar\" para permitir os pop-ups e redirecionamentos para nosso site.`\n }\n return `Se sua mensagem não foi enviada pode ser que seu navegador tenha bloqueado o recurso de Pop-ups e redirecionamentos. Habilite no canto superior direito ou em configurações e tente novamente.`\n}","import React, { useEffect, useState } from \"react\";\nimport {\n AiOutlineSearch,\n} from \"react-icons/ai\";\nimport {\n InfoCircleOutlined,\n} from \"@ant-design/icons\";\nimport {\n Typography,\n Input,\n Row,\n Col,\n Table,\n TablePaginationConfig,\n Tooltip,\n Dropdown,\n MenuProps,\n message,\n} from \"antd\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { IClient, useClients } from \"../../contexts/ClientsContext\";\nimport {\n Container,\n Content,\n DropdownButton,\n} from \"./styles\";\nimport {\n isMobile,\n maskCpf,\n} from \"../../utils\";\nimport { RiFileList3Line } from \"react-icons/ri\";\nimport { FaFileDownload } from \"react-icons/fa\";\nimport ReportsModal from \"../../components/ReportsModal\";\nimport { FiAlertTriangle } from \"react-icons/fi\";\n\nvar debounce: NodeJS.Timeout;\n\nconst tooltip: any = () => (\n \n O usuário já possui uma conta cadastrada na plataforma. Enviamos um e-mail\n solicitando a sua permissão de acesso à conta e estamos aguardando a\n confirmação do usuário.\n

\n);\n\nconst initialData = {\n year: 2024\n}\n\nexport const Reports: React.FC = () => {\n const { user } = useAuth();\n const {\n loadingGet,\n clients,\n getClients,\n totalClients,\n } = useClients();\n\n const [filters, setFilters] = useState({ year: [initialData.year] });\n const [searchText, setSearchText] = useState(\"\");\n const [currentPage, setCurrentPage] = useState(1);\n const [clientSelected, setClientSelected] = useState();\n const [typeReports, setTypeReports] = useState('');\n const [modalReportsOpen, setModalReportsOpen] =\n useState(false);\n const [pagination] = useState({\n current: currentPage,\n pageSize: 10,\n defaultPageSize: 10,\n showSizeChanger: false, // mudar para true quando o back estiver aceitando\n pageSizeOptions: [\"5\", \"10\", \"20\", \"50\", \"100\"],\n });\n\n const handleDisabled = (item: any) => {\n const codes = (item.code || []).filter(\n (el: any) =>\n el?.escritorioId?.toString() === user?.user?.officeId?.toString() ||\n el?.assessorId?.toString() === user?.user?.assessorId?.toString()\n );\n return !codes.some((el: any) => !!el?.isAuthorized) || false;\n };\n\n const handleSearch = (value: string) => {\n setSearchText(value);\n if (debounce) clearTimeout(debounce);\n debounce = setTimeout(() => {\n getClients({\n ...filters,\n searchText: value,\n page: pagination.current,\n pageSize: pagination.pageSize,\n });\n }, 1000);\n };\n\n const getPlan = (item: any) => {\n if (!item?.planActive) return (\n \n \n  SEM PLANO\n \n )\n return (\n <>\n {'PLANO '}\n {item?.planName?.includes('_BASIC') ? 'BASIC ' : ''}\n {item?.planName?.includes('_CONCIERGE') ? 'CONCIERGE ' : ''}\n {item?.planName?.includes('_PRO') ? 'PREMIUM ' : ''}\n {item?.planName?.includes('ASSESSOR') ? 'ASSESSOR ' : ''}\n {(item.planType !== 'exterior')\n ? ((item?.planName?.includes('_MONTH') || item?.planType?.includes('mensal')) ? 'MENSAL' : 'ANUAL')\n : item.planName?.includes('ASSESSOR') ? ''\n : 'GRATUITO EXTERIOR'}\n {item.planType === \"exterior\"\n ? \"\"\n : item.hasPlanXp\n ? \" (CLIENTE)\"\n : \" (ESCRITÓRIO)\"}\n \n )\n }\n\n useEffect(() => {\n getClients();\n }, [getClients]);\n\n const Drop = (item: any, index: any, isDisabled: boolean) => {\n const items: MenuProps[\"items\"] = [\n {\n key: 1,\n label: (\n {\n if (item?.statusBolsa.includes('inativa')) \n return message.info(\"Integração de bolsa inativa!\");\n setTypeReports('bolsa');\n setClientSelected(item);\n setModalReportsOpen(true);\n }}\n >\n \n Relatórios de bolsa\n \n ),\n },\n {\n key: 2,\n label: (\n {\n if (item?.statusExterior.includes('inativa')) \n return message.info(\"Integração de exterior inativa!\");\n setTypeReports('exterior');\n setClientSelected(item);\n setModalReportsOpen(true);\n }}\n >\n \n Relatórios de exterior\n \n ),\n },\n ];\n\n const unblockedReports = !!localStorage.getItem('show2024Report')\n\n if ((isDisabled || !item?.planActive) && !unblockedReports) {\n return (\n
\n \n \n \n
\n );\n }\n\n return (\n
\n \n \n \n \n \n
\n );\n };\n\n return (\n \n \n \n \n \n Relatórios (Bolsa e Exterior)\n \n \n \n \n \n \n \n \n \n }\n onChange={(e) => handleSearch(e.target.value)}\n />\n \n \n \n \n \n \n {\n const order: any = sorter;\n setCurrentPage(pagination.current ?? 1);\n setFilters(filters);\n getClients({\n searchText,\n page: pagination.current,\n pageSize: pagination.pageSize,\n orderBy: order?.field || undefined,\n orderDirection: order?.order || undefined,\n });\n }}\n locale={{\n filterReset: \"Limpar\",\n }}\n columns={[\n {\n title: \"Cliente\",\n sorter: (a, b) => a.name.localeCompare(b.name),\n render: (_, item) => (\n <>\n \n \n {item.name}\n \n \n \n \n {maskCpf(item.username)}\n \n {handleDisabled(item) && (\n \n \n \n \n \n )}\n \n \n ),\n },\n {\n align: \"center\",\n title: \"E-mail\",\n dataIndex: \"email\",\n sorter: (a: any, b: any) => a.email.localeCompare(b.email),\n render: (email, record) =>
{email}
,\n },\n {\n align: \"center\",\n title: \"Plano\",\n dataIndex: \"planName\",\n render: (_, record) =>
{getPlan(record)}
,\n },\n {\n align: \"center\",\n title: \"Integração bolsa\",\n dataIndex: \"statusBolsa\",\n render: (statusBolsa, record) =>
{statusBolsa}
,\n },\n {\n align: \"center\",\n title: \"Integração exterior\",\n dataIndex: \"statusExterior\",\n render: (statusExterior, record) =>
{statusExterior}
,\n },\n {\n title: \"\",\n dataIndex: \"orderBy\",\n render: (_, item, index) =>\n Drop(\n item,\n index,\n handleDisabled(item)\n ),\n },\n ]}\n />\n \n \n { setModalReportsOpen(false); setTypeReports(''); }}\n />\n
\n
\n );\n};\n","import { GrDocumentDownload } from \"react-icons/gr\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px;\n min-height: 100%;\n background-color: var(--ghost);\n\n @media only screen and (max-device-width: 812px) {\n padding: 0 0 24px;\n background-color: var(--white);\n }\n`;\n\nexport const Content = styled.div`\n width: 100%;\n padding: 48px;\n margin: 0 auto;\n border-radius: 8px;\n background-color: var(--white);\n box-shadow: 0px 4px 8px 0px #e0e0e0;\n\n .ant-btn {\n height: 48px !important;\n }\n\n .send-icon {\n fill: none !important;\n stroke: var(--dark-2);\n }\n\n .btn-filter {\n border-radius: 24px;\n font-weight: 500 !important;\n svg {\n stroke: var(--ant-primary-color);\n }\n &.filtro-aplicado {\n color: var(--ant-primary-color);\n border: 1px solid var(--ant-primary-color);\n background-color: var(--ant-primary-1);\n }\n }\n .downloadSheet {\n font-weight: 500 !important;\n svg {\n fill: var(--ant-primary-color);\n }\n }\n\n .button-disabled-plan {\n position: relative;\n\n .over-button-disabled {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 999;\n }\n }\n\n .calc-status {\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 6px;\n span {\n width: 8px;\n height: 8px;\n min-width: 8px;\n min-height: 8px;\n border-radius: 4px;\n display: inline-block;\n background-color: var(--red);\n &.Regular {\n background-color: var(--green-1);\n }\n &.NOT_PAYED {\n background-color: var(--yellow);\n }\n }\n }\n\n .ant-btn-group.ant-dropdown-button {\n .ant-btn {\n text-transform: none;\n border-color: var(--dark-1);\n :first-of-type {\n border-radius: 24px;\n margin-right: 8px;\n }\n :last-of-type {\n border-radius: 24px;\n }\n :disabled,\n :hover {\n color: var(--gray-1);\n border-color: var(--gray-1);\n }\n &.ant-dropdown-trigger {\n svg {\n fill: var(--dark-1);\n }\n :disabled,\n :hover {\n svg {\n fill: var(--gray-1);\n }\n }\n }\n }\n }\n\n .ant-list.ant-list-split {\n padding: 0 32px;\n border: 2px solid var(--dark-1);\n border-radius: 8px;\n .ant-list-item-action > li {\n padding: 0;\n }\n }\n .ant-list-item {\n padding: 20px 0;\n }\n .ant-list-item-meta-title {\n font-size: 1rem;\n font-weight: 700;\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--white);\n }\n .ant-list-item-action {\n display: flex;\n row-gap: 4px;\n column-gap: 8px;\n\n .ant-btn.hire-btn {\n color: var(--ant-primary-color) !important;\n border-color: var(--dark-1);\n background-color: var(--dark-1);\n }\n\n .ant-btn.action-btn {\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: space-between;\n row-gap: 0;\n height: 48px;\n padding: 0 4px;\n font-size: 14px;\n color: var(--white);\n\n svg,\n svg * {\n stroke: var(--ant-primary-color);\n }\n }\n }\n\n .ant-list-item-action-split {\n display: none;\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n\n .ant-btn {\n span {\n line-height: 18px;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n svg {\n min-width: 20px;\n min-height: 20px;\n }\n }\n\n .resp {\n p {\n margin: 0;\n text-align: left;\n max-width: 128px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n\n .action-btns {\n display: flex;\n justify-content: center;\n .action-btn + .action-btn {\n margin-left: 8px;\n width: 48px;\n }\n .action-btn {\n font-size: 14px;\n font-weight: 500;\n border-radius: 24px;\n border: 1px solid var(--ghost);\n background-color: var(--ghost);\n svg {\n path {\n transition: stroke 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\n }\n }\n &:active,\n &:focus,\n &:hover {\n color: var(--gray-1);\n svg {\n path {\n stroke: var(--gray-1);\n }\n }\n }\n }\n }\n\n .ant-table-container table > thead > tr:first-child th:first-child {\n border-top-left-radius: 8px;\n }\n .ant-table-container table > thead > tr:first-child th:last-child {\n border-top-right-radius: 8px;\n }\n .ant-table-container table > tbody > tr:last-child td:first-child {\n border-bottom-left-radius: 8px;\n }\n .ant-table-container table > tbody > tr:last-child td:last-child {\n border-bottom-right-radius: 8px;\n }\n\n .ant-table-container table > tbody > tr td {\n border-left: 1px solid var(--ghost);\n &:last-child {\n border-right: 1px solid var(--ghost);\n }\n }\n .ant-table-selection-column {\n padding: 16px;\n }\n\n .ant-table-thead .ant-table-cell {\n background-color: var(--ghost);\n font-weight: 500;\n color: black;\n &:before {\n visibility: hidden;\n }\n &.ant-table-selection-column {\n .ant-table-selection {\n .ant-checkbox {\n .ant-checkbox-inner {\n border-color: var(--white);\n background-color: var(--white);\n }\n &.ant-checkbox-checked {\n .ant-checkbox-inner {\n border-color: var(--ant-primary-color);\n background-color: var(--ant-primary-color);\n }\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 32px 16px;\n border-radius: 0;\n box-shadow: none;\n\n .ant-list.ant-list-split {\n padding: 0 16px;\n font-size: 12px;\n\n .ant-list-item {\n padding: 16px 0;\n }\n\n .ant-list-item-action {\n flex-direction: column;\n }\n }\n\n .ant-table-content {\n overflow-y: auto;\n }\n }\n`;\n\nexport const HiredTag = styled.div`\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 8px;\n padding: 4px 16px;\n border: none;\n font-size: 14px;\n font-weight: 500;\n color: var(--white);\n background-color: var(--dark-1);\n`;\n\nexport const DownloadIcon = styled(GrDocumentDownload)`\n width: 16px;\n height: 16px;\n margin-left: 4px;\n cursor: pointer;\n`;\n\nexport const DarfAutomaticoContainer = styled.div`\n height: 44px;\n display: flex;\n font-weight: 500;\n justify-content: flex-end;\n margin-top: 16px;\n align-items: center;\n color: var(--gray-3);\n\n .ant-switch {\n background-color: var(--ant-error-color);\n margin-right: 8px;\n }\n\n .ant-switch-checked {\n background-color: var(--ant-success-color);\n }\n\n .ant-switch-inner {\n position: relative;\n width: 16px;\n height: 16px;\n }\n .ant-switch-inner .anticon-loading {\n scale: 0.6;\n position: absolute;\n top: -4px;\n left: -4px;\n }\n\n @media only screen and (max-device-width: 812px) {\n margin: 0;\n padding: 0 16px;\n }\n`;\n\nexport const DropdownButton = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--ant-gray-2);\n svg {\n margin-right: 8px;\n transform: translateY(-1px);\n font-size: 16px;\n }\n`\n","import { Typography } from \"antd\";\nimport { RiMoneyDollarCircleLine, RiFileSearchLine, RiHandCoinLine } from \"react-icons/ri\";\n\nexport const cards = [\n {\n id: \"anual-report\",\n type: ['bolsa', 'exterior'],\n icon: (\n \n ),\n content: RELATÓRIOS ANUAIS,\n description: (\n \n Relatórios auxiliares para preenchimento da DIRPF\n \n ),\n },\n {\n id: \"gain\",\n type: ['bolsa', 'exterior'],\n icon: (\n \n ),\n content: INFORMES DE GANHO DE CAPITAL,\n description: (\n \n Relatórios auxiliares para acompanhamento do ganho de capital (GCAP)\n \n ),\n },\n {\n id: \"income\",\n type: ['exterior'],\n icon: (\n \n ),\n content: INFORMES DE DIVIDENDOS,\n description: (\n \n Relatórios auxiliares para acompanhamento dos dividendos recebidos no\n exterior (carnê-leão)\n \n ),\n },\n];\n","import styled from \"styled-components\";\n\nexport const CardContainer = styled.div`\n width: 200px;\n height: 100%;\n padding: 20px;\n border-radius: 8px;\n transition: opacity 0.3s ease-in-out;\n background-color: var(--velotax-background-color);\n cursor: pointer;\n position: relative;\n box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.2);\n\n &.disabled {\n cursor: default;\n :before {\n content: \"Em breve!\";\n top: 6px;\n left: -6px;\n position: absolute;\n color: #000;\n width: auto;\n height: auto;\n padding: 4px 8px;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--ant-primary-color);\n }\n }\n\n figure {\n margin: 0 0 4px;\n\n svg {\n width: 32px;\n height: 32px;\n &:not(.no-fill) {\n fill: var(--ant-primary-color);\n }\n }\n }\n\n .ant-btn.ant-btn-primary.btn-premium {\n top: 16px;\n right: -6px;\n }\n\n &#irpf {\n box-shadow: none;\n animation-name: irpf-card;\n animation-duration: 1.75s;\n animation-direction: alternate;\n animation-iteration-count: infinite;\n animation-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55);\n }\n\n @keyframes irpf-card {\n 0% {\n box-shadow: 0px 0px 8px 4px var(--ant-primary-color-outline);\n }\n 50% {\n box-shadow: 0px 0px 1px 1px var(--ant-primary-color-outline);\n }\n 100% {\n box-shadow: 0px 0px 8px 4px var(--ant-primary-color-outline);\n }\n }\n\n .content {\n font-weight: 600;\n font-size: 0.875rem;\n line-height: 1.125rem;\n color: var(--velotax-font-color-light);\n\n .ant-typography {\n color: inherit;\n position: relative;\n text-align: left;\n text-transform: uppercase;\n\n .available-until {\n position: absolute;\n bottom: -24px;\n left: 8px;\n width: calc(100% - 16px);\n opacity: 0.8;\n font-weight: 300;\n font-size: 0.5625rem;\n letter-spacing: 0.25px;\n line-height: 11px;\n text-align: center;\n }\n }\n\n .description {\n left: 16px;\n bottom: 16px;\n position: absolute;\n opacity: 0.7;\n font-size: 13px;\n font-weight: 300;\n max-width: calc(100% - 32px);\n text-align: left;\n .ant-typography {\n text-transform: none;\n }\n\n .warning {\n transform: translateY(4px);\n color: var(--ant-warning-color);\n margin-right: 4px;\n font-size: 16px;\n }\n }\n }\n\n &.add {\n background-color: var(--velotax-background-color-ghost);\n border: 2px solid var(--velotax-background-color);\n svg {\n fill: var(--velotax-font-color-ghost);\n }\n .content {\n color: var(--velotax-font-color-ghost);\n }\n }\n`;\n","import { ReactNode } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { CardContainer } from \"./styles\";\nimport { isMobile } from \"../../../utils\";\n\ninterface CardProps {\n id: string;\n icon: ReactNode;\n children: ReactNode;\n link?: string;\n disabled?: boolean;\n onClick?: () => void;\n}\n\nconst Container: React.FC> = ({ children, link }) => {\n return link && link.includes(\"http\") ? (\n \n {children}\n \n ) : (\n <>{children}\n );\n};\n\nexport const Card = ({\n id,\n icon,\n link,\n onClick,\n children,\n disabled,\n}: CardProps) => {\n const navigate = useNavigate();\n\n const handleClick = () => {\n if (disabled) return;\n if (onClick) {\n onClick();\n } else if (link && !link.includes(\"http\")) {\n navigate(link);\n }\n };\n\n return (\n \n \n
{icon}
\n
{children}
\n
\n
\n );\n};\n","import styled from \"styled-components\";\n\nexport const ReportContainer = styled.div`\n height: 100%;\n width: 100%;\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: 1rem;\n\n & > .content {\n margin: 0 auto;\n width: 700px;\n }\n\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n h3 {\n display: flex;\n align-items: center;\n column-gap: 16px;\n color: var(--velotax-font-color-light);\n margin-bottom: 0;\n }\n\n div.ant-typography {\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color);\n }\n\n .ant-typography.destak {\n margin: 48px 0;\n display: block;\n font-weight: 700;\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color);\n padding-left: 16px;\n border-left: 4px solid var(--ant-primary-color);\n }\n\n .cards {\n margin: 32px 0 0;\n padding-bottom: 32px;\n width: 100%;\n display: grid;\n row-gap: 1rem;\n column-gap: 1rem;\n grid-template-columns: repeat(2, 1fr);\n\n & > div {\n width: 100%;\n }\n\n .card-antd {\n position: relative;\n\n a {\n top: 0;\n left: 0;\n position: absolute;\n width: 100%;\n height: 100%;\n color: var(--velotax-font-color);\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n height: auto;\n padding: 24px 0 0;\n\n & > .content {\n width: 100%;\n h1 {\n width: 100%;\n padding: 0 24px 12px;\n margin: 0 auto 1.5rem;\n :after {\n left: 24px;\n }\n }\n\n & > div.ant-typography {\n padding: 0 24px;\n }\n }\n\n .cards {\n width: 100%;\n padding: 0 24px;\n margin: 32px 0;\n grid-template-columns: repeat(2, 1fr);\n\n & > div {\n width: auto;\n height: 240px;\n }\n }\n }\n`;\n\nexport const Container = styled.div`\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n h2.ant-typography {\n display: flex;\n align-items: center;\n column-gap: 8px;\n width: 100%;\n margin: 0 auto 1.5rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n\n &.info {\n align-items: flex-start;\n font-size: 0.875rem;\n line-height: 1.125rem;\n opacity: 0.85;\n margin: 0 auto 2.5rem;\n svg {\n margin-top: 4px;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n\n h1 {\n width: calc(100% - 48px);\n margin: 0 24px 1.5rem;\n padding: 24px 0 1rem;\n }\n\n h2.ant-typography {\n width: 100%;\n margin: 0 auto 1.5rem;\n padding: 0 24px;\n }\n }\n`;\n\nexport const Content = styled.div`\n width: 100%;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n\n .ant-list.ant-list-split {\n margin: 24px 0 0;\n padding: 0 16px;\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-ghost);\n border-radius: 4px;\n .ant-list-item-action > li {\n padding: 0;\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n .ant-list-item-action > li > button {\n font-size: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 110px;\n color: var(--ant-primary-color);\n }\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n font-size: 16px;\n color: var(--velotax-font-color-light);\n }\n .ant-list-item-action-split {\n opacity: 0;\n }\n }\n .historic-month-status {\n font-weight: 500;\n padding: 4px 8px;\n border-radius: 0;\n color: var(--black);\n display: flex;\n &.payed,\n &.regular {\n background-color: var(--ant-success-color);\n }\n &.pending {\n background-color: var(--ant-error-color);\n }\n &.not-payed {\n background-color: var(--ant-warning-color);\n }\n }\n .ant-btn.ant-btn-text {\n color: var(--ant-primary-color);\n }\n @media only screen and (max-device-width: 812px) {\n padding: 24px 24px 32px;\n border-radius: 0;\n width: 100%;\n .ant-list.ant-list-split {\n .ant-list-item-action {\n align-items: end;\n grid-template-rows: 1fr 0.75fr;\n grid-template-columns: 1fr 1fr;\n }\n }\n }\n`;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { Button, Col, List, message, Modal, Select, Skeleton, Tooltip, Typography } from \"antd\";\nimport veloproAPI from \"../../services/api\";\nimport bolsaAPI from \"../../services/bolsa-api\";\nimport extAPI from \"../../services/exterior-api\";\nimport { IClient } from \"../../contexts/ClientsContext\";\nimport { cards } from \"./items\";\n\nimport { InfoCircleOutlined, LoadingOutlined } from \"@ant-design/icons\";\nimport { download, isMobile, monthsExtended, zero } from \"../../utils\";\nimport { Card } from \"./Cards\";\nimport { Container, Content, ReportContainer } from \"./styles\";\nimport { RiDownloadCloudLine } from \"react-icons/ri\";\n\ninterface IReportsModalProps {\n open: boolean;\n type: string;\n clientSelected?: IClient;\n onCancel: () => void;\n}\n\nconst ReportsModal: React.FC = ({\n open,\n type,\n clientSelected,\n onCancel\n}) => {\n // Variáveis gerais\n const [loading, setLoading] = useState(false);\n const [downloading, setDownloading] = useState(false);\n const [action, setAction] = useState('');\n const [data, setData] = useState();\n const api = (type == 'bolsa') ? bolsaAPI : extAPI;\n const getClientToken = async (client: IClient) => {\n if (!client || Object.keys(client).length === 0) return;\n const { data } = await veloproAPI.get(`/clients/token/${client?.username}`);\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${data.token}`;\n if (type == 'bolsa') api.defaults.headers.common[\"X-Api-Provider\"] = `xpinvestimentos`;\n return ;\n };\n\n // Datas\n const today = new Date();\n const currentMonth = today.getMonth();\n const currentYear = today.getFullYear();\n const [initialYear, setInitialYear] = useState(currentYear);\n const [year, setYear] = useState(initialYear);\n\n const transactionsFeature = { apiUrl: \"/darf/report/transactions\" };\n const downloadFeature = { apiUrl: \"/darf/report/download\" };\n const historicFeature = { apiUrl: \"/velotax/exterior/historic\" }\n const darfFeature = { apiUrl: \"/darf\" }\n\n const yearOptions = Array.from(Array(initialYear - 2020 + 2))\n .map((y, i) => ({\n value: 2020 + i,\n label: `${2020 + i}`,\n }))\n .reverse();\n\n const onChangeYear = (value: string) => {\n setYear(parseInt(value));\n };\n\n const handleActionButton = (id: string) => {\n setAction(id);\n switch (id) {\n case \"anual-report\":\n case \"income\":\n setYear(2023);\n setInitialYear(2023);\n break;\n case \"gain\":\n setYear(2024);\n setInitialYear(2024);\n break;\n }\n };\n\n const tooltipInfo: any = (info: string) => (\n \n {info}\n

\n );\n\n const downloadAction = async (record: any) => {\n const act = record?.action || action;\n setDownloading(true);\n\n const mobileAction = isMobile()\n\n if (mobileAction) {\n message.info(\"Preparando seu relatório.\");\n } else {\n message.info(\"Iniciando download do seu relatório.\");\n }\n api.post(`${downloadFeature.apiUrl}/${act}`, {\n from: \"xpinvestimentos\",\n id: record._id,\n month: record.month,\n year: record.year,\n // sendMail: record.sendMail || mobileAction,\n })\n .then((res) => {\n if (!res.data.fileUrl) {\n return message.error(\"Houve um erro ao buscar seu relatório!\")\n }\n if (!mobileAction) {\n download(res.data.fileUrl);\n }\n // if (record.sendMail || mobileAction) {\n // message.success(\"Relatório enviado para o seu e-mail\");\n // } else {\n message.success(\"Relatório emitido com sucesso\");\n // }\n })\n .catch(({ response }) =>\n message.error(response?.data?.message)\n )\n .finally(() => {\n setDownloading(false);\n });\n };\n\n const downloadDarf = async (data: any) => {\n setDownloading(true);\n\n api.post(`${darfFeature.apiUrl}`, data)\n .then((res) => {\n if (!res?.data?.darfUrl ) {\n return message.error(\"Houve um erro ao baixar seu relatório!\")\n }\n download(res.data.darfUrl);\n message.success(\"Relatório emitido com sucesso\");\n })\n .catch(({ response }) =>\n message.error(response?.data?.message)\n )\n .finally(() => {\n setDownloading(false);\n });\n };\n\n const checkProcessorAction = (record: any) => {\n setLoading(true);\n let showToast = false;\n const itvl = setInterval(() => {\n api.get(`${downloadFeature.apiUrl}/anual-report?year=${record.year}`)\n .then((res) => {\n const { data } = res;\n const { year, status } = data;\n const isProcessing = record.year === year && status === \"processing\";\n if (isProcessing && showToast) return;\n if (isProcessing && !showToast) {\n showToast = true;\n return message.success(\n \"O seu Informe de Rendimentos está em geração. Aguarde alguns minutos.\"\n );\n }\n setLoading(false);\n clearInterval(itvl);\n downloadAction(record);\n })\n .catch(({ response }) => {\n const { data, status } = response;\n if (status === 401) message.error(data?.message);\n setLoading(false);\n clearInterval(itvl);\n });\n }, 5000);\n };\n\n const checkDarf = (record: any) => {\n setLoading(true);\n api.get(`${historicFeature.apiUrl}`, { params: { year: record.year} })\n .then((res) => {\n const darf = res.data.find((d: any)=> {\n if (record?.month == d?.month) return d;\n })\n if (!darf || !darf?._id) {\n message.info(\"Cliente não possui relatório para este mês.\");\n setLoading(false);\n return;\n }\n delete darf?.transactions;\n const data = {\n ...darf,\n year: record.year,\n month: record.month,\n name: clientSelected?.name,\n memoriaCalculo: [],\n justSave: false,\n payed: false,\n noSendMail: true,\n paymentInfo: {\n clientInfo: {\n name: clientSelected?.name,\n email: clientSelected?.email,\n document: clientSelected?.username,\n },\n },\n };\n setLoading(false);\n downloadDarf(data);\n })\n .catch(({ response }) => {\n const { data, status } = response;\n if (status === 401) message.error(data?.message);\n setLoading(false);\n });\n }\n\n const getHistoric = useCallback(() => {\n if (!action) return;\n if (action === \"anual-report\")\n return setData(\n Array.from(Array(new Date().getFullYear() - 2022))\n .map((y, i) => ({\n year: 2022 + i,\n label: `${2022 + i}`,\n }))\n .reverse()\n );\n\n setLoading(true);\n api.get(`${transactionsFeature.apiUrl}${(type == 'exterior') ? `/${action}` : ''}`, { params: { year } })\n .then((response) => setData((response.data ?? []).reverse()))\n .catch(() => message.error(\"Algo inesperado aconteceu! Tente novamente mais tarde.\"))\n .finally(() => setLoading(false));\n }, [year, action]);\n\n useEffect(() => {\n if (clientSelected) getClientToken(clientSelected);\n getHistoric();\n }, [getHistoric, year]);\n\n useEffect(() => {\n if (!type) setAction('');\n if (type === 'exterior') setAction('anual-report');\n }, [type])\n\n const renderAction = () => {\n return (\n <>\n {action && (\n \n \n Selecione o ano:\n {action !== \"anual-report\" && (\n \n )}\n \n action === \"anual-report\" ||\n item.year === year ||\n item.year === currentYear\n ) ?? []\n }\n itemLayout=\"horizontal\"\n renderItem={(item, index) => {\n const show2024Report = localStorage.getItem('show2024Report') === 'show';\n if (item.year === 2024 && action === \"anual-report\" && !show2024Report) return <>\n return (\n \n (action === \"anual-report\" && (type == \"bolsa\"))\n ? checkProcessorAction(item)\n : ((action === \"gain\") && type === \"exterior\" && year === 2024)\n ? checkDarf(item)\n : downloadAction(item)\n }\n download={`Relatório-${item.year}-${zero(\n item.month\n )}.pdf`}\n >\n Baixar\n \n ,\n ]}\n >\n \n \n \n \n )\n }}\n />\n {\n // handleActionButton(\"\")\n onCancel()\n }}\n style={{ marginTop: \"1rem\" }}\n >\n Voltar\n \n \n \n )}\n \n )\n }\n\n return (\n \n {!action ?\n \n {cards.map((item) => {\n return (\n <>\n {item.type.includes(type) &&\n \n ) : (\n item.icon\n )\n }\n onClick={() => !loading && handleActionButton(item.id)}\n >\n <>\n \n \n \n \n \n {item.content}\n \n \n }\n \n )\n })}\n \n : renderAction()\n }\n \n );\n};\n\nexport default ReportsModal;\n","import React, { useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Form, Input, Tabs, Typography } from \"antd\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport { EyeInvisibleOutlined, EyeOutlined } from \"@ant-design/icons\";\nimport {\n validationEmail,\n validationFullName,\n validationCnpj,\n validationCpf,\n validationPassword,\n} from \"../../utils/formValidations\";\n\ninterface IData {\n email: string;\n pass: string;\n passConfirmation: string;\n username: string;\n usernameEscritorio: string;\n name: string;\n}\n\ninterface IProps {\n className?: string;\n}\n\nconst Cadastro: React.FC = ({ className }) => {\n const navigate = useNavigate();\n const [form] = Form.useForm();\n const { handleSignUp, loading } = useAuth();\n\n const [isPj, setIsPj] = useState(true);\n const [visiblePass, setVisiblePass] = useState(false);\n\n const onFinish = (data: IData) => {\n handleSignUp({\n ...data,\n policiesAccepted: true,\n username: String(data.username).replace(/[_.-/-]/g, \"\"),\n usernameEscritorio: String(data.usernameEscritorio).replace(\n /[_.-/-]/g,\n \"\"\n ),\n isAssessor: !isPj,\n });\n };\n\n const RegisterForm = (\n
\n \n \n \n\n \n \n \n\n {!isPj && (\n
\n \n \n \n \n form.setFieldValue(\"usernameEscritorio\", \"02.332.886/0001-04\")\n }\n >\n Sou XP Matriz\n \n
\n )}\n\n \n \n \n\n
\n \n {visiblePass ? (\n \n ) : (\n \n )}\n \n setVisiblePass((visible) => !visible)}\n icon={visiblePass ? : }\n />\n
\n\n
\n \n Começar\n \n
\n
\n );\n\n return (\n \n
\n
\n

Cadastre sua conta

\n\n {\n setIsPj(activeKey === \"escritorio\");\n }}\n >\n \n {RegisterForm}\n \n \n {RegisterForm}\n \n \n\n \n Ao clicar em \"Começar\" você afirma que leu, entendeu e está de\n acordo com os{\" \"}\n \n Termos de Uso\n \n ,{\" \"}\n \n Política de Privacidade\n {\" \"}\n e{\" \"}\n \n Política de Cookies\n {\" \"}\n do Velotax\n \n\n
\n Já possui uma conta?\n navigate(\"/p/login\")}\n >\n Acessar\n \n
\n
\n
\n
\n );\n};\n\nexport default Cadastro;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\n\nconst Container = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding: 64px 32px 0;\n height: calc(100vh - 64px);\n .anticon.anticon-loading.anticon-spin {\n width: 48px;\n height: 48px;\n svg {\n width: 48px;\n height: 48px;\n fill: var(--ant-primary-color);\n }\n }\n`;\n\nconst Loading: React.FC = () => {\n return (\n \n \n \n );\n};\n\nexport default Loading;\n","export default __webpack_public_path__ + \"static/media/notification.d3262cf7.svg\";","import _ from \"lodash\";\nimport moment from \"moment\";\nimport { useEffect, useState } from \"react\";\nimport {\n Bar,\n BarChart,\n Legend,\n ResponsiveContainer,\n XAxis,\n YAxis,\n Tooltip,\n} from \"recharts\";\nimport Loading from \"../Loading\";\nimport { isMobile } from \"../../utils\";\nimport { useClients } from \"../../contexts/ClientsContext\";\nimport notificationImage from \"../../assets/notification.svg\";\n\nexport const ChartBar = ({ monthReport }: any) => {\n const [data, setDataChart] = useState([]);\n const [bars, setBars] = useState([]);\n const [loading, setLoading] = useState(false);\n const [totalJscp, setTotalJscp] = useState(0);\n const [totalDiv, setTotalDiv] = useState(0);\n const [totalBonds, setTotalBonds] = useState(0);\n const [totalRendi, setTotalRendi] = useState(0);\n const [totalAmort, setTotalAmort] = useState(0);\n\n const { proventos, yearProventos, typeProventos } = useClients();\n\n const chartColors = [\n { background: \"#FCC102\", label: \"white\" },\n { background: \"#C8D200\", label: \"black\" },\n { background: \"#FF2B01\", label: \"white\" },\n { background: \"#4B0082\", label: \"white\" },\n { background: \"#CC13AF\", label: \"white\" },\n { background: \"#0204a8\", label: \"white\" },\n { background: \"#79002B\", label: \"white\" },\n { background: \"#0A9E5A\", label: \"white\" },\n { background: \"#FF7F00\", label: \"white\" },\n ];\n\n const getProviderColor = (provider: string, index: number) => {\n while (index > 8) {\n const differnce = index - 8;\n index = differnce - 1;\n }\n return chartColors[index].background;\n };\n\n useEffect(() => {\n setLoading(true);\n let totalJscp = 0;\n let totalDiv = 0;\n let totalBonds = 0;\n let totalRendi = 0;\n let totalAmort = 0;\n if (typeProventos === \"provento\") {\n const proventoByMonth: any = [\n {\n name: \"Jan\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Fev\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Mar\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Abr\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Mai\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Jun\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Jul\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Ago\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Set\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Out\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Nov\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Dez\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n ];\n\n const groupedProventos = _.groupBy(proventos, (item) => {\n return moment(item.date).format(\"YYYY-MM\");\n });\n\n for (const key in groupedProventos) {\n const year = +moment(key).format(\"Y\");\n const month = +moment(key).format(\"M\");\n const operations = groupedProventos[key];\n if (Number(year) === yearProventos) {\n operations.forEach((el: any) => {\n if (\n el?.corporateActionTypeDescription?.toLowerCase() === \"rendimento\"\n ) {\n proventoByMonth[month - 1].rendimento =\n proventoByMonth[month - 1]?.rendimento + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"dividendo\" ||\n el?.corporateActionTypeDescription?.toLowerCase() === \"dividendos\"\n ) {\n proventoByMonth[month - 1].dividendo =\n proventoByMonth[month - 1]?.dividendo + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"juros sobre capital próprio\"\n ) {\n proventoByMonth[month - 1].juros =\n proventoByMonth[month - 1]?.juros + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"amortização\"\n ) {\n proventoByMonth[month - 1].amortizacao =\n proventoByMonth[month - 1]?.amortizacao + el.grossAmount;\n }\n if (el?.corporateActionTypeDescription?.toLowerCase() === \"cupom\") {\n proventoByMonth[month - 1].bonds =\n proventoByMonth[month - 1]?.bonds + el.grossAmount;\n }\n });\n }\n }\n for (const el of proventoByMonth) {\n totalAmort += el.amortizacao || 0;\n totalJscp += el.juros || 0;\n totalDiv += el.dividendo || 0;\n totalBonds += el.bonds || 0;\n totalRendi += el.rendimento || 0;\n }\n\n setTotalAmort(totalAmort);\n setTotalBonds(totalBonds);\n setTotalDiv(totalDiv);\n setTotalJscp(totalJscp);\n setTotalRendi(totalRendi);\n setDataChart(proventoByMonth);\n }\n if (typeProventos === \"corretora\") {\n const proventoByMonth: any = [\n {\n name: \"Jan\",\n },\n {\n name: \"Fev\",\n },\n {\n name: \"Mar\",\n },\n {\n name: \"Abr\",\n },\n {\n name: \"Mai\",\n },\n {\n name: \"Jun\",\n },\n {\n name: \"Jul\",\n },\n {\n name: \"Ago\",\n },\n {\n name: \"Set\",\n },\n {\n name: \"Out\",\n },\n {\n name: \"Nov\",\n },\n {\n name: \"Dez\",\n },\n ];\n const barsChart: any = [];\n\n const groupedProventos = _.groupBy(proventos, (item) => {\n return item.corretora;\n });\n\n for (const key in groupedProventos) {\n barsChart.push(key);\n const operations = groupedProventos[key];\n operations.forEach((el: any) => {\n if (Number(moment(el.date).format(\"YYYY\")) === yearProventos) {\n const month = Number(moment(el.date).format(\"M\"));\n if (\n el?.corporateActionTypeDescription?.toLowerCase() === \"rendimento\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"dividendo\" ||\n el?.corporateActionTypeDescription?.toLowerCase() === \"dividendos\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"juros sobre capital próprio\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"amortização\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n if (el?.corporateActionTypeDescription?.toLowerCase() === \"cupom\") {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n }\n });\n }\n\n setBars(barsChart);\n setDataChart(proventoByMonth);\n }\n if (typeProventos === \"data\") {\n const proventoByMonth: any = [\n {\n name: \"Jan\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Fev\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Mar\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Abr\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Mai\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Jun\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Jul\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Ago\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Set\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Out\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Nov\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Dez\",\n futuro: 0,\n liquidado: 0,\n },\n ];\n const types = [\n \"rendimento\",\n \"juros sobre capital próprio\",\n \"dividendo\",\n \"dividendos\",\n \"amortização\",\n \"cupom\",\n ];\n\n proventos.forEach((el: any) => {\n const year = Number(moment(el.date).format(\"Y\"));\n if (\n year === yearProventos &&\n types.includes(el.corporateActionTypeDescription.toLowerCase())\n ) {\n const month = Number(moment(el.date).format(\"M\"));\n if (el.isFuturo) {\n proventoByMonth[month - 1].futuro += el.grossAmount;\n } else {\n proventoByMonth[month - 1].liquidado += el.grossAmount;\n }\n }\n });\n setDataChart(proventoByMonth);\n }\n\n setLoading(false);\n }, [yearProventos, proventos, typeProventos]);\n\n const renderLegend = (value: string, entry: any) => {\n return {value};\n };\n\n const labelFormatter = (value: any) => {\n return value > 0\n ? \"R$ \" +\n value?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n : \"\";\n };\n\n const renderTooltip = (value: any) => {\n const { payload } = value;\n if (typeProventos === \"provento\") {\n const total =\n payload[0]?.payload?.dividendo +\n payload[0]?.payload?.rendimento +\n payload[0]?.payload?.juros +\n payload[0]?.payload?.amortizacao;\n return payload[0]?.payload?.dividendo > 0 ||\n payload[0]?.payload?.rendimento > 0 ||\n payload[0]?.payload?.juros > 0 ||\n payload[0]?.payload?.amortizacao > 0 ||\n payload[0]?.payload?.bonds > 0 ? (\n
\n {payload[0]?.payload?.dividendo > 0 && (\n \n Dividendos: R${\" \"}\n {payload[0]?.payload?.dividendo.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.dividendo * 100) / total).toFixed(2)\n : 0}\n %)\n \n )}\n {payload[0]?.payload?.rendimento > 0 && (\n \n Rendimento: R${\" \"}\n {payload[0]?.payload?.rendimento.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.rendimento * 100) / total).toFixed(2)\n : 0}\n %)\n \n )}\n {payload[0]?.payload?.juros > 0 && (\n \n Juros sobre capital próprio: R${\" \"}\n {payload[0]?.payload?.juros.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.juros * 100) / total).toFixed(2)\n : 0}\n %)\n \n )}\n {payload[0]?.payload?.amortizacao > 0 && (\n \n Amortização: R${\" \"}\n {payload[0]?.payload?.amortizacao.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.amortizacao * 100) / total).toFixed(2)\n : 0}\n %)\n \n )}\n {payload[0]?.payload?.bonds > 0 && (\n \n Cupom: R${\" \"}\n {payload[0]?.payload?.bonds.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.bonds * 100) / total).toFixed(2)\n : 0}\n %)\n \n )}\n
\n ) : (\n <>\n );\n }\n if (typeProventos === \"corretora\") {\n const keys = Object.keys(payload[0]?.payload || {});\n let total = 0;\n keys.forEach((el) => {\n if (el !== \"name\") {\n total += payload[0]?.payload[el] || 0;\n }\n });\n\n return (\n
\n {keys.map((el) => {\n if (el !== \"name\") {\n return (\n \n {el}: R${\" \"}\n {payload[0]?.payload[el].toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload[el] * 100) / total).toFixed(2)\n : 0}\n %)\n \n );\n }\n return <>;\n })}\n
\n );\n }\n if (typeProventos === \"data\") {\n const total =\n payload[0]?.payload?.futuro + payload[0]?.payload?.liquidado;\n return total > 0 ? (\n
\n \n Futuro: R${\" \"}\n {payload[0]?.payload?.futuro.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.futuro * 100) / total).toFixed(2)\n : 0}\n %)\n \n \n Liquidado: R${\" \"}\n {payload[0]?.payload?.liquidado.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.liquidado * 100) / total).toFixed(2)\n : 0}\n %)\n \n
\n ) : (\n <>\n );\n }\n };\n\n return loading ? (\n \n ) : data.filter((i: any) =>\n typeProventos === \"provento\"\n ? i.amortizacao + i.bonds + i.dividendo + i.juros + i.rendimento > 0\n : typeProventos === \"data\"\n ? i.futuro + i.liquidado > 0\n : Object.keys(i)\n .filter((key) => key !== \"name\")\n .reduce((a, c) => a + i[c], 0) > 0\n ).length === 0 ? (\n
\n \"Notificações\"\n

O seu cliente não recebeu proventos neste período

\n
\n ) : (\n \n \n \n \n \n \n {typeProventos === \"provento\" && (\n <>\n {totalJscp > 0 && (\n \n )}\n {totalRendi > 0 && (\n \n )}\n {totalDiv > 0 && (\n \n )}\n {totalAmort > 0 && (\n \n )}\n {totalBonds > 0 && (\n \n )}\n {!isMobile() && (\n \n )}\n \n )}\n {typeProventos === \"corretora\" && (\n <>\n {bars.map((el, index) => {\n return (\n \n );\n })}\n {!isMobile() && (\n \n )}\n \n )}\n {typeProventos === \"data\" && (\n <>\n \n \n {!isMobile() && (\n \n )}\n \n )}\n \n \n );\n};\n","import { Col, Row } from \"antd\";\nimport Button from \"../Button\";\n\ninterface FooterModalProps {\n onCancel: () => void;\n onOk?: () => void;\n}\n\nexport const FooterModal: React.FC = ({ onCancel, onOk }) => {\n return (\n \n \n \n \n \n \n Salvar\n \n \n \n );\n};\n","import { Col, Form, Row } from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport { FooterModal } from \"../FooterModal\";\nimport { DrawerModal } from \"../DrawerModal\";\n\ninterface FormModalProps {\n add: any;\n edit: any;\n title: string;\n onCancel: any;\n itemToEdit: any;\n visibility: boolean;\n rows: any[];\n}\n\nexport const FormModal: React.FC = ({\n add,\n edit,\n rows,\n title,\n onCancel,\n visibility,\n itemToEdit,\n children,\n}) => {\n const [form] = Form.useForm();\n const [, setUpdate] = useState(false);\n\n useEffect(() => {\n if (!visibility) {\n form.resetFields();\n } else if (itemToEdit) {\n setUpdate((update) => !update);\n form.setFieldsValue(itemToEdit);\n }\n }, [visibility, form, itemToEdit]);\n const onValuesChange = (changedValues: any, values: any) => {\n setUpdate((update) => !update);\n const data = {\n ...values,\n ...rows\n .flat()\n .map((input) =>\n typeof input === \"function\" ? input({ data: values }) : input\n )\n .filter((input) => input.onChange)\n .reduce(\n (acc, cur) => ({\n ...acc,\n [cur.name]: cur.onChange?.(changedValues, { ...values, ...acc }),\n }),\n {}\n ),\n };\n const dataEntries = Object.entries(data);\n form.setFields(dataEntries.map(([name, value]) => ({ name, value })));\n form.resetFields(\n dataEntries\n .filter(([, value]) => value === undefined || value === null)\n .map(([name]) => name)\n );\n };\n const onFinish = (data: any) => {\n if (itemToEdit) {\n edit(data);\n } else {\n add(data);\n }\n };\n\n return (\n \n \n {rows.map((row, index) => (\n \n {row\n .map((input: any) =>\n typeof input === \"function\"\n ? input({ data: form.getFieldsValue() })\n : input\n )\n .filter(\n (input: any) =>\n !(\n typeof input.hide === \"function\" &&\n input.hide({ data: form.getFieldsValue() })\n )\n )\n .map((input: any, index: number, array: any[]) => (\n \n \n ))}\n {children}\n \n \n \n );\n};\n","import styled from \"styled-components\";\n\nexport const AvisosContainer = styled.div<{ temPlano: boolean; liberadaContratacao: boolean }>`\n padding: ${({ temPlano }) => (!temPlano ? \"4rem 0 !important\" : \"\")};\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${({ temPlano, liberadaContratacao }) => \n !temPlano ?\n !liberadaContratacao ? 'white !important'\n : '#f8f8f8' : ''};\n transform: ${({ liberadaContratacao, temPlano }) => !temPlano && !liberadaContratacao ? 'translateY(1rem)' : ''};\n\n div:first-of-type {\n /* width: ${({ temPlano }) => (!temPlano ? \"100%\" : \"\")}; */\n max-width: ${({ temPlano, liberadaContratacao }) => (\n !temPlano \n ? liberadaContratacao ? \"500px\" \n : !liberadaContratacao ? \"760px\"\n : \"\" : \"\")};\n }\n .ant-switch-handle {\n width: 20px !important;\n }\n\n .title {\n h3 {\n font-weight: 600;\n }\n }\n .divider {\n width: 100%;\n max-width: 80px !important;\n background-color: var(--ant-primary-color);\n height: 2px;\n margin-bottom: 2rem;\n }\n\n .plan-boxes {\n flex-wrap: nowrap;\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .ant-divider {\n margin: 8px 0;\n }\n\n .ant-btn {\n height: 56px;\n\n span {\n font-weight: 500;\n svg {\n display: none;\n }\n }\n }\n .total-contratado {\n display: none;\n }\n .dismiss {\n cursor: pointer;\n transition: 0.3s;\n &:hover {\n color: var(--ant-primary-7);\n transition: 0.3s;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .ant-card-body {\n padding: 16px;\n }\n }\n`;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.30493 10.9135L6.18925 14.3089M13.5783 7.51808L15.694 10.9135M16.1571 17.0014H11.9995M9.07857 5.00072C9.07857 3.34411 10.3859 2 11.9995 2C13.612 2 14.9204 3.34303 14.9204 5.00072C14.9204 6.65734 13.6131 8.00144 11.9995 8.00144C10.3859 7.99928 9.07857 6.65625 9.07857 5.00072ZM2 16.9993C2 15.3427 3.3073 13.9986 4.9209 13.9986C6.53345 13.9986 7.8418 15.3416 7.8418 16.9993C7.84074 18.6559 6.5345 20 4.9209 20C3.3073 20 2 18.657 2 16.9993ZM16.1582 16.9993C16.1582 15.3427 17.4655 13.9986 19.0791 13.9986C20.6916 13.9986 22 15.3416 22 16.9993C22 18.6559 20.6927 20 19.0791 20C17.4644 20 16.1582 18.657 16.1582 16.9993Z\",\n stroke: \"#0A9E5A\",\n strokeWidth: 1.4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgIconIntegracao(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconIntegracao);\nexport default __webpack_public_path__ + \"static/media/icon-integracao.f59c051d.svg\";\nexport { ForwardRef as ReactComponent };","import { BiGlobe } from \"react-icons/bi\";\nimport { IoIosCalculator } from \"react-icons/io\";\nimport { HiOutlineDocumentReport } from \"react-icons/hi\";\nimport { MdOutlineAlternateEmail, MdDone } from \"react-icons/md\";\nimport { ReactComponent as IntegrationIcon } from \"../../assets/icons/icon-integracao.svg\";\n\ninterface Feature {\n name: string;\n desc?: string;\n icon?: JSX.Element;\n secondaryIcon?: JSX.Element;\n secondaryLabel?: string;\n}\n\nexport enum PlanEnum {\n BASIC_V1 = \"BASIC_V1\",\n PRO_V1 = \"PRO_V1\",\n}\n\nexport interface Plan {\n type: PlanEnum | UserPlanEnum;\n title: string;\n price: number;\n discount: number;\n originalPrice: number;\n includedFeatures: Feature[];\n otherFeatures: Feature[];\n}\n\nexport const OtherFeatures: Feature[] = [\n {\n name: \"Emissão de relatório anual (DASN-MEI)\",\n },\n {\n name: \"Emissão de guias mensais (DAS)\",\n },\n];\n\nexport enum UserPlanEnum {\n VELOTAX_MAIN_BASIC = \"VELOTAX_MAIN_BASIC\",\n VELOTAX_MAIN_BASIC_MONTH = \"VELOTAX_MAIN_BASIC_MONTH\",\n VELOTAX_MAIN_FREE = \"VELOTAX_MAIN_FREE\",\n VELOTAX_MAIN_PRO = \"VELOTAX_MAIN_PRO\",\n VELOTAX_MAIN_PRO_MONTH = \"VELOTAX_MAIN_PRO_MONTH\",\n VELOTAX_MAIN_CONCIERGE = \"VELOTAX_MAIN_CONCIERGE\",\n VELOTAX_MAIN_CONCIERGE_MONTH = \"VELOTAX_MAIN_CONCIERGE_MONTH\",\n XP_BASIC = \"XP_BASIC\",\n XP_BASIC_MONTH = \"XP_BASIC_MONTH\",\n XP_PRO = \"XP_PRO\",\n XP_PRO_MONTH = \"XP_PRO_MONTH\",\n XP_CONCIERGE = \"XP_CONCIERGE\",\n XP_CONCIERGE_MONTH = \"XP_CONCIERGE_MONTH\"\n}\n\nexport interface UserPlan {\n type: UserPlanEnum;\n interval: \"Anual\" | \"Mensal\";\n title: string;\n price: number;\n discount?: number;\n showDiscount: boolean;\n originalPrice: number;\n includedFeatures: Feature[];\n otherFeatures?: Feature[];\n free?: boolean;\n maskValue?: boolean;\n percentDiscount: number;\n descriptions?: any;\n discountText?: string;\n}\n\nexport const UserPlans: UserPlan[] = [\n {\n type: UserPlanEnum.VELOTAX_MAIN_PRO,\n interval: \"Anual\",\n title: \"PREMIUM\",\n showDiscount: true,\n price: 19.9,\n originalPrice: 29.9,\n percentDiscount: 30,\n discountText: \"ou 4 meses grátis\",\n maskValue: true,\n includedFeatures: [\n {\n name: \"Cálculos 100% precisos\",\n icon: ,\n },\n {\n name: \"Conexão oficial com a B3 e com a XP Internacional\",\n icon: ,\n },\n {\n name: \"Emissão de DARFs retroativas sem custo adicional\",\n icon: ,\n },\n {\n name: \"Informes auxiliares de IR em PDF\",\n icon: ,\n },\n ],\n descriptions: [\n {\n label: \"Cálculos automáticos, com multa e juros\",\n checked: true,\n icon: ,\n },\n {\n label: \"Integração com XP Internacional\",\n checked: true,\n icon: ,\n },\n {\n label: \"Integração com B3\",\n checked: true,\n icon: ,\n },\n ],\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_PRO_MONTH,\n title: \"PREMIUM\",\n interval: \"Mensal\",\n showDiscount: true,\n price: 29.9,\n originalPrice: 29.9,\n percentDiscount: 0,\n maskValue: true,\n includedFeatures: [\n {\n name: \"Cálculos 100% precisos\",\n icon: ,\n },\n {\n name: \"Conexão oficial com a B3 e com a XP Internacional\",\n icon: ,\n },\n {\n name: \"Emissão de DARFs retroativas sem custo adicional\",\n icon: ,\n },\n {\n name: \"Informes auxiliares de IR em PDF\",\n icon: ,\n },\n ],\n descriptions: [\n {\n label: \"Cálculos automáticos, com multa e juros\",\n checked: true,\n icon: ,\n },\n {\n label: \"Integração com XP Internacional\",\n checked: true,\n icon: ,\n },\n {\n label: \"Integração com B3\",\n checked: true,\n icon: ,\n },\n ],\n },\n];\n\nexport const Plans: Plan[] = [\n {\n type: PlanEnum.BASIC_V1,\n title: \"basic\",\n price: 29.9,\n discount: 75,\n originalPrice: 119.9,\n includedFeatures: [\n {\n name: \"Emissão de DASN ilimitados\",\n icon: ,\n },\n {\n name: \"Suporte por e-mail\",\n icon: ,\n },\n ],\n otherFeatures: OtherFeatures.slice(0, 1),\n },\n {\n type: PlanEnum.PRO_V1,\n title: \"plus\",\n price: 39.9,\n discount: 75,\n originalPrice: 149.9,\n includedFeatures: [\n {\n name: \"Emissão de DAS e DASN ilimitados\",\n icon: ,\n },\n {\n name: \"Suporte por e-mail\",\n icon: ,\n },\n ],\n otherFeatures: OtherFeatures,\n },\n];\n","import { HasPlan } from \".\";\nimport { UserPlanEnum } from \"../../constants/plans\";\n\nexport const planos = [\n {\n type: UserPlanEnum.VELOTAX_MAIN_BASIC,\n name: \"Basic\",\n price: 19.9,\n originalPrice: 19.9,\n installments: 12,\n for: \"Pra quem começou a investir agora\",\n includes: \"Basic inclui:\",\n benefits: [\n \"Cálculos automáticos de IR\",\n \"Emissão de DARF do mês corrente\",\n ],\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_BASIC_MONTH,\n name: \"Basic\",\n price: 39.9,\n originalPrice: 39.9,\n installments: 12,\n for: \"Pra quem começou a investir agora\",\n includes: \"Basic inclui:\",\n benefits: [\n \"Cálculos automáticos de IR\",\n \"Emissão de DARF do mês corrente\",\n ],\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_PRO,\n name: \"Premium\",\n price: 59.9,\n originalPrice: 59.9,\n installments: 12,\n for: \"Pra quem investe com maior frequência\",\n includes: \"Tudo do Basic, mais:\",\n benefits: [\n \"Informes de rendimento em PDF\",\n \"DARFs retroativos ilimitados\",\n \"Carteira de investimentos atualizada\",\n \"Notificações de dividendos\",\n \"Isentômetro de impostos\",\n ],\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_PRO_MONTH,\n name: \"Premium\",\n price: 79.9,\n originalPrice: 79.9,\n installments: 12,\n for: \"Pra quem investe com maior frequência\",\n includes: \"Tudo do Basic, mais:\",\n benefits: [\n \"Informes de rendimento em PDF\",\n \"DARFs retroativos ilimitados\",\n \"Carteira de investimentos atualizada\",\n \"Notificações de dividendos\",\n \"Isentômetro de impostos\",\n ],\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_CONCIERGE,\n name: \"Concierge\",\n price: 79.9,\n originalPrice: 79.9,\n installments: 12,\n for: \"Pra quem não quer ter nenhum trabalho\",\n includes: \"Tudo do Premium, mais:\",\n benefits: [\n \"Especialista dedicado para você\",\n \"DARFs revisadas por profissional\",\n \"Contato por WhatsApp exclusivo\",\n ],\n popular: true,\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_CONCIERGE_MONTH,\n name: \"Concierge\",\n price: 99.9,\n originalPrice: 99.9,\n installments: 12,\n for: \"Pra quem não quer ter nenhum trabalho\",\n includes: \"Tudo do Premium, mais:\",\n benefits: [\n \"Especialista dedicado para você\",\n \"DARFs revisadas por profissional\",\n \"Contato por WhatsApp exclusivo\",\n ],\n popular: true,\n },\n];\n\nexport enum UserPlanUpgradeEnum {\n BASIC_TO_PRO = \"BASIC_TO_PRO\",\n BASIC_TO_CONCIERGE = \"BASIC_TO_CONCIERGE\",\n PRO_TO_CONCIERGE = \"PRO_TO_CONCIERGE\",\n}\n\nexport const planUpgrade = {\n [UserPlanUpgradeEnum.BASIC_TO_PRO]: 40,\n [UserPlanUpgradeEnum.BASIC_TO_CONCIERGE]: 60,\n [UserPlanUpgradeEnum.PRO_TO_CONCIERGE]: 20,\n};\n\nexport const getPlanPrice = (\n plan: { price: number; type: UserPlanEnum },\n hasPlan: false | HasPlan\n) =>\n !hasPlan\n ? plan?.price\n : hasPlan.premium && plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? planUpgrade[UserPlanUpgradeEnum.PRO_TO_CONCIERGE]\n : hasPlan.basic && plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO\n ? planUpgrade[UserPlanUpgradeEnum.BASIC_TO_PRO]\n : hasPlan.basic && plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? planUpgrade[UserPlanUpgradeEnum.BASIC_TO_CONCIERGE]\n : plan?.price;\n\nexport const getPlanOriginalPrice = (\n plan: { originalPrice: number; type: UserPlanEnum },\n hasPlan: false | HasPlan\n) =>\n !hasPlan\n ? plan?.originalPrice\n : hasPlan.premium && plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? planUpgrade[UserPlanUpgradeEnum.PRO_TO_CONCIERGE]\n : hasPlan.basic && plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO\n ? planUpgrade[UserPlanUpgradeEnum.BASIC_TO_PRO]\n : hasPlan.basic && plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? planUpgrade[UserPlanUpgradeEnum.BASIC_TO_CONCIERGE]\n : plan?.originalPrice;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n &.velotax-container {\n .velotax-content {\n width: 1032px;\n max-width: 760px;\n h1.page-title {\n font-size: 28px;\n margin-bottom: 1rem;\n margin-left: 0;\n text-align: left;\n display: flex;\n align-items: center;\n button {\n margin-right: 0.5rem;\n color: var(--velotax-font-color);\n svg {\n font-size: 24px;\n transform: translateY(2px);\n }\n }\n }\n .divider {\n width: 100%;\n max-width: 80px !important;\n background-color: var(--ant-primary-color);\n height: 2px;\n margin-bottom: 2rem;\n }\n .subtitle {\n font-size: 16px;\n color: var(--velotax-font-color);\n }\n .trustpilot-trustbox-widget {\n margin: 32px 0 32px -16px;\n width: calc(100% + 32px);\n }\n .selos {\n display: flex;\n margin: 0 0 48px;\n .selo {\n display: flex;\n padding: 0 24px;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n width: calc(100% / 3);\n .ant-typography {\n display: block;\n margin-top: 8px;\n font-size: 16px;\n line-height: 20px;\n text-align: center;\n font-size: 13px;\n .anticon {\n margin-left: 5px;\n vertical-align: -0.2em;\n }\n strong {\n display: block;\n font-weight: 700;\n color: rgb(0, 204, 139);\n }\n }\n &.trustpilot {\n .excelente {\n display: block;\n font-size: 18px;\n font-weight: 700;\n margin: 0 0 8px;\n }\n .avaliacoes {\n display: flex;\n height: 24px;\n font-size: 16px;\n margin: 16px 0 10px;\n align-items: center;\n justify-content: center;\n svg {\n margin: 0 0 2px 0;\n }\n }\n }\n }\n }\n }\n }\n\n .divSwitchAnualMonth {\n width: 100%;\n display: flex; \n flex-direction: row; \n gap: 15px;\n color: black;\n justify-content: center;\n }\n\n .switchAnualMonth {\n display: flex;\n margin-bottom: 20px;\n background-color: var(--ant-primary-color);\n }\n\n .hide-plan {\n display: none;\n }\n\n @media only screen and (max-device-width: 812px) {\n &.velotax-container {\n .velotax-content {\n width: 100%;\n .selos {\n flex-direction: column;\n .selo {\n width: 100%;\n padding: 12px 24px;\n }\n }\n }\n }\n }\n`;\n\nexport const PlanosContainer = styled.div<{ isMobile: boolean }>`\n display: flex;\n justify-content: center;\n align-items: ${({ isMobile }) => isMobile ? 'center' : ''};\n\n .plan {\n padding: 13px;\n overflow: hidden;\n margin-left: 1.5rem;\n position: relative;\n border-radius: 8px;\n width: calc((100% - 16px) / 3);\n background-color: white;\n width: 100px;\n flex-grow: 1;\n max-width: 236px !important;\n box-shadow: 0 1px 10px 1px rgba(0,0,0, 0.15);\n :first-of-type {\n margin-left: 0;\n }\n .plan-name {\n font-size: 20px;\n font-weight: 700;\n line-height: 28px;\n text-align: center;\n margin-bottom: 0;\n color: var(--velotax-font-color);\n }\n .plan-price {\n text-align: center;\n position: relative;\n font-size: 24px;\n font-weight: 700;\n line-height: 20px;\n margin-bottom: 4px;\n color: var(--velotax-font-color);\n .plan-price-main {\n font-size: 48px;\n font-weight: 700;\n line-height: 20px;\n letter-spacing: -1.92px;\n }\n\n .plus {\n margin-right: 4px;\n position: absolute;\n left: 1rem;\n bottom: 0;\n }\n }\n\n .price-crossed-off {\n position: absolute;\n font-size: 16px;\n font-weight: 700;\n color: var(--ant-primary-color);\n left: 22%;\n top: 18%;\n }\n\n .price-crossed-off-discount {\n position: absolute;\n font-size: 12px;\n color: var(--ant-primary-color);\n left: 56%;\n top: 18.5%;\n }\n\n .crossed-off {\n position: absolute;\n left: 21%;\n top: 20.1%;\n height: 1px;\n width: 75px;\n background-color: var(--ant-primary-color);\n }\n\n .plan-price-desc {\n display: block;\n font-size: 12px;\n font-weight: 400;\n line-height: 20px;\n text-align: center;\n margin-bottom: 2rem;\n color: var(--velotax-font-color);\n }\n .plan-for {\n width: 100%;\n display: block;\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n text-align: center;\n margin: 4px auto 2.5rem;\n color: var(--velotax-font-color-ghost);\n }\n .plan-includes {\n display: block;\n margin: 24px 0 0;\n font-size: 12px;\n font-weight: 600;\n line-height: 16px;\n color: var(--velotax-font-color);\n }\n .plan-benefits {\n .plan-benefit {\n display: flex;\n font-size: 11px;\n font-weight: 400;\n line-height: 16px;\n margin-top: 2px;\n color: var(--velotax-font-color-ghost);\n svg {\n width: 16px;\n height: 16px;\n min-width: 16px;\n min-height: 16px;\n margin-right: 4px;\n }\n svg.check {\n fill: var(--ant-success-color);\n }\n .info {\n width: 12px;\n height: 12px;\n margin: 2px 0 0 4px;\n color: var(--velotax-font-color);\n cursor: pointer;\n svg {\n width: 12px;\n height: 12px;\n min-width: 12px;\n min-height: 12px;\n margin-right: 0;\n }\n }\n .ant-tooltip-inner {\n background-color: rgba(0, 0, 0, 0.9);\n }\n }\n }\n .plan-popular {\n top: 0;\n right: 0;\n width: 150px;\n height: 20px;\n display: flex;\n font-size: 10px;\n font-weight: 700;\n line-height: 16px;\n position: absolute;\n color: var(--white);\n align-items: center;\n justify-content: center;\n text-transform: uppercase;\n background-color: var(--ant-primary-color);\n transform: rotateZ(40deg) translateX(44px) translateY(-13px);\n }\n\n .ant-tooltip-inner {\n padding: 10px 15px;\n top: 0;\n display: inline-block;\n border-radius: 10px;\n border-bottom-right-radius: 0px;\n z-index: 2;\n max-width: 200px;\n box-shadow: none;\n word-wrap: break-word;\n }\n }\n\n .discount {\n .plus {\n left: 0.25rem !important;\n }\n }\n @media only screen and (max-device-width: 812px) {\n flex-direction: column;\n .plan {\n width: 100%;\n margin: 0 0 8px;\n }\n }\n`;\n","import { Focused } from \"react-credit-cards\";\nimport { Form, message, Spin } from \"antd\";\nimport React, {\n Dispatch,\n SetStateAction,\n useEffect,\n useState,\n useMemo,\n} from \"react\";\nimport Footer from \"./components/Footer\";\nimport { CardForm } from \"./components/CardForm\";\nimport AddressForm from \"./components/AddressForm\";\nimport { ResultScreen } from \"./components/ResultScreen\";\nimport api from \"../../../../services/api\";\nimport { removeSpecialCharacters } from \"../../../../utils\";\nimport { IClient, useClients } from \"../../../../contexts/ClientsContext\";\nimport { Plan as IPlan, UserPlan } from \"../../../../constants/plans\";\nimport { PendingScreen } from \"./components/ResultScreen/components/PendingScreen\";\nimport { useAuth } from \"../../../../contexts/AuthContext\";\nimport { ICreatePaymentXPPro } from \"..\";\n\nexport enum ETypePurchase {\n MEI = \"MEI\",\n UNIQUE = \"UNIQUE\",\n VELOTAX_MAIN_BASIC = \"VELOTAX_MAIN_BASIC\",\n VELOTAX_MAIN_BASIC_MONTH = \"VELOTAX_MAIN_BASIC_MONTH\",\n VELOTAX_MAIN_PRO = \"VELOTAX_MAIN_PRO\",\n VELOTAX_MAIN_PRO_MONTH = \"VELOTAX_MAIN_PRO_MONTH\",\n VELOTAX_MAIN_CONCIERGE = \"VELOTAX_MAIN_CONCIERGE\",\n VELOTAX_MAIN_CONCIERGE_MONTH = \"VELOTAX_MAIN_CONCIERGE_MONTH\",\n}\n\ninterface ICreditCardStepProps {\n status: string;\n initialized: boolean;\n handleBack?: () => void;\n typePurchase: ETypePurchase;\n handleSuccess?: (res: any) => void;\n setInitialized: Dispatch>;\n handleClosableModal: Dispatch>;\n plan?: IPlan | UserPlan;\n darfData?: any;\n getCardCurrentStep?: (value: number) => void;\n handleIdBack?: (event: any) => void;\n customInstallments?: number;\n backToRoot?: () => void;\n clientSelected?: IClient;\n createPlanXPPro: (body: ICreatePaymentXPPro) => void \n}\n\nexport const CreditCardStep: React.FC = ({\n plan,\n handleBack,\n handleClosableModal,\n typePurchase,\n darfData,\n handleSuccess,\n handleIdBack,\n customInstallments,\n backToRoot,\n clientSelected,\n createPlanXPPro\n}) => {\n const { selectedClient } = useClients();\n const { user } = useAuth();\n const [cardForm] = Form.useForm();\n const [addressForm] = Form.useForm();\n\n const [cvc, setCvc] = useState(\"\");\n const [name, setName] = useState(\"\");\n const [phone, setPhone] = useState(\"\");\n const [status] = useState(\"\");\n const [number, setNumber] = useState(\"\");\n const [expiry, setExpiry] = useState(\"\");\n const [focused, setFocused] = useState();\n const [holderDocument, setHolderDocument] = useState(\"\");\n const [installments, setInstallments] = useState(1);\n\n const [loading, setLoading] = useState(false);\n const [currentStep, setCurrentStep] = useState(0);\n const [isValidCardForm, setIsValidCardForm] = useState(false);\n const [isValidAddressForm, setIsValidAddressForm] = useState(false);\n\n const isPlan = useMemo(() => {\n return [\n \"VELOTAX_MAIN_BASIC\",\n \"VELOTAX_MAIN_BASIC_MONTH\",\n \"VELOTAX_MAIN_PRO\",\n \"VELOTAX_MAIN_PRO_MONTH\",\n \"VELOTAX_MAIN_CONCIERGE\",\n \"VELOTAX_MAIN_CONCIERGE_MONTH\",\n ].includes(plan?.type || \"\");\n }, [plan]);\n\n const value = useMemo(() => {\n if (isPlan) return plan && plan?.price * 12;\n return darfData?.impostoTotalFinal;\n }, [darfData?.impostoTotalFinal, plan, isPlan]);\n\n useEffect(() => {\n if (currentStep < 0) {\n if (handleBack) handleBack();\n }\n }, [currentStep, handleBack]);\n\n const handleCreatePlanXPPro = () => {\n const addressInfo = addressForm.getFieldsValue();\n const monthExp = expiry?.split(\"/\")?.[0];\n const monthYear = expiry?.split(\"/\")?.[1];\n const body = {\n cardInfo: {\n line_1: `${addressInfo?.neighborhood} - ${addressInfo?.street} - ${addressInfo?.number}`,\n zip_code: addressInfo?.cep?.replace(\"-\", \"\"),\n city: addressInfo?.city,\n state: addressInfo?.state.toUpperCase(),\n holder_name: removeSpecialCharacters(name),\n number,\n exp_month: monthExp,\n exp_year: monthYear,\n holderDocument,\n cvv: cvc,\n },\n clientInfo: {\n name: user.user.name,\n email: user.user.email,\n document: user.user.username,\n phone,\n isAssessor: true\n },\n paymentForm: \"credit_card\",\n from: \"XP\",\n installments: 12,\n }\n\n createPlanXPPro(body)\n\n\n // setLoading(true);\n // handleClosableModal(false);\n\n // api\n // .post(url, {\n // ...darfData,\n // type: plan?.type,\n // paymentForm: \"credit_card\",\n // installments: 12,\n // clientUserId: selectedClient?._id,\n // cardInfo: {\n // line_1: `${addressInfo?.neighborhood} - ${addressInfo?.street} - ${addressInfo?.number}`,\n // zip_code: addressInfo?.cep?.replace(\"-\", \"\"),\n // city: addressInfo?.city,\n // state: addressInfo?.state.toUpperCase(),\n // holder_name: removeSpecialCharacters(name),\n // number,\n // exp_month: monthExp,\n // exp_year: monthYear,\n // holderDocument,\n // cvv: cvc,\n // },\n // clientInfo: {\n // name: user.user.name,\n // email: user.user.email,\n // document: user.user.username,\n // phone,\n // },\n // })\n // .then((res: any) => {\n // if (res.data.paymentId || res.data.paymentRecurringId)\n // handleSuccess && handleSuccess(res.data);\n // setCurrentStep(3);\n // })\n // .catch((err) => {\n // message.error(err.response?.data?.message);\n // })\n // .finally(() => {\n // setLoading(false);\n // handleClosableModal(true);\n // });\n };\n const createUniquePayment = () => {\n const addressInfo = addressForm.getFieldsValue();\n\n let url = \"/darf\";\n const monthExp = expiry?.split(\"/\")?.[0];\n const monthYear = expiry?.split(\"/\")?.[1];\n\n setLoading(true);\n handleClosableModal(false);\n\n api\n .post(url, {\n ...darfData,\n paymentForm: \"credit_card\",\n clientUserId: selectedClient?._id,\n paymentInfo: {\n installments: installments,\n cardInfo: {\n line_1: `${addressInfo?.neighborhood} - ${addressInfo?.street} - ${addressInfo?.number}`,\n zip_code: addressInfo?.cep?.replace(\"-\", \"\"),\n city: addressInfo?.city,\n state: addressInfo?.state.toUpperCase(),\n holder_name: removeSpecialCharacters(name),\n number,\n exp_month: monthExp,\n exp_year: monthYear,\n cvv: cvc,\n },\n clientInfo: {\n name: user.user.name,\n email: user.user.email,\n document: user.user.username,\n phone,\n },\n },\n })\n .then((res: any) => {\n setCurrentStep(2);\n })\n .catch((err) => {\n message.error(err.response?.data?.message);\n })\n .finally(() => {\n setLoading(false);\n handleClosableModal(true);\n });\n };\n\n const handleNextStep = () => {\n if (currentStep === 0) {\n setCurrentStep(1);\n } else if (currentStep === 1) {\n if (typePurchase === \"UNIQUE\") {\n createUniquePayment();\n } else if (\n [\n \"VELOTAX_MAIN_BASIC\",\n \"VELOTAX_MAIN_BASIC_MONTH\",\n \"VELOTAX_MAIN_PRO\",\n \"VELOTAX_MAIN_PRO_MONTH\",\n \"VELOTAX_MAIN_CONCIERGE\",\n \"VELOTAX_MAIN_CONCIERGE_MONTH\",\n ].includes(typePurchase)\n ) {\n handleCreatePlanXPPro();\n }\n }\n };\n\n const getConditionToDisable = () => {\n switch (currentStep) {\n case 0:\n return !isValidCardForm;\n case 1:\n return !isValidAddressForm;\n default:\n return false;\n }\n };\n\n const changeInstallments = (value: any) => {\n setInstallments(value);\n };\n\n return (\n
\n \n {currentStep === 0 && (\n <>\n \n \n )}\n\n {currentStep === 1 && (\n \n )}\n\n {currentStep === 2 && (\n \n )}\n\n {currentStep === 3 && }\n \n \n
\n );\n};\n\nexport default CreditCardStep;\n","import axios from \"axios\";\n\nexport const apiPayment = axios.create({\n baseURL:\n process.env.REACT_APP_MS_PAYMENT_URL ||\n \"http://localhost:4000\",\n headers: {\n \"x-api-provider\": \"pro-xp\",\n },\n});\n","import { Col, Row, Typography } from \"antd\";\nimport React, { Dispatch, SetStateAction } from \"react\";\nimport Button from \"../../../../../Button\";\n\ninterface IFooterProps {\n currentStep: number;\n handleProceed: () => void;\n getConditionToDisable: () => boolean;\n setCurrentStep: Dispatch>;\n typePurchase: string;\n hideTerms: boolean;\n backtoRoot?: any;\n}\n\nconst Footer: React.FC = ({\n currentStep,\n setCurrentStep,\n handleProceed,\n getConditionToDisable,\n typePurchase,\n hideTerms,\n backtoRoot,\n}) => {\n return (\n <>\n \n {currentStep !== 2 && !hideTerms && (\n \n \n Ao realizar o pagamento você concorda com as{\" \"}\n \n Condições gerais de venda\n {\" \"}\n .\n \n \n )}\n \n {currentStep !== 2 && currentStep !== 3 && \n \n {currentStep === 0\n ? \"PROSSEGUIR\"\n : typePurchase === \"UNIQUE\"\n ? \"FINALIZAR PAGAMENTO\"\n : \"FINALIZAR COMPRA\"}\n \n }\n {currentStep <= 1 && \n {\n if (currentStep === 0) {\n backtoRoot();\n return;\n }\n setCurrentStep((step) => step - 1);\n }}\n >\n VOLTAR\n \n }\n \n );\n};\n\nexport default Footer;\n","import Payment from \"payment\";\nimport Masked from \"react-input-mask\";\nimport React, { useMemo, useState } from \"react\";\nimport { Focused } from \"react-credit-cards\";\nimport NumberFormat from \"react-number-format\";\nimport { Col, Form, FormInstance, Input, Row } from \"antd\";\nimport { cnpjInputMask, cpfInputMask } from \"../../../../../../utils\";\nimport {\n validationCardShelfLife,\n validationCpf,\n validationCpfCnpj,\n validationCreditCardNumber,\n validationCVV,\n validationFieldRequired,\n validationPhoneRequired,\n} from \"../../../../../../utils/formValidations\";\n\ninterface ICardFormProps {\n number: string;\n focused?: Focused;\n form: FormInstance;\n uniqueValue?: number;\n setCvc: (cvc: string) => void;\n setName: (name: string) => void;\n setPhone: (value: string) => void;\n setNumber: (number: string) => void;\n setExpiry: (expiry: string) => void;\n setFocused: (focused: Focused) => void;\n setHolderDocument: (value: string) => void;\n setIsValidCardForm: (isValidCardForm: boolean) => void;\n handleBack: (event: any) => void;\n fixedInstallments?: number;\n signature?: boolean;\n installmentSelected?: number;\n customInstallments?: number;\n}\n\nexport const CardForm: React.FC = ({\n form,\n number,\n setCvc,\n setName,\n setPhone,\n setNumber,\n setExpiry,\n setFocused,\n setHolderDocument,\n setIsValidCardForm,\n uniqueValue,\n fixedInstallments,\n handleBack,\n signature,\n installmentSelected,\n customInstallments,\n}) => {\n const [inputType, setInputType] = useState<'cpf' | 'cnpj'>('cnpj');\n const cardType = useMemo(() => Payment.fns.cardType(number), [number]);\n\n // let installments = useMemo(\n // () =>\n // getInstallmentsListByPrice(\n // uniqueValue || 0,\n // !!signature,\n // fixedInstallments\n // ),\n // [signature, fixedInstallments, uniqueValue]\n // );\n\n const onValuesChange = (changed: any, values: any) => {\n setCvc(values.cvv ?? \"\");\n setExpiry(values.expiry ?? \"\");\n setName(values.holderName ?? \"\");\n setHolderDocument(values.cpf?.replace(/[_.-]/g, \"\") ?? \"\");\n setPhone(values.phone?.replace(/[()_-]/g, \"\").replace(\" \", \"\") ?? \"\");\n const key = Object.keys(changed)[0];\n setFocused(\n (key === \"holderName\" ? \"name\" : key === \"cvv\" ? \"cvc\" : key) as Focused\n );\n form.setFieldsValue({\n ...values,\n cpf: values.cpf?.replace(/[_.-]/g, \"\") ?? \"\",\n phone: values.phone?.replace(/[()_-]/g, \"\").replace(\" \", \"\") ?? \"\",\n installments: 12,\n });\n\n setTimeout(() => {\n form\n .validateFields()\n .then(() => {\n setIsValidCardForm(true);\n })\n .catch(() => {\n setIsValidCardForm(false);\n });\n }, 500);\n };\n\n return (\n <>\n \n \n \n \n {\n (e.target as HTMLElement).setAttribute(\"pasted\", \"true\");\n const value = e.clipboardData.getData(\"text/plain\");\n setNumber(value);\n }}\n onChange={(e: any) => {\n if ((e.target as HTMLElement).getAttribute(\"pasted\")) {\n (e.target as HTMLElement).removeAttribute(\"pasted\");\n } else {\n setNumber(e.target.value);\n }\n }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n const value = (a.data.length > 1 ? a.data : a.target.value)\n .replaceAll(\".\", \"\")\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\n .replaceAll(\"/\", \"\");\n const length = a.data.length > 1 ? value.length - 1 : value.length\n if (length < 11) {\n setInputType(\"cpf\");\n } else {\n setInputType(\"cnpj\");\n }\n }}\n placeholder=\"CPF/CNPJ do titular\"\n className=\"ant-input ant-input-lg\" />\n \n \n \n \n \n \n \n \n \n \n );\n};\n","import axios from \"axios\";\n\nconst cep = axios.create({\n method: \"GET\",\n baseURL: \"https://viacep.com.br/ws/\",\n});\n\nexport default cep;\n","import React from \"react\";\nimport NumberFormat from \"react-number-format\";\nimport { Col, Form, FormInstance, Input, Row } from \"antd\";\nimport cep from \"../../../../../../services/cep\";\nimport {\n validationCep,\n validationFieldRequired,\n validationStateAddress,\n} from \"../../../../../../utils/formValidations\";\n\ninterface IAddressFormProps {\n form: FormInstance;\n setLoading: (loading: boolean) => void;\n setIsValidAddressForm: (isValidAddressForm: boolean) => void;\n}\n\nconst AddressForm: React.FC = ({\n form,\n setLoading,\n setIsValidAddressForm,\n}) => {\n const getAddressSuggestion = (value: string) => {\n if (value?.length === 8) {\n setLoading(true);\n cep\n .get(`${value}/json`)\n .then((res) => {\n const data = res.data;\n\n if (data.cep) {\n form.setFieldsValue({\n street: data.logradouro,\n neighborhood: data.bairro,\n city: data.localidade,\n state: data.uf,\n });\n } else {\n throw Error();\n }\n })\n .catch(() => {\n form.setFieldsValue({\n street: undefined,\n neighborhood: undefined,\n city: undefined,\n state: undefined,\n number: undefined,\n });\n })\n .finally(() => {\n onFieldsChange();\n setLoading(false);\n });\n }\n };\n\n const onFieldsChange = () => {\n form\n .validateFields()\n .then(() => setIsValidAddressForm(true))\n .catch(() => setIsValidAddressForm(false));\n };\n\n return (\n <>\n \n \n \n \n getAddressSuggestion(value?.value)}\n />\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AddressForm;\n","import React from \"react\";\nimport { BiErrorAlt } from \"react-icons/bi\";\nimport { Col, Row, Typography } from \"antd\";\nimport Button from \"../../../../../../../Button\";\n\ninterface IErrorScreenProps {\n setCurrentStep: (currentStep: number) => void;\n}\n\nexport const ErrorScreen: React.FC = ({\n setCurrentStep,\n}) => {\n const callBack = (cb: Function) => {\n setCurrentStep(0);\n setTimeout(() => cb(), 200);\n };\n\n return (\n \n \n \n \n\n \n \n Ocorreu um erro durante a confirmação do pagamento.\n \n \n\n {\n callBack(() => {});\n }}\n >\n Escolher outra forma de pagamento\n \n \n );\n};\n","import React from \"react\";\nimport { MdCheck } from \"react-icons/md\";\nimport { Col, Row, Typography } from \"antd\";\nimport { Plan } from \"../../../../../../../../constants/plans\";\n\ninterface ConfirmedScreenProps {\n plan?: Plan;\n}\n\nexport const ConfirmedScreen: React.FC = ({ plan }) => {\n // useEffect(() => {\n // getIntegrationStatus({ token, hideLoading: true });\n // }, [getIntegrationStatus, token]);\n\n return (\n \n \n \n \n \n \n {plan\n ? `Pagamento confirmado com sucesso Parabéns você contratou o plano '\n ${plan?.title.toUpperCase()}'`\n : \"Pagamento realizado com sucesso\"}\n \n \n \n );\n};\n","import React, { Dispatch, SetStateAction } from \"react\";\nimport { ErrorScreen } from \"./components/ErrorScreen\";\nimport { Plan } from \"../../../../../../constants/plans\";\nimport { ConfirmedScreen } from \"./components/ConfirmScreen\";\n\ninterface IResultScreen {\n plan?: Plan;\n setCurrentStep: Dispatch>;\n status?: string;\n}\n\nexport const ResultScreen: React.FC = ({\n plan,\n setCurrentStep,\n status = \"pending\",\n}) => {\n return (\n <>\n {status === \"active\" ? (\n \n ) : (\n \n )}\n \n );\n};\n","import React from \"react\";\nimport { Col, Row, Typography } from \"antd\";\nimport { BsClockHistory } from \"react-icons/bs\";\n\ninterface IPendingScreenProps {}\n\nexport const PendingScreen: React.FC = () => {\n const getMessage = () =>\n \"Aguardando confirmação de pagamento no cartão, assim que confirmado o plano será ativado automaticamente.\";\n\n return (\n \n \n \n \n\n \n \n {getMessage()}\n \n \n \n );\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { Col, Row, Typography, Spin, message } from \"antd\";\nimport Button from \"../../../Button\";\nimport { formatCurrency } from \"../../../../utils\";\nimport api from \"../../../../services/api\";\nimport { useClients } from \"../../../../contexts/ClientsContext\";\nimport { useAuth } from \"../../../../contexts/AuthContext\";\nimport { CopyText } from \"./components/CopyText\";\nimport { getPlanPrice, planos } from \"../../../Planos/planos\";\nimport { Plan as IPlan, UserPlan, UserPlanEnum } from \"../../../../constants/plans\";\n\nvar getStatus: NodeJS.Timeout;\n\ninterface PixStepProps {\n paymentData: any;\n handleIdBack?: (event: any) => void;\n onSucess?: (event: any) => void;\n backStep?: () => void;\n clientUsername: any,\n type: any,\n setStep: any,\n onCancel: any,\n plan?: IPlan | UserPlan;\n filters?: any\n}\n\nenum EPlanStep {\n CHOOSE_PAYMENT = \"CHOOSE_PAYMENT\",\n PIX_PAYMENT = \"PIX_PAYMENT\",\n CC_PAYMENT = \"CC_PAYMENT\",\n PAYMENT_LINK= \"PAYMENT_LINK\",\n LOADING = \"LOADING\",\n FINISHED = \"FINISHED\",\n}\n\nconst pixTaxesByInsitution: Record = {\n \"imoveis-velotax\": 350,\n \"rendimentos-velotax\": 9.9,\n \"bolsa-velotax\": 9.9,\n \"exterior-velotax\": 9.9,\n \"crypto-velotax\": 9.9,\n};\n\nexport const PixStep: React.FC = ({\n paymentData,\n handleIdBack,\n onSucess,\n backStep,\n clientUsername,\n type,\n setStep,\n onCancel,\n plan,\n filters\n}) => {\n const { selectedClient, getClients, setSelectedClient } = useClients();\n const [loading, setLoading] = useState(false);\n const [brCode, setBrCode] = useState('');\n const [qrCode, setQrCode] = useState('');\n const provider = paymentData.isPlan ? \"pagarme\" : \"starkbank\";\n const { user } = useAuth();\n\n useEffect(() => {\n if (provider === \"pagarme\") {\n createPlanXPPro();\n }\n // eslint-disable-next-line\n }, []);\n\n const checkWasPaid = useCallback(\n (delay: number = 2) => {\n let attempts = 0;\n getStatus = setInterval(async () => {\n api\n .post(`/plans/checkWasPaidPix`, {username: clientUsername})\n .then(async (res) => {\n if (res.data?.payed) {\n clearInterval(getStatus);\n message.success(\"Pagamento Confirmado com sucesso!\")\n setStep(EPlanStep.FINISHED);\n const { clients } = await getClients({...(filters || {})});\n const client = selectedClient;\n const newClient = clients.find((c: any) => c.username === client?.username);\n setSelectedClient(null);\n setTimeout(() => {\n setSelectedClient(newClient);\n }, 300);\n }\n })\n .finally(() => {\n attempts += 1;\n if (attempts > 100) {\n clearInterval(getStatus);\n }\n });\n }, delay * 1000);\n },\n []\n );\n\n useEffect(() => {\n // return () => getStatus && clearInterval(getStatus);\n }, [checkWasPaid]);\n\n const createPlanXPPro = () => {\n const body = {\n clientUsername,\n type,\n from: \"XP\",\n planUpgrade: paymentData.planUpgrade || false,\n isPlan: true,\n acceptTerms: true,\n clientInfo: {\n name: user.user.name,\n email: user.user.email,\n document: user.user.username,\n isAssessor: true\n },\n paymentForm: 'pix',\n };\n setLoading(true);\n api\n .post(\"/plans/createPayment\", body)\n .then(async (res) => {\n if (res.data.br_code && res.data.qrCode) {\n setBrCode(res.data.br_code)\n setQrCode(res.data.qrCode)\n checkWasPaid()\n } else {\n message.info(\n \"Seu pagamento ainda não foi processado. Tente novamente mais tarde.\"\n );\n setStep(EPlanStep.CHOOSE_PAYMENT);\n if (onCancel) onCancel();\n }\n })\n .catch(() => {\n message.error(\"Algo deu errado. Tente novamente mais tarde.\");\n setStep(EPlanStep.CHOOSE_PAYMENT);\n paymentData.stopIntervalPix()\n })\n .finally(async () => {\n setLoading(false)\n });\n };\n\n const getDiscount = () => {\n if (paymentData.type === UserPlanEnum.VELOTAX_MAIN_PRO) {\n if (user?.user?.discount! >= 33) return 33.38898164;\n else return user?.user?.discount || 0;\n }\n if (paymentData.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE) {\n if (user?.user?.discount! >= 50) return 50.06257822;\n return user?.user?.discount || 0;\n }\n else return user?.user?.discount || 0\n }\n\n const plano = planos.find(p => p.type === paymentData.type)\n const price = getPlanPrice(plano!, false) ?? 25.9;\n const installments = plano?.installments || 1;\n let totalPrice = price * installments;\n console.log(user.user.discount);\n\n if (user.user.discount && paymentData.type !== UserPlanEnum.VELOTAX_MAIN_BASIC) \n totalPrice -= totalPrice * (getDiscount() / 100);\n const planPrice = totalPrice / installments;\n\n return (\n \n \n \n \n \n Abra o aplicativo do banco em que você possui o PIX cadastrado e\n selecione a opção de escanear QR Code ou PIX copia e cola.{\" \"}\n {paymentData.isPlan && (\n \n \n Plano anual\n \n \n 12x de {formatCurrency(planPrice)} ={\" \"}\n {formatCurrency(planPrice * 12)}\n \n \n )}\n \n \n \n {!qrCode && !qrCode && (\n \n )}\n\n {qrCode && (\n \n )}\n \n \n \n {brCode ? (\n <>\n \n \n {brCode}\n \n \n \n ) : (\n \"\"\n )}\n \n {!paymentData.isPlan && (\n \n \n \n Taxa de serviço:{\" \"}\n {formatCurrency(\n pixTaxesByInsitution?.[paymentData.institution] || 9.9\n )}\n \n \n \n )}\n backStep && backStep()}\n >\n Voltar\n \n \n \n );\n};\n","import { HTMLAttributes } from \"react\";\n\ninterface CopyTextProps extends HTMLAttributes {\n id: string;\n}\n\nexport const CopyText: React.FC = ({ children, ...props }) => {\n const selectText = () => {\n if ((document as any).selection) {\n // Internet Explorer\n const range = (document.body as any).createTextRange?.();\n range?.moveToElementText?.(document.getElementById(props.id)!);\n range?.select();\n } else if (window.getSelection) {\n const range = document.createRange?.();\n range?.selectNode?.(document.getElementById(props.id)!);\n window.getSelection?.()?.removeAllRanges?.();\n window.getSelection?.()?.addRange?.(range);\n }\n };\n\n return (\n {\n selectText();\n props.onClick?.(e);\n }}\n >\n {children}\n \n );\n};\n","import styled from \"styled-components\";\n\nexport const CardContent = styled.div`\n display: flex;\n background-color: transparent;\n align-items: center;\n width: 100%;\n justify-content: center;\n height: 115px;\n border-radius: 7px;\n margin-top: 10px;\n cursor: pointer;\n\n .full-container {\n margin: auto;\n\n .card-number {\n display: flex;\n }\n }\n`;\n\nexport const CardButton = styled.button`\n justify-content: space-between;\n height: auto !important;\n min-height: 53px !important;\n display: flex;\n font-size: ${(isMinimalMobile) =>\n isMinimalMobile ? \"16px\" : \"20px\"} !important;\n font-weight: 600 !important;\n font-family: \"Consolas\", \"Courier\", monospace !important;\n color: var(--velotax-font-color-dark) !important;\n border-radius: 8px !important;\n border: 1px solid var(--ghost) !important;\n box-shadow: 0px 4px 8px var(--ghost) !important;\n transition: 0.3s;\n\n &:hover {\n background-color: var(--ghost);\n transition: 0.3s;\n }\n\n .rccs {\n width: 80px;\n margin: -2px 0 0;\n .rccs__card {\n width: 90px;\n height: 64px;\n margin: 0;\n\n .rccs__card--front {\n padding: 8px;\n box-shadow: none;\n border-radius: 4px;\n background: transparent;\n\n .rccs__card__background,\n .rccs__number,\n .rccs__expiry,\n .rccs__name,\n .rccs__chip {\n display: none;\n }\n\n .rccs__issuer {\n top: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n position: relative;\n background-position: center center;\n }\n }\n .rccs__card--back {\n display: none;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n &.MuiButton-root {\n font-size: 14px !important;\n padding: 6px 16px;\n }\n .rccs {\n width: 48px;\n margin: -2px 0 0 -8px;\n\n .rccs__card {\n width: 64px;\n height: 48px;\n }\n }\n }\n\n .rccs__card--visa .rccs__issuer {\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSIxMDAwLjA0NiIKICAgaGVpZ2h0PSIzMjMuNjUzMDIiCiAgIHZpZXdCb3g9IjAgMCAxMDAwLjA0NiAzMjMuNjUzIgogICBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNTguMzgxIDE2MS4xNTQiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTEgcjEzNzI1IgogICBzb2RpcG9kaTpkb2NuYW1lPSJWaXNhXzIwMDYuc3ZnIj48bWV0YWRhdGEKICAgaWQ9Im1ldGFkYXRhMjMiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUKICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48ZGM6dGl0bGU+PC9kYzp0aXRsZT48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgaWQ9ImRlZnMyMSI+CgkKCQoJCgkKCQoJCgkKPC9kZWZzPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgYm9yZGVyb3BhY2l0eT0iMSIKICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgIGd1aWRldG9sZXJhbmNlPSIxMCIKICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTM2NiIKICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iNzA1IgogICBpZD0ibmFtZWR2aWV3MTkiCiAgIHNob3dncmlkPSJmYWxzZSIKICAgaW5rc2NhcGU6em9vbT0iMC4zNTM1NTMzOSIKICAgaW5rc2NhcGU6Y3g9IjM0LjY5MDg5NyIKICAgaW5rc2NhcGU6Y3k9IjEzMS4xNTQ4MyIKICAgaW5rc2NhcGU6d2luZG93LXg9Ii04IgogICBpbmtzY2FwZTp3aW5kb3cteT0iLTgiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9IkxheWVyXzEiIC8+CjxnCiAgIGlkPSJnNDE1OCIKICAgdHJhbnNmb3JtPSJtYXRyaXgoNC40Mjk5NjMxLDAsMCw0LjQyOTk2MzEsLTgxLjE2NTc4MywtMTA1LjA0NzgzKSI+PHBvbHlnb24KICAgICBwb2ludHM9IjExNi4xNDUsOTUuNzE5IDk3Ljg1OCw5NS43MTkgMTA5LjI5NiwyNC45OTUgMTI3LjU4MiwyNC45OTUgIgogICAgIGlkPSJwb2x5Z29uOSIKICAgICBzdHlsZT0iZmlsbDojMDA1NzlmIiAvPjxwYXRoCiAgICAgZD0ibSAxODIuNDM3LDI2LjcyNCBjIC0zLjYwNywtMS40MzEgLTkuMzI4LC0zLjAxMSAtMTYuNDAyLC0zLjAxMSAtMTguMDU5LDAgLTMwLjc3Niw5LjYzIC0zMC44NTQsMjMuMzk4IC0wLjE1LDEwLjE1OCA5LjEwNSwxNS44IDE2LjAyNywxOS4xODcgNy4wNzUsMy40NjEgOS40OCw1LjcyIDkuNDgsOC44MDUgLTAuMDcyLDQuNzM4IC01LjcxNyw2LjkyMiAtMTAuOTgyLDYuOTIyIC03LjMwMSwwIC0xMS4yMTMsLTEuMTI2IC0xNy4xNTgsLTMuNzYyIGwgLTIuNDA4LC0xLjEzIC0yLjU1OSwxNS44NzYgYyA0LjI4OSwxLjk1NCAxMi4xOTEsMy42ODggMjAuMzk1LDMuNzY0IDE5LjE4OCwwIDMxLjY4LC05LjQ4MSAzMS44MjgsLTI0LjE1MyAwLjA3MywtOC4wNTEgLTQuODE0LC0xNC4yMiAtMTUuMzUsLTE5LjI2MSAtNi4zOTYsLTMuMjM2IC0xMC4zMTMsLTUuNDE4IC0xMC4zMTMsLTguNzI5IDAuMDc1LC0zLjAxIDMuMzEzLC02LjA5MyAxMC41MzMsLTYuMDkzIDUuOTQ1LC0wLjE1MSAxMC4zMTMsMS4yNzggMTMuNjIyLDIuNzA4IGwgMS42NTQsMC43NTEgMi40ODcsLTE1LjI3MiAwLDAgeiIKICAgICBpZD0icGF0aDExIgogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgc3R5bGU9ImZpbGw6IzAwNTc5ZiIgLz48cGF0aAogICAgIGQ9Im0gMjA2Ljc0Miw3MC42NjQgYyAxLjUwNiwtNC4wNjMgNy4zMDEsLTE5Ljc4OCA3LjMwMSwtMTkuNzg4IC0wLjA3NiwwLjE1MSAxLjUwMywtNC4xMzggMi40MDYsLTYuNzcxIGwgMS4yNzgsNi4wOTQgYyAwLDAgMy40NjMsMTYuOTI5IDQuMjE1LDIwLjQ2NSAtMi44NTgsMCAtMTEuNTg4LDAgLTE1LjIsMCBsIDAsMCB6IG0gMjIuNTczLC00NS42NjkgLTE0LjE0NSwwIGMgLTQuMzYyLDAgLTcuNjc2LDEuMjc4IC05LjU1OCw1Ljg2OCBsIC0yNy4xNjMsNjQuODU1IDE5LjE4OCwwIGMgMCwwIDMuMTU5LC04LjcyOSAzLjgzOCwtMTAuNjA5IDIuMTA1LDAgMjAuNzcxLDAgMjMuNDc5LDAgMC41MjUsMi40ODMgMi4xODIsMTAuNjA5IDIuMTgyLDEwLjYwOSBsIDE2LjkzMiwwIC0xNC43NTMsLTcwLjcyMyAwLDAgeiIKICAgICBpZD0icGF0aDEzIgogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgc3R5bGU9ImZpbGw6IzAwNTc5ZiIgLz48cGF0aAogICAgIGQ9Ik0gODIuNTg0LDI0Ljk5NSA2NC42NzUsNzMuMjIyIDYyLjcxOCw2My40NDEgQyA1OS40MDcsNTIuMTU1IDQ5LjAyMywzOS44OTMgMzcuNDM1LDMzLjc5NiBsIDE2LjQwNCw2MS44NDggMTkuMzM4LDAgMjguNzQ0LC03MC42NDkgLTE5LjMzNywwIDAsMCB6IgogICAgIGlkPSJwYXRoMTUiCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICBzdHlsZT0iZmlsbDojMDA1NzlmIiAvPjxwYXRoCiAgICAgZD0ibSA0OC4wNDUsMjQuOTk1IC0yOS40MjIsMCAtMC4zMDEsMS40MjkgYyAyMi45NTEsNS44NjkgMzguMTUxLDIwLjAxNiA0NC4zOTYsMzcuMDIgTCA1Ni4zMjIsMzAuOTQgYyAtMS4wNTMsLTQuNTE3IC00LjI4OSwtNS43OTYgLTguMjc3LC01Ljk0NSBsIDAsMCB6IgogICAgIGlkPSJwYXRoMTciCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICBzdHlsZT0iZmlsbDojZmFhNjFhIiAvPjwvZz4KPC9zdmc+);\n }\n\n .rccs__card--visaelectron .rccs__issuer {\n background-image: url(data:image/png;base64,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);\n }\n\n .rccs__card--hipercard .rccs__issuer {\n background-image: url(data:image/png;base64,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);\n }\n`;\n","import { MdCheck } from \"react-icons/md\";\nimport React, { useState, useEffect } from \"react\";\nimport { Modal, Row, Col, Spin, message, Tooltip } from \"antd\";\nimport Button from \"../../Button\";\nimport { apiPayment } from \"../../../services/payment\";\nimport CreditCardStep, { ETypePurchase } from \"./CreditCardStep\";\nimport { IClient, useClients } from \"../../../contexts/ClientsContext\";\nimport { CardButton } from \"./styles\";\nimport Cards from \"react-credit-cards\";\nimport api from \"../../../services/api\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\nimport { PixStep } from \"./PixStep\";\nimport { PaymentLink } from \"./PaymentLink\";\n\ninterface PaymentModalProps {\n show: boolean;\n onCancel?: () => void;\n paymentData: any;\n callDarf: any;\n hideDarfDownload?: boolean;\n onSucessPix?: (event: any) => void;\n onSucessCreditCard?: (event?: any) => void;\n planCurrent?: any;\n disablePixOption?: boolean;\n disableCreditCardOption?: boolean;\n disableCreditCardMessage?: string;\n customInstallments?: number;\n maxPixValue?: number;\n maxCCValue?: number;\n selectedYear?: number;\n emitting?: boolean;\n clientSelected?: IClient;\n createConciergePlan: React.MouseEventHandler;\n typeConcierge?: string;\n filters?: any\n}\n\nexport interface cardAttributes {\n id: string;\n first_six_digits: string;\n last_four_digits: string;\n brand: string;\n customer_id: string;\n holder_name: string;\n exp_month: number;\n exp_year: number;\n status: string;\n type: string;\n created_at: Date;\n updated_at: Date;\n billing_address: {\n street: string;\n zip_code: string;\n city: string;\n state: string;\n country: string;\n line_1: string;\n };\n}\n\nexport interface ICreatePaymentXPPro {\n cardInfo?:\n | {\n line_1: any;\n zip_code: any;\n city: any;\n state: any;\n holder_name: any;\n number: any;\n exp_month: any;\n exp_year: any;\n holderDocument: any;\n cvv: any;\n }\n | { card_id: string };\n clientInfo:\n | {\n name: any;\n email: any;\n document: any;\n phone?: any;\n isAssessor: boolean;\n }\n | {\n customer_id: string;\n document: string;\n isAssessor: boolean;\n email: string;\n };\n paymentForm?: string;\n installments?: number;\n}\n\ninterface PaymentInfoContentProps {\n content: JSX.Element;\n title?: string;\n amount?: number;\n}\n\nexport interface PaymentDetailsProp {\n value?: number;\n paymentId: string;\n qrCodeLink?: string;\n name?: string;\n}\n\nenum EPlanStep {\n CHOOSE_PAYMENT = \"CHOOSE_PAYMENT\",\n PIX_PAYMENT = \"PIX_PAYMENT\",\n CC_PAYMENT = \"CC_PAYMENT\",\n PAYMENT_LINK= \"PAYMENT_LINK\",\n LOADING = \"LOADING\",\n FINISHED = \"FINISHED\",\n}\n\nlet getStatus: any;\n\nexport const PaymentModal: React.FC = ({\n show,\n onCancel,\n paymentData,\n callDarf,\n hideDarfDownload,\n disableCreditCardOption,\n disableCreditCardMessage,\n onSucessPix,\n planCurrent,\n onSucessCreditCard,\n customInstallments,\n maxPixValue,\n selectedYear,\n emitting = false,\n clientSelected,\n createConciergePlan,\n typeConcierge,\n filters\n}) => {\n const { user } = useAuth();\n const { selectedClient, getClients, setSelectedClient } = useClients();\n const [loading, setLoading] = useState(false);\n const [step, setStep] = useState(EPlanStep.CHOOSE_PAYMENT);\n const [cardList, setCardList] = useState();\n const [disabledConciergeOption] = useState(\n user.user.liberadaContratacao && !user.user.isManager && !user.user.office\n );\n\n const ocultaContratacaoViaFatura = paymentData.planUpgrade\n const desabilitaContratacaoViaPix = !!paymentData.planUpgrade\n const desabilitaContratacaoViaLink = !!paymentData.planUpgrade\n\n useEffect(() => {\n const token = localStorage.getItem(\"@VeloTax:token\");\n if (!token) message.error(\"Token não encontrado. Recarregue sua página\");\n else if (\n !cardList &&\n step === EPlanStep.CHOOSE_PAYMENT &&\n !disableCreditCardOption\n ) {\n setLoading(true);\n apiPayment\n .get(\"/pro/list-card\", {\n headers: { Authorization: `Bearer ${token}` },\n })\n .then((res) => {\n setCardList(res?.data?.list || []);\n })\n .catch(() => {})\n .finally(() => setLoading(false));\n }\n }, [step, cardList, disableCreditCardOption]);\n\n const createPlanXPPro = (data: ICreatePaymentXPPro) => {\n const body = {\n clientUsername: clientSelected?.username,\n type: planCurrent?.type,\n from: \"XP\",\n planUpgrade: paymentData.planUpgrade || false,\n isPlan: true,\n acceptTerms: true,\n ...data,\n };\n setLoading(true);\n setStep(EPlanStep.LOADING);\n api\n .post(\"/plans/createPayment\", body)\n .then(async (res) => {\n if (res.data.payed) {\n setStep(EPlanStep.FINISHED);\n const { clients } = await getClients({...(filters || {})});\n const client = selectedClient;\n const newClient = clients.find((c: any) => c.username === client?.username);\n setSelectedClient(null);\n setTimeout(() => {\n setSelectedClient(newClient);\n onSucessCreditCard && onSucessCreditCard()\n }, 200);\n } else {\n message.info(\n \"Seu pagamento ainda não foi processado. Tente novamente mais tarde.\"\n );\n setStep(EPlanStep.CHOOSE_PAYMENT);\n if (onCancel) onCancel();\n }\n })\n .catch(() => {\n message.error(\"Algo deu errado. Tente novamente mais tarde.\");\n setStep(EPlanStep.CHOOSE_PAYMENT);\n })\n .finally(async () => setLoading(false));\n };\n\n const getPurchaseType = () => {\n if (planCurrent?.type in ETypePurchase) return planCurrent?.type;\n\n return ETypePurchase.UNIQUE;\n };\n\n const plansContentDisplay: Record = {\n [EPlanStep.CHOOSE_PAYMENT]: {\n content: (\n \n \n {!ocultaContratacaoViaFatura && \n \n {\n if (!user.user.liberadaContratacao) {\n window.location.href = 'mailto:parcerias@velotax.com.br';\n } else if (disabledConciergeOption) {\n } else createConciergePlan(e);\n }}\n >\n {user.user.liberadaContratacao\n ? \"INCLUIR NA FATURA DO ESCRITÓRIO\"\n : \"ATIVAR MEU CONCIERGE VELOTAX\"}\n \n \n }\n \n \n {\n if (!disableCreditCardOption) setStep(EPlanStep.CC_PAYMENT);\n }}\n style={{\n fontWeight: 500,\n backgroundColor: disableCreditCardOption\n ? \"var(--ghost)\"\n : \"\",\n border: disableCreditCardOption ? \"none\" : \"\",\n cursor: disableCreditCardOption ? \"default\" : \"pointer\",\n }}\n >\n {(cardList || []).length > 0 && `ADICIONAR `}CARTÃO DE CRÉDITO\n \n \n \n \n {\n if (!disableCreditCardOption) setStep(EPlanStep.PIX_PAYMENT);\n }}\n >\n PIX À VISTA\n \n \n \n {\n if (!disableCreditCardOption) setStep(EPlanStep.PAYMENT_LINK);\n }}\n >\n LINK DE PAGAMENTO\n \n \n \n \n {loading || true ? (\n \n \n \n \n \n ) : (\n (cardList || []).map((card) => {\n return (\n \n {\n createPlanXPPro({\n cardInfo: { card_id: card?.id },\n clientInfo: {\n customer_id: card?.customer_id,\n document: user?.user?.username,\n isAssessor: true,\n email: user?.user?.email,\n },\n });\n }}\n >\n \n \n \n \n \n {\"**** **** **** \" + card.last_four_digits}\n \n \n \n \n );\n })\n )}\n \n \n \n \n ),\n title: \"Escolha sua forma de pagamento:\",\n },\n [EPlanStep.PIX_PAYMENT]: {\n content: (\n setStep(EPlanStep.CHOOSE_PAYMENT)}\n clientUsername={clientSelected?.username}\n type={planCurrent?.type}\n onCancel={onCancel}\n setStep={setStep}\n filters={filters}\n />\n ),\n title: \"PIX À VISTA\",\n },\n [EPlanStep.PAYMENT_LINK]: {\n content: (\n setStep(EPlanStep.CHOOSE_PAYMENT)} paymentData={paymentData}/>\n ),\n title: \"LINK DE PAGAMENTO\",\n },\n [EPlanStep.CC_PAYMENT]: {\n content: (\n {}}\n status=\"\"\n plan={planCurrent}\n handleSuccess={onSucessCreditCard}\n setInitialized={() => {}}\n darfData={paymentData}\n customInstallments={customInstallments}\n backToRoot={() => setStep(EPlanStep.CHOOSE_PAYMENT)}\n clientSelected={clientSelected}\n createPlanXPPro={createPlanXPPro}\n />\n ),\n title: \"Cartão de crédito\",\n },\n [EPlanStep.LOADING]: {\n content: (\n \n \n \n \n Estamos processando o seu pagamento...\n \n \n \n ),\n title: \"Aguarde um instante\",\n },\n [EPlanStep.FINISHED]: {\n content: (\n \n \n \n \n \n Seu pagamento foi realizado com sucesso\n \n \n ),\n title: \"Confirmação de Pagamento\",\n },\n };\n\n const title = plansContentDisplay?.[step]?.title;\n const content = plansContentDisplay?.[step]?.content;\n\n const cancelActions = (e: any) => {\n setStep(EPlanStep.CHOOSE_PAYMENT);\n clearInterval(getStatus);\n\n if (onCancel) {\n onCancel();\n }\n };\n\n const handlePadding =\n window.innerWidth <= 768 ? \"0 32px 32px\" : \"0 64px 32px\";\n\n return (\n cancelActions(e)}\n bodyStyle={{ padding: handlePadding }}\n >\n {content}\n \n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 15px;\n margin-bottom: 20px;\n\n .input-div {\n width: 100%;\n gap: 5px;\n display: flex;\n align-items: center;\n }\n\n .input-checkout {\n width: 100%;\n }\n\n .icon-copy {\n position: absolute;\n width: 15px;\n height: 100%;\n right: 8px;\n cursor: pointer;\n }\n`;","import React, { useEffect, useState } from \"react\";\nimport { Col, Row, Typography, message, Input } from \"antd\";\nimport Button from \"../../../Button\";\nimport { useClients } from \"../../../../contexts/ClientsContext\";\nimport { Container } from \"./styles\";\nimport { FiCopy } from \"react-icons/fi\";\nimport api from \"../../../../services/api\";\nimport { apiPayment } from \"../../../../services/payment\";\nimport { useAuth } from \"../../../../contexts/AuthContext\";\nimport { getPlanPrice, planos } from \"../../../Planos/planos\";\nimport { UserPlanEnum } from \"../../../../constants/plans\";\n\ninterface PaymentLinkProps {\n backStep?: () => void;\n paymentData: any;\n}\n\nexport const PaymentLink: React.FC = ({\n backStep,\n paymentData\n}) => {\n const { selectedClient } = useClients();\n const [link, setLink] = useState(\"\");\n const { user } = useAuth();\n\n const plano = planos.find(p => p.type === paymentData.type)\n const price = getPlanPrice(plano!, false) ?? 25.9;\n const installments = plano?.installments || 1;\n let totalPrice = price * installments;\n\n const getDiscount = () => {\n if (paymentData.type === UserPlanEnum.VELOTAX_MAIN_PRO) {\n if (user?.user?.discount! >= 33) return 33.38898164;\n else return user?.user?.discount || 0;\n }\n if (paymentData.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE) {\n if (user?.user?.discount! >= 50) return 50.06257822;\n return user?.user?.discount || 0;\n }\n else return user?.user?.discount || 0\n }\n\n if (user.user.discount && paymentData.type !== UserPlanEnum.VELOTAX_MAIN_BASIC)\n totalPrice -= totalPrice * (getDiscount() / 100);\n const planPrice = totalPrice / installments;\n\n const copyToClipboard = () => {\n navigator.clipboard.writeText(`${link}`)\n .then(() => {\n message.success('Link copiado!')\n })\n .catch((err) => {\n message.error('Falha ao copiar texto: ', err);\n });\n };\n\n const getTokenToCheckout = async () => {\n const token = localStorage.getItem(\"@VeloTax:token\");\n if (!token) {\n message.error(\"Token não encontrado. Recarregue sua página\");\n return;\n }\n const { data } = await apiPayment.get(\"/pro/checkout/token\", {\n params: {\n provider: \"VELOPRO-XP\",\n userId: selectedClient?.userId || \"\",\n plan: paymentData,\n amount: planPrice * 12\n },\n headers: { Authorization: `Bearer ${token}` },\n })\n setLink(`${process.env.REACT_APP_CHECKOUT_URL}link/${data.token}`)\n }\n\n useEffect(() => {\n getTokenToCheckout();\n }, [selectedClient])\n\n const sendToWpp = () => {\n const text = `Olá, ${selectedClient?.name || \"Cliente\"}. Segue o seu link de pagamento: ${link}`;\n const url = `https://wa.me${selectedClient?.phone ? `/55${selectedClient?.phone}` : \"\"}?text=${text.replaceAll(\" \", \"%20\")}`;\n window.open(url, \"_blank\");\n }\n\n const sendMail = async () => {\n try {\n const clientToEmail = { ...selectedClient, linkUrl: `${link}` }\n await api.post(\"/clients/send-mail\", {\n type: \"link-checkout\",\n linkUrl: `${link}`,\n clients: [clientToEmail],\n });\n message.success(\"Link de pagamento enviado por e-mail!\");\n } catch {\n message.error(\"Algo inesperado aconteceu. Tente novamente\");\n }\n };\n\n return (\n \n \n \n \n \n Copie o link de pagamento ou envie via e-mail ou WhatsApp.{\" \"}\n \n \n \n \n \n \n \n \n \n \n backStep && backStep()}\n >\n Voltar\n \n \n );\n};\n","import { BiCheck } from \"react-icons/bi\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Switch, Tooltip, Typography, message } from \"antd\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport Button from \"../../components/Button\";\n\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { UserPlanEnum } from \"../../constants/plans\";\nimport { Container, PlanosContainer } from \"./styles\";\n\nimport { TrustPilotTrustBox } from \"../../components/TrustPilot\";\nimport { UserPlanUpgradeEnum, getPlanOriginalPrice, getPlanPrice, planos } from \"./planos\";\nimport { ReactComponent as Selo7dias } from \"../../assets/icons/selo-7-dias.svg\";\nimport { ReactComponent as SeloGarantia } from \"../../assets/icons/selo-garantia.svg\";\nimport { ReactComponent as TrustPilotLogo } from \"../../assets/icons/trustpilot-logo.svg\";\nimport { ReactComponent as TrustPilotStars } from \"../../assets/icons/trustpilot-stars.svg\";\nimport { apiPayment } from \"../../services/payment\";\nimport { PaymentModal } from \"../Payment/PaymentModal\";\nimport api from \"../../services/api\";\nimport { useClients } from \"../../contexts/ClientsContext\";\nimport { isMobile } from \"../../utils\";\nimport { IoMdArrowRoundBack } from \"react-icons/io\";\n\nvar getStatus: NodeJS.Timeout;\n\nexport interface HasPlan {\n basic: boolean;\n premium: boolean;\n concierge: boolean;\n}\n\nexport const Planos = ({hasPlan, selectedClient, onBack, onFinish, filters}: {hasPlan: false | HasPlan; selectedClient: any, onBack?: () => void, onFinish?: () => void, filters?: any}) => {\n const { user } = useAuth()\n const navigate = useNavigate();\n const [selectedPlan, setSelectedPlan] = useState();\n const [paymentModal, setPaymentModal] = useState(false);\n const [planUpgrade, setPlanUpgrade] = useState();\n const [typeConcierge, setTypeConcierge] = useState('anual');\n const { getClients, setSelectedClient } = useClients();\n\n const handleSelectPlan = (plan: any) => {\n setPaymentModal(true);\n setSelectedPlan(plan);\n };\n\n const checkWasPaid = useCallback(\n (id: string, delay: number = 2) => {\n let attempts = 0;\n getStatus = setInterval(async () => {\n const token = localStorage.getItem(\"@VeloTax:token\");\n apiPayment\n .get(`/user-plan/plan-info`, {\n headers: { Authorization: `Bearer ${token}` },\n })\n .then((res) => {\n if (res.data?.active) {\n clearInterval(getStatus);\n message.success(\"Pagamento Confirmado com sucesso!\");\n }\n })\n .finally(() => {\n attempts += 1;\n if (attempts > 100) {\n clearInterval(getStatus);\n }\n });\n }, delay * 1000);\n },\n []\n );\n\n const handleSuccess = (data: any) => {\n onFinish && onFinish()\n // checkWasPaid(data.paymentId, 4);\n };\n\n const stopIntervalPix = () => {\n if (getStatus) clearInterval(getStatus);\n };\n\n useEffect(() => {\n // return () => getStatus && clearInterval(getStatus);\n }, [checkWasPaid]);\n\n // useEffect(() => {\n // // setPaymentModal(true);\n // setSelectedPlan();\n // }, [user?.user?.userPlanInfoVelotax?.type]);\n\n const onChange = (e: any) => {\n if (e) setTypeConcierge('mensal');\n else setTypeConcierge('anual');\n }\n\n const createPlanFromSelectedClient = async () => {\n try {\n const usernames = [selectedClient.username];\n const { data } = await api.post(\"/plans\", {\n usernames,\n planName: selectedPlan?.type,\n type: typeConcierge\n });\n getClients();\n message.success(\n `${data.count} Clientes adicionados no Plano premium com sucesso`\n );\n } catch (err) {\n message.success(\"Ocorreu um erro ao adicionar os clientes no plano\");\n } finally {\n setPaymentModal(false);\n setSelectedClient(null);\n }\n };\n\n const getMinDiscount = (planType: string, discount: number) => {\n if (typeConcierge === \"mensal\") {\n if (planType.includes('_PRO')) {\n if (discount >= 25) return 25.03;\n else return discount;\n }\n else if (planType.includes('_CONCIERGE')) {\n if (discount >= 40) return 40.04;\n else return discount;\n }\n else return discount;\n }\n else {\n if (planType.includes('_PRO')) {\n if (discount >= 33) return 33.38898164;\n else return discount;\n }\n else if (planType.includes('_CONCIERGE')) {\n if (discount >= 50) return 50.06257822;\n else return discount;\n }\n else return discount;\n }\n }\n\n const getMinDiscountLabel = (planType: string, discount: number) => {\n if (typeConcierge === \"mensal\") {\n if (planType.includes('_PRO')) {\n if (discount >= 25) return 25;\n else return discount;\n }\n else if (planType.includes('_CONCIERGE')) {\n if (discount >= 40) return 40;\n else return discount;\n }\n else return discount;\n }\n else {\n if (planType.includes('_PRO')) {\n if (discount >= 33) return 33;\n else return discount;\n }\n else if (planType.includes('_CONCIERGE')) {\n if (discount >= 50) return 50;\n else return discount;\n }\n else return discount;\n }\n }\n\n return (\n \n
\n \n {onBack && \n \n }\n Selecione seu plano\n \n
\n {/* \n
\n
\n “Bom”\n \n \n \n \n
\n
\n \n \n 100% de precisão\n \n
\n
\n \n \n Garantia por 7 dias ou seu dinheiro de volta\n \n \n \n \n
\n
*/}\n {user.user.liberadaContratacao && !hasPlan &&\n
\n Faturamento anual\n \n Faturamento mensal\n
\n }\n {user.user.liberadaContratacao\n ? \n \n {planos.map((plan) => (\n (typeConcierge == 'mensal' && !plan.type.includes('_MONTH')) ? <> :\n <>\n
\n {plan.popular &&
Mais vendido
}\n \n {plan.name}\n \n {plan.for}\n {(user.user?.discount && user.user.liberadaContratacao && !plan.type.includes('_BASIC'))\n ?\n <>\n
\n \n R${\" \"}\n {\n getPlanOriginalPrice(plan, hasPlan)\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n }\n \n {user.user?.discount ? `${getMinDiscountLabel(plan.type, user.user?.discount)}%` : '0%'} desconto\n \n :
}\n \n {hasPlan && hasPlan?.basic && \n (plan.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE ||\n plan.type === UserPlanEnum.VELOTAX_MAIN_PRO ||\n plan.type === UserPlanEnum.XP_CONCIERGE ||\n plan.type === UserPlanEnum.XP_PRO)\n &&
+
}\n {hasPlan && hasPlan?.premium && (plan.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE || plan.type === UserPlanEnum.XP_CONCIERGE) &&
+
}\n R${\" \"}\n \n {\n (user.user?.discount && !plan.type.includes('_BASIC'))\n ? (getPlanOriginalPrice(plan, hasPlan) - ((getPlanOriginalPrice(plan, hasPlan) * getMinDiscount(plan.type, user.user?.discount) / 100)))\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n : getPlanOriginalPrice(plan, hasPlan)\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n .split(\",\")[0]\n }\n \n {(!user.user?.discount || plan.type.includes('_BASIC')) &&\n <>\n ,\n {\n getPlanPrice(plan, hasPlan)\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n .split(\",\")[1]\n }\n \n }\n
\n \n {(typeConcierge == 'mensal') ? 'por mês' : 'por mês no plano anual'}\n \n {\n if (hasPlan) {\n setPlanUpgrade(\n hasPlan.premium &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? UserPlanUpgradeEnum.PRO_TO_CONCIERGE\n : hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO\n ? UserPlanUpgradeEnum.BASIC_TO_PRO\n : hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? UserPlanUpgradeEnum.BASIC_TO_CONCIERGE\n : undefined\n );\n }\n handleSelectPlan(plan);\n }}\n >\n {!hasPlan\n ? \"Selecionar\"\n : (hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_BASIC) ||\n (hasPlan.premium &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO) ||\n (hasPlan.concierge &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE) ||\n (hasPlan.basic &&\n plan?.type === UserPlanEnum.XP_BASIC) ||\n (hasPlan.premium &&\n plan?.type === UserPlanEnum.XP_PRO) ||\n (hasPlan.concierge &&\n plan?.type === UserPlanEnum.XP_CONCIERGE)\n ? \"Ativo\"\n : \"Fazer upgrade\"}\n \n \n {plan.includes}\n \n
\n {plan.benefits.map((benefit, index) => (\n
\n \n {benefit.split(\"{\")[0]}\n {benefit.split(\"{\")?.[1]?.length > 0 ? (\n target.parentElement!}\n >\n \n \n ) : (\n <>\n )}\n
\n ))}\n
\n
\n \n ))}\n
\n :\n \n {planos.map((plan) => (\n <>\n {plan.type.includes('_MONTH') ? <> : \n
\n {plan.popular &&
Mais vendido
}\n \n {plan.name}\n \n {plan.for}\n \n {hasPlan && hasPlan?.basic && \n (plan.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE ||\n plan.type === UserPlanEnum.VELOTAX_MAIN_PRO ||\n plan.type === UserPlanEnum.XP_CONCIERGE ||\n plan.type === UserPlanEnum.XP_PRO) \n &&
+
}\n {hasPlan && hasPlan?.premium && (plan.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE || plan.type === UserPlanEnum.XP_CONCIERGE) &&
+
}\n R${\" \"}\n \n {\n getPlanOriginalPrice(plan, hasPlan)\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n .split(\",\")[0]\n }\n \n ,\n {\n getPlanOriginalPrice(plan, hasPlan)\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n .split(\",\")[1]\n }\n
\n \n {/* {hasPlan && hasPlan?.premium && plan.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE && R$ 79,90 } */}\n por mês no plano anual\n \n {\n if (hasPlan) {\n setPlanUpgrade(\n hasPlan.premium &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? UserPlanUpgradeEnum.PRO_TO_CONCIERGE\n : hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO\n ? UserPlanUpgradeEnum.BASIC_TO_PRO\n : hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? UserPlanUpgradeEnum.BASIC_TO_CONCIERGE\n : undefined\n );\n }\n handleSelectPlan(plan);\n }}\n >\n {!hasPlan\n ? \"Selecionar\"\n : (hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_BASIC) ||\n (hasPlan.premium &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO) ||\n (hasPlan.concierge &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE) ||\n (hasPlan.basic &&\n plan?.type === UserPlanEnum.XP_BASIC) ||\n (hasPlan.premium &&\n plan?.type === UserPlanEnum.XP_PRO) ||\n (hasPlan.concierge &&\n plan?.type === UserPlanEnum.XP_CONCIERGE)\n ? \"Ativo\"\n : \"Fazer upgrade\"}\n \n \n {plan.includes}\n \n
\n {plan.benefits.map((benefit, index) => (\n
\n \n {benefit.split(\"{\")[0]}\n {benefit.split(\"{\")?.[1]?.length > 0 ? (\n target.parentElement!}\n >\n \n \n ) : (\n <>\n )}\n
\n ))}\n
\n
\n }\n \n ))}\n
\n }\n
\n {}}\n planCurrent={selectedPlan}\n onSucessPix={checkWasPaid}\n onSucessCreditCard={handleSuccess}\n disableCreditCardOption={typeConcierge == 'mensal' ? true : false}\n createConciergePlan={createPlanFromSelectedClient}\n paymentData={{\n planUpgrade,\n type: selectedPlan?.type,\n isPlan: true,\n stopIntervalPix,\n }}\n onCancel={() => {\n setPaymentModal(false);\n setSelectedPlan(undefined);\n // setDirectPayment(false);\n }}\n clientSelected={selectedClient}\n typeConcierge={typeConcierge}\n filters={filters}\n />\n \n );\n};\n","// Config\n\n// Components\nimport moment from \"moment\";\nimport { useClients } from \"../../contexts/ClientsContext\";\nimport { AvisosContainer } from \"./styles\";\nimport { ChoosePlanStep } from \"../UserPlanModal/ChoosePlanStep\";\nimport { useEffect, useState } from \"react\";\nimport { Button, Typography } from \"antd\";\nimport { FiArrowRight } from \"react-icons/fi\";\nimport { AiOutlineLink } from \"react-icons/ai\";\nimport { BiX } from \"react-icons/bi\";\nimport api from \"../../services/api\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { Planos } from \"../Planos\";\n// Assets\n\n// Types\ninterface IProps {\n selectedPlan: any;\n setSelectedPlan: any;\n setPaymentType: any;\n clientsWithCancelRecurring: any;\n setShowPaymentModal: any;\n setOpen: any;\n setIntegrationModal: any;\n setIntegrationClient: any;\n setClientsSelected: any;\n filters?: any\n}\n\nexport const Avisos = ({\n selectedPlan,\n setSelectedPlan,\n setPaymentType,\n clientsWithCancelRecurring,\n setShowPaymentModal,\n setOpen,\n setIntegrationClient,\n setIntegrationModal,\n setClientsSelected,\n filters\n}: IProps) => {\n const { selectedClient, setClients, getClients } = useClients();\n const [dismissBolsa, setDismissBolsa] = useState(false);\n const [dismissExterior, setDismissExterior] = useState(false);\n const planBought = selectedClient?.userPlanInfoVelotax?.type ?? \"\";\n const isCancelRecurring = (clientsWithCancelRecurring || []).length > 0;\n\n useEffect(() => {\n setDismissBolsa(false);\n setDismissExterior(false);\n }, [selectedClient]);\n\n const closeIntegration = async (type: \"bolsa\" | \"exterior\") => {\n try {\n if (type === \"bolsa\") {\n setDismissBolsa(true);\n } else {\n setDismissExterior(true);\n }\n await api.put(\"/clients/close-integration\", {\n cpf: selectedClient?.username,\n type,\n });\n setClients((clients: any[]) =>\n clients.map((client) => ({\n ...client,\n closeIntegrationBolsa:\n client.username === selectedClient?.username && type === \"bolsa\"\n ? true\n : client.closeIntegrationBolsa,\n closeIntegrationExterior:\n client.username === selectedClient?.username && type === \"exterior\"\n ? true\n : client.closeIntegrationExterior,\n }))\n );\n } catch (err) {}\n };\n\n const temPlano =\n selectedClient?.planActive ||\n moment(new Date(selectedClient?.planDueDate || 2021)).isAfter(\n moment(new Date())\n ) ||\n selectedClient?.planType === \"exterior\";\n const temIntegracaoBolsa = selectedClient?.statusBolsa === \"Integração ativa\";\n const temIntegracaoExterior =\n selectedClient?.statusExterior === \"Integração ativa\";\n\n return (\n \n
\n {\n !temPlano && (\n \n )\n }\n {temPlano &&\n !temIntegracaoBolsa &&\n !dismissBolsa &&\n !selectedClient?.closeIntegrationBolsa && (\n
\n \n
\n \n Integração com bolsa pendente\n \n \n O seu cliente deve conceder a permissão na B3 para que seja\n possível acessar suas operações da bolsa de valores de forma\n automática.\n \n {\n setIntegrationModal(\"B3\");\n setIntegrationClient(selectedClient);\n }}\n >\n Saiba mais\n \n \n
\n closeIntegration(\"bolsa\")}\n />\n
\n )}\n {temPlano &&\n !temIntegracaoExterior &&\n !dismissExterior &&\n !selectedClient?.closeIntegrationExterior && (\n
\n \n
\n \n Conecte com a XP International\n \n \n O seu cliente deve conceder a permissão na XP International\n para que seja possível acessar suas operações no exterior de\n forma automática.\n \n {\n setIntegrationModal(\"XP International\");\n setIntegrationClient(selectedClient);\n }}\n >\n Saiba mais\n \n \n
\n closeIntegration(\"exterior\")}\n />\n
\n )}\n
\n \n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n .income-report-uploader {\n height: auto;\n display: block;\n margin-bottom: 16px;\n\n .ant-upload {\n width: 100%;\n height: 100px;\n border-radius: 16px;\n\n .upload-text-icon {\n height: 100%;\n cursor: pointer;\n font-size: 20px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n\n svg {\n fill: var(--yellow);\n }\n\n .upload-text-desc {\n font-size: 14px;\n text-align: center;\n }\n }\n\n .loading-container {\n height: 100%;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n\n .anticon {\n width: 40px;\n height: 40px;\n margin-bottom: 12px;\n\n svg {\n width: 100%;\n height: 100%;\n fill: var(--dark-1);\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { Upload } from \"antd\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { AiOutlineCloudUpload } from \"react-icons/ai\";\nimport { RcFile, UploadChangeParam } from \"antd/lib/upload\";\nimport { UploadRequestOption as RcCustomRequestOptions } from \"rc-upload/lib/interface\";\nimport {\n ShowUploadListInterface,\n UploadFile,\n UploadListType\n} from \"antd/lib/upload/interface\";\nimport { Container } from \"./styles\";\n\nexport interface IUploadProps {\n accept: string;\n beforeUpload?: (file: RcFile) => void;\n customRequest?: (file: RcCustomRequestOptions) => void;\n loading: boolean;\n multiple?: boolean;\n descText?: string;\n maxCount?: number;\n customText?: string;\n listType?: UploadListType;\n fileList?: UploadFile[];\n showUploadList?: boolean | ShowUploadListInterface;\n onRemove?:\n | ((file: UploadFile) => boolean | void | Promise)\n | undefined;\n onChange?: ((info: UploadChangeParam>) => void) | undefined;\n}\n\nconst UploadVelotax: React.FC = ({\n accept,\n fileList,\n onRemove,\n onChange,\n maxCount,\n beforeUpload,\n customRequest,\n loading = false,\n multiple = false,\n descText = \"\",\n showUploadList = false,\n listType = \"picture-card\",\n customText = \"Arraste ou clique\"\n}) => {\n return (\n \n \n {loading ? (\n
\n \n Isso pode demorar alguns minutos, aguarde\n
\n ) : (\n
\n \n {customText}\n {descText && {descText}}\n
\n )}\n \n
\n );\n};\n\nexport default UploadVelotax;\n","import styled, { css } from \"styled-components\";\n\nexport const PrevidenciaContainer = styled.div`\n display: flex;\n justify-content: center;\n flex-direction: column;\n width: 100%;\n padding-bottom: 16px;\n form {\n margin-top: 16px;\n }\n\n .ant-form-item-row {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n margin-bottom: -16px;\n }\n .ant-input.ant-input-lg {\n height: 40px;\n }\n .rows {\n width: 100% !important;\n max-width: 100% !important;\n display: flex;\n }\n .cols {\n display: flex;\n }\n .form-item {\n width: 80% !important;\n }\n\n .ant-form-item-label {\n margin-right: 10px;\n }\n\n .ant-form-item-control {\n width: 50% !important;\n max-width: 50% !important;\n }\n input {\n border-radius: 0 !important;\n }\n button {\n margin: 24px 0 0;\n border-radius: 0 !important;\n font-size: 16px !important;\n font-weight: 500 !important;\n }\n .list-pgbl {\n font-weight: 500;\n margin-bottom: 16px;\n }\n ul li {\n font-size: 12px;\n list-style-type: circle;\n list-style: circle;\n margin-left: 32px;\n }\n .ant-select ant-select-lg ant-select-single ant-select-show-arrow {\n height: 40px !important;\n }\n .ant-select-lg,\n .ant-select-lg .ant-select-selector {\n height: 40px !important;\n margin-top: 2px !important;\n border-radius: 0px !important;\n }\n .ant-select-selector {\n width: 120px !important;\n height: 40px !important;\n display: flex !important;\n align-items: center !important;\n margin-left: 16px !important;\n border-radius: 0px !important;\n }\n\n .previdencia-card {\n width: 100%;\n padding: 24px;\n border-radius: 8px;\n background-color: var(--white);\n border: 1px solid var(--ghost);\n box-shadow: 0px 4px 8px 0px var(--ghost);\n display: flex;\n margin-bottom: 8px;\n &:last-of-type {\n margin-bottom: 32px;\n }\n & > svg {\n min-width: 24px;\n min-height: 24px;\n stroke: var(--ant-primary-color);\n &.fill {\n fill: var(--ant-primary-color);\n }\n }\n\n .previdencia-card-content {\n width: 100%;\n justify-content: center;\n div.ant-typography {\n color: var(--gray-1);\n font-size: 16px;\n font-weight: 300;\n }\n .title {\n font-size: 20px;\n font-weight: 600;\n }\n }\n .header-box {\n font-size: 14px;\n padding: 8px;\n font-weight: 300;\n line-height: 1rem;\n height: 50px;\n display: flex;\n justify-content: center;\n align-items: center;\n color: #fff;\n }\n\n .header-border-top {\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n }\n\n .header-border-left {\n border-top-left-radius: 8px;\n }\n\n .header-border-right {\n border-top-right-radius: 8px;\n }\n\n .header-box-bottom {\n width: 100%;\n }\n\n .header-box-black {\n background-color: #1f1f1f;\n }\n\n .header-box-green {\n background-color: var(--green) !important;\n }\n\n .header-box-red {\n background-color: var(--red) !important;\n }\n }\n .pgbl-info-button {\n margin: 0 0 0 4px;\n padding: 4px;\n font-size: 12px;\n display: flex;\n column-gap: 4px;\n align-items: center;\n font-weight: 500;\n svg {\n width: 18px;\n height: 18px;\n min-width: 18px;\n min-height: 18px;\n }\n \n }\n .card-bottom {\n background-color: #f0f0f0;\n }\n\n @media only screen and (max-device-width: 812px) {\n .previdencia-card {\n .previdencia-card-content {\n padding: 0;\n .title {\n margin: 0;\n }\n\n h1 {\n width: 250px !important;\n margin: 0 !important;\n padding: 0 !important;\n font-size: 12px !important;\n }\n ul, li {\n margin: 0 !important;\n padding: 0 !important;\n }\n form {\n margin: 8px 0 0;\n button {\n margin: 16px 0 0;\n }\n .form-item {\n width: 100% !important;\n }\n .cols {\n position: relative;\n }\n .tabs {\n top: 4px;\n right: 24px;\n height: 24px;\n position: absolute;\n width: 50px !important;\n max-width: 50px !important;\n min-width: 50px !important;\n margin-left: 8px !important;\n .ant-tabs-content-holder {\n height: 0;\n flex: 0;\n }\n .ant-tabs-nav {\n height: 24px;\n }\n }\n .ant-row {\n width: 100%;\n .ant-form-item-label {\n padding-bottom: 4px;\n height: auto !important;\n label {\n height: auto !important;\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n white-space: normal;\n }\n }\n\n .ant-form-item-control {\n height: 32px !important;\n width: 100% !important;\n max-width: 100% !important;\n input {\n height: 32px !important;\n font-weight: 500;\n font-size: 12px;\n width: 100%;\n margin-bottom: 8px;\n }\n }\n }\n .ant-select {\n align-self: flex-end;\n margin: 0 0 8px 8px !important;\n .ant-select-selector {\n margin: 0 !important;\n height: 32px !important;\n width: 100px !important;\n font-size: 12px !important;\n .ant-select-selection-item {\n font-size: 12px !important;\n }\n }\n .ant-select-item-option-content {\n font-size: 12px !important;\n }\n }\n .ant-select-open {\n height: 32px !important;\n width: 120px !important;\n font-size: 12px !important;\n }\n .ant-select-show-arrow {\n height: 32px !important;\n }\n .pgbl-info-button {\n margin: 4px 0 0 4px;\n padding: 4px;\n font-size: 12px;\n display: flex;\n column-gap: 4px;\n align-items: center;\n font-weight: 500;\n svg {\n width: 16px;\n height: 16px;\n min-width: 16px;\n min-height: 16px;\n }\n }\n }\n }\n }\n .card-bottom {\n background-color: #f0f0f0;\n .list-pgbl {\n font-size: 12px !important;\n }\n li {\n width: 350px;\n font-size: 10px !important;\n }\n }\n }\n`;\n\ninterface QuestionProps {\n show?: boolean;\n}\n\nexport const Question = styled.div`\n width: 100%;\n padding: 32px;\n border-radius: 4px;\n background-color: var(--white);\n\n ${({ show }) =>\n show\n ? css`\n display: block;\n visibility: visible;\n `\n : css`\n display: none;\n overflow: hidden;\n visibility: hidden;\n max-height: 100px;\n `}\n\n .question-title {\n display: flex;\n align-items: flex-start;\n font-size: 1.7rem;\n margin-bottom: 1rem;\n margin-top: 1rem;\n font-weight: 700;\n\n button.ant-btn-text {\n padding: 4px;\n span {\n width: 20px;\n height: 20px;\n }\n }\n }\n\n .question-buttons {\n margin-top: 24px;\n }\n\n &,\n .anticon,\n .question-title,\n .ant-radio-wrapper,\n .ant-checkbox + span {\n color: var(--velotax-font-color-dark) !important;\n }\n\n .ant-tabs {\n color: var(--velotax-font-color) !important;\n .ant-tabs-nav {\n .ant-tabs-nav-wrap {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: 140px;\n .ant-tabs-tab {\n padding: 4px 0;\n }\n }\n .anticon svg {\n color: var(--velotax-font-color-dark) !important;\n }\n }\n }\n\n .pgbl-info-button {\n padding: 4px;\n font-size: 12px;\n display: flex;\n column-gap: 4px;\n align-items: center;\n font-weight: 500;\n }\n\n .income-types {\n margin-bottom: 1rem;\n p {\n margin: 0;\n font-size: 1rem;\n display: flex;\n column-gap: 8px;\n span {\n }\n }\n }\n\n &.resume-container {\n font-size: 1.25rem;\n text-align: center;\n position: relative;\n .ant-typography {\n color: var(--velotax-font-color-dark) !important;\n }\n .assessor-text {\n font-size: 12px;\n margin: 16px 0 0;\n text-align: center;\n }\n button {\n margin-top: 16px;\n }\n .content-body {\n height: 64px;\n padding: 14px;\n display: flex;\n align-items: center;\n font-size: 14px;\n }\n\n .border-left-right {\n border-left: 1px solid #e8e8e8;\n border-right: 1px solid #e8e8e8;\n border-bottom: 1px solid #e8e8e8;\n }\n\n .border-right-white {\n border-right: 1px solid white;\n }\n\n .border-left-white {\n border-left: 1px solid white;\n }\n\n .border-bottom-right-radius {\n border-bottom-right-radius: 0.25rem;\n }\n\n .border-bottom-left-radius {\n border-bottom-left-radius: 0.25rem;\n }\n\n .text-left {\n text-align: start;\n }\n\n .text-center {\n align-items: center;\n display: flex;\n justify-content: center;\n }\n\n .background-gain {\n background-color: #e8e8e8;\n }\n\n .col-header {\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\n\n .btn-download {\n font-size: 14px !important;\n display: flex;\n padding: 5px;\n flex-direction: row;\n justify-content: space-around;\n align-items: center;\n width: 100px;\n margin: 0px 0px 0px 0px;\n border-radius: 20px !important;\n }\n\n .restituicao {\n width: 100%;\n margin: 16px 0;\n justify-content: space-between;\n display: flex;\n flex-direction: row;\n gap: 2px;\n .ant-typography {\n .content-header {\n height: 70px;\n font-size: 1.5rem;\n font-weight: 700;\n border-left: 1px solid #e8e8e8;\n border-right: 1px solid #e8e8e8;\n border-bottom: 1px solid #e8e8e8;\n border-radius: 0.25rem;\n padding: 14px;\n display: flex;\n align-items: center;\n flex-direction: column;\n \n .text-green {\n color: var(--green);\n }\n\n .text-red {\n color: var(--red);\n }\n }\n\n .background-icon-circle {\n background-color: var(--yellow);\n height: 55px;\n width: 55px;\n border-radius: 34px;\n\n .icon-circle {\n margin-top: 15px;\n }\n }\n\n .with-icon {\n flex-direction: row;\n gap: 12px;\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 24px;\n margin: 0;\n .question-buttons {\n button {\n font-size: 0.85rem;\n letter-spacing: 0.5px;\n padding-left: 16px;\n padding-right: 16px;\n }\n }\n &.resume-container {\n padding: 0;\n font-size: 0.5rem;\n button {\n margin: 0;\n }\n .restituicao {\n justify-content: center;\n .ant-typography {\n strong {\n font-size: 13px;\n }\n div {\n font-size: 12px;\n font-weight: 600;\n br {\n display: block;\n }\n }\n .background-icon-circle {\n background-color: var(--yellow);\n height: 22px !important;\n width: 22px !important;\n border-radius: 34px;\n \n .icon-circle {\n margin-top: 5px;\n }\n }\n\n .span-text-inside {\n font-size: 14px;\n }\n }\n }\n .resume-edit-button {\n top: 16px;\n right: 16px;\n }\n }\n .small-text {\n font-size: 10px;\n letter-spacing: 0px;\n padding-left: 8px;\n padding-right: 8px;\n }\n\n .question-title {\n flex-direction: column;\n }\n .pgbl-info-button {\n padding: 4px 0;\n text-align: left;\n }\n\n .handle-label {\n .MuiFormLabel-root.MuiInputLabel-root.MuiInputLabel-shrink {\n min-width: 133%;\n white-space: normal;\n transform: translate(0, -12px) scale(0.75);\n }\n }\n\n .row-mobile {\n min-height: 330px;\n\n .content-body {\n height: 90px;\n padding: 7px;\n font-size: 11px;\n }\n }\n }\n`;\n","import { useState } from \"react\";\nimport NumberFormat from \"react-number-format\";\nimport {\n Button,\n Col,\n Form,\n Input,\n Modal,\n Row,\n Select,\n Typography,\n message,\n} from \"antd\";\nimport apiBolsa from \"../../services/bolsa-api\";\nimport { FaWallet } from \"react-icons/fa\";\nimport { PrevidenciaContainer, Question } from \"./styles\";\nimport { currencyToNumber, download, downloadPDF, formatCurrency, isMobile } from \"../../utils\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { HiOutlineDownload } from \"react-icons/hi\";\nimport { useClients } from \"../../contexts/ClientsContext\";\n\ninterface ResumeData {\n m: number;\n o: number;\n ganho: number;\n completa: { valorRestituicao: number };\n simplificada: { valorRestituicao: number };\n}\n\nexport const Previdencia: React.FC = () => {\n const [form] = Form.useForm();\n const { selectedClient } = useClients();\n const [resume, setResume] = useState();\n const [loading, setLoading] = useState(false);\n const [editting, setEditting] = useState(true);\n const [activeTabRenda, setActiveTabRenda] = useState(\"mensal\");\n const [activeTabSaude, setActiveTabSaude] = useState(\"anual\");\n const [activeTabEducacao, setActiveTabEducacao] = useState(\"anual\");\n const [activeTabPensao, setActiveTabPensao] = useState(\"anual\");\n const [valuesToReport, setValuesToReport] = useState({});\n const [helpModal, setHelpModal] = useState();\n const [loadingReportPrev, setLoadingReportPrev] = useState(false);\n\n const onFinish = async (values: any) => {\n setLoading(true);\n const token = localStorage.getItem(\"@VeloTax:token\");\n setValuesToReport(values);\n await apiBolsa\n .post(\n `/xpinvestimentos/pgblCalculate`,\n {\n rendaBrutaMensalMode: activeTabRenda ?? \"mensal\",\n rendaBrutaMensal: currencyToNumber(values?.rendaMensal) ?? 0,\n possuiDependentes: values?.dependentes > 0 ? true : false,\n possuiGastoMensalSaudeDependente:\n values?.dependentes > 0 ? true : false,\n possuiGastoMensalEducacaoDependente:\n values?.dependentes > 0 ? true : false,\n pagaPensaoAlimenticia: values?.dependentes > 0 ? true : false,\n quantidadeDependente:\n values?.dependentes > 0 ? values?.dependentes : 0,\n gastoMensalSaudeDependenteMode: \"mensal\",\n gastoMensalSaudeDependente: 0,\n gastoMensalEducacaoDependenteMode: \"mensal\",\n gastoMensalEducacaoDependente: 0,\n gastoMensalSaudeMode: activeTabSaude ?? \"anual\",\n gastoMensalEducacaoMode: activeTabEducacao ?? \"anual\",\n gastoPensaoAlimenticiaMode: activeTabPensao ?? \"anual\",\n gastoMensalSaude: currencyToNumber(values?.gastoSaude) ?? 0,\n gastoMensalEducacao: currencyToNumber(values?.gastoEducacao) ?? 0,\n gastoPensaoAlimenticia: currencyToNumber(values?.gastoPensao) ?? 0,\n },\n {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n }\n )\n .then((response) => {\n setResume(response.data);\n setEditting(false);\n })\n .catch((err) => {\n console.log(err.message);\n message.error(\"Algo inesperado aconteceu! Tente novamente mais tarde.\");\n })\n .finally(() => {\n setLoading(false);\n });\n };\n const handleEdit = () => {\n setEditting(true);\n };\n\n const SalarioText = (\n <>\n O valor inserido neste campo deve ser sua remuneração, considerando apenas:\n
\n
\n
    \n
  • \n Trabalhadores CLT: salário, adicionais insalubridade/periculosidade,\n adicional noturno, comissões, corretagens, horas extras, bolsa de estudos sem isenção e bonificações.\n Férias e terço de férias devem ser adicionados apenas no \"anual\", para \"mensal\" são adicionados automáticamente; \n
  • \n
  • Empresários: pró-labore;
  • \n
  • Autônomos: rendimentos não-assalariados;
  • \n
  • \n MEI: rendimentos tributáveis, com receita recebida a maior que faixa de\n isenção, e pró-labore.\n
  • \n
  • \n Aposentados com mais de 65 anos: rendimentos acima da faixa de isenção\n por mês (R$ 4.224);\n
  • \n
  • \n Locadores: valores recebidos à título de aluguel.\n
  • \n
\n
\n Atenção: Não devem ser incluídos valores recebidos à título de PLR, 13° salário, parcela\n isenta de aposentadoria, diárias e ajuda de custo, remuneração de stock option, \n dividendos, FGTS, seguro desemprego e indenização paga pelo empregador em caso de demissão ou em caso de acidente de trabalho.\n \n );\n \n const EducacaoText = (\n <>\n São aceitos entendidos como despesas com educação aqueles gastos tidos com a\n educação tradicional, que engloba: educação profissional (ensino técnico e o\n tecnológico); educação superior, compreendendo os cursos de graduação e de\n pós-graduação (mestrado, doutorado e especialização); ensino médio; ensino\n fundamental e educação infantil. Importa ressaltar que a dedução é limitada ao valor\n de R$ 3.561,50 por indivíduo.\n \n );\n \n const SaudeText = (\n <>\n Consideram-se despesas médicas ou de hospitalização os pagamentos efetuados a\n profissionais da saúde de qualquer especialidade como médicos, dentistas, psicólogos,\n fisioterapeutas, terapeutas ocupacionais, fonoaudiólogos, etc. Além de\n hospitais, despesas provenientes de exames laboratoriais, serviços radiológicos,\n aparelhos ortopédicos, próteses ortopédicas e dentárias e planos de saúde.\n \n );\n \n const DependenteText = (\n <>\n A Receita Federal considera como dependentes, para efeito do imposto de\n renda:\n
\n 1 - Companheiro(a) com quem o contribuinte tenha filho ou viva há mais de 5\n anos, ou cônjuge;\n
\n 2 - Filho(a) ou enteado(a), até 21 anos de idade;\n
\n 3 – Filho(a) ou enteado(a) com deficiência, de qualquer idade, quando a sua\n remuneração não exceder as deduções autorizadas por lei (tendo em vista a\n decisão do Supremo Tribunal Federal – STF, na Ação Direta de\n Inconstitucionalidade nº 5.583/DF);\n
\n 4 - Filho(a) ou enteado(a), se ainda estiverem cursando estabelecimento de\n ensino superior ou escola técnica de segundo grau, até 24 anos de idade;\n
\n 5 - Irmão(ã), neto(a) ou bisneto(a), sem arrimo dos pais, de quem o\n contribuinte detenha a guarda judicial, até 21 anos, ou em qualquer idade,\n quando incapacitado física ou mentalmente para o trabalho;\n
\n 6 - Irmão(ã), neto(a) ou bisneto(a), sem arrimo dos pais, com idade de 21\n anos até 24 anos, se ainda estiver cursando estabelecimento de ensino\n superior ou escola técnica de segundo grau, desde que o contribuinte tenha\n detido sua guarda judicial até os 21 anos;\n
\n 7 - Irmão(ã), neto(a) ou bisneto(a) com deficiência, sem arrimo dos pais,\n do(a) qual o contribuinte detém a guarda judicial, em qualquer idade, quando\n a sua remuneração não exceder as deduções autorizadas por lei (tendo em\n vista a decisão do Supremo Tribunal Federal – STF, na Ação Direta de\n Inconstitucionalidade nº 5.583/DF);\n
\n 8 - Pais, avós e bisavós que, em 2021, tenham recebido rendimentos,\n tributáveis ou não, até R$ 22.847,76;\n
\n 9 - Menor pobre até 21 anos que o contribuinte crie e eduque e de quem\n detenha a guarda judicial;\n
\n 10 – Pessoa absolutamente incapaz, da qual o contribuinte seja tutor ou\n curador.\n \n );\n \n const PensaoText = (\n <>\n A Receita só aceita despesas alimentícias definidas em acordo judicial ou\n escritura pública. Outras despesas, mesmo que sejam feitas em prol do\n alimentando, não podem ser incluídas.\n \n );\n \n const AnualMensalText = (\n type:\n | \"gastos de saúde\"\n | \"gastos com educação\"\n | \"gastos com pensão\"\n | \"renda bruta\"\n ) => (\n <>\n Caso selecione a opção \"Anual\", insira o valor total de{\" \"}\n {type} que possui no ano. Caso selecione a opção \"Mensal\",\n insira a média de {type} por mês.\n \n );\n \n const HelpModalTexts = {\n rendaBrutaMensal: { body: SalarioText, title: \"Salário Bruto\" },\n gastoMensalSaude: { body: SaudeText, title: \"Gastos com saúde\" },\n gastoMensalEducacao: { body: EducacaoText, title: \"Gastos com educação\" },\n possuiDependentes: { body: DependenteText, title: \"Dependentes\" },\n pagaPensaoAlimenticia: { body: PensaoText, title: \"Gastos com pensão alimentícia\" },\n rendaAnualMensal: {\n body: AnualMensalText(\"renda bruta\"),\n title: \"Mensal ou anual\",\n },\n saudeAnualMensal: {\n body: AnualMensalText(\"gastos de saúde\"),\n title: \"Mensal ou anual\",\n },\n educacaoAnualMensal: {\n body: AnualMensalText(\"gastos com educação\"),\n title: \"Mensal ou anual\",\n },\n pensaoAnualMensal: {\n body: AnualMensalText(\"gastos com pensão\"),\n title: \"Mensal ou anual\",\n },\n };\n\n return (\n \n
\n
\n {!resume || editting ? (\n <>\n \n Simular economia ao aportar em PGBL\n \n \n \n \n Salário bruto }\n \n className=\"form-item\"\n style={{ fontWeight: \"bold\" }}\n rules={[\n {\n message: \"o salário bruto deve ser maior que 0\",\n validator: (_, value) => {\n if (currencyToNumber(value) > 0) {\n return Promise.resolve();\n }\n return Promise.reject(\n \"o salário bruto deve ser maior que 0\"\n );\n },\n },\n ]}\n >\n \n \n \n setActiveTabRenda(value)}\n getPopupContainer={(target) => target.parentElement!}\n >\n Mensal\n Anual\n \n \n \n\n \n Gastos com saúde }\n className=\"form-item\"\n style={{ fontWeight: \"bold\" }}\n >\n \n \n setActiveTabSaude(value)}\n getPopupContainer={(target) => target.parentElement!}\n >\n Mensal\n Anual\n \n \n \n Gastos com educação }\n className=\"form-item\"\n style={{ fontWeight: \"bold\" }}\n >\n \n \n setActiveTabEducacao(value)}\n getPopupContainer={(target) => target.parentElement!}\n >\n Mensal\n Anual\n \n \n \n Gastos com pensão alimentícia }\n className=\"form-item\"\n style={{ fontWeight: \"bold\" }}\n >\n \n \n setActiveTabPensao(value)}\n getPopupContainer={(target) => target.parentElement!}\n >\n Mensal\n Anual\n \n \n \n \n Dependentes }\n className=\"form-item\"\n style={{ fontWeight: \"bold\" }}\n >\n \n \n \n \n \n SIMULAR ECONOMIA\n \n \n \n ) : (\n <>\n \n \n \n \n Diagnóstico:\n \n }\n onClick={async () => {\n setLoadingReportPrev(true);\n const token = localStorage.getItem(\"@VeloTax:token\");\n await apiBolsa.post(\n `/xpinvestimentos/pgblCalculate/report`,\n { content: resume,\n info: selectedClient,\n rendaBrutaMensalMode: activeTabRenda ?? \"mensal\",\n rendaBrutaMensal: currencyToNumber(valuesToReport?.rendaMensal) ?? 0,\n possuiDependentes: valuesToReport?.dependentes > 0 ? true : false,\n possuiGastoMensalSaudeDependente:\n valuesToReport?.dependentes > 0 ? true : false,\n possuiGastoMensalEducacaoDependente:\n valuesToReport?.dependentes > 0 ? true : false,\n pagaPensaoAlimenticia: valuesToReport?.dependentes > 0 ? true : false,\n quantidadeDependente:\n valuesToReport?.dependentes > 0 ? valuesToReport?.dependentes : 0,\n gastoMensalSaudeDependenteMode: \"mensal\",\n gastoMensalSaudeDependente: 0,\n gastoMensalEducacaoDependenteMode: \"mensal\",\n gastoMensalEducacaoDependente: 0,\n gastoMensalSaudeMode: activeTabSaude ?? \"anual\",\n gastoMensalEducacaoMode: activeTabEducacao ?? \"anual\",\n gastoPensaoAlimenticiaMode: activeTabPensao ?? \"anual\",\n gastoMensalSaude: currencyToNumber(valuesToReport?.gastoSaude) ?? 0,\n gastoMensalEducacao: currencyToNumber(valuesToReport?.gastoEducacao) ?? 0,\n gastoPensaoAlimenticia: currencyToNumber(valuesToReport?.gastoPensao) ?? 0,\n },\n {\n headers: {\n Authorization: `Bearer ${token}`,\n ispro: 'true'\n },\n }\n )\n .then((response) => {\n let fileUrl;\n let file;\n if (response) {\n fileUrl = response?.data?.fileUrl;\n file = response?.data?.file;\n }\n if (fileUrl) {\n download(fileUrl);\n } else if (file) {\n downloadPDF(\n file,\n \"Previdência\"\n );\n }\n })\n .catch((err) => {\n console.log(err.message);\n message.error(\"Não foi possível baixar o relatório. Tente novamente mais tarde\");\n })\n .finally(() => {\n setLoadingReportPrev(false);\n });\n }}\n >\n Baixar\n \n \n {resume.o > 0 ? (\n <>\n \n \n \n \n
\n Ganhos totais previstos\n
\n
\n
\n \n
\n \n {formatCurrency(\n resume?.ganho\n )}\n \n \n
\n
\n \n \n \n
0) ? \"header-box-green\" : \"header-box-red\"}`}>\n Valor a investir em PGBL\n
\n
\n 0) ? \"text-green\" : \"text-red\"} span-text-inside`} \n style={{textAlign: \"center\", width: '100%'}}>\n {formatCurrency(\n resume?.m\n )}\n \n
\n
\n \n
\n \n \n \n
\n Descritivo\n
\n
\n Restituição de IRPF na declaração completa, considerando benefícios do PGBL (a)\n
\n
\n Restituição de IRPF na declaração simplificada (b)\n
\n
\n \n Ganho total em restituição de IRPF (a - b)\n \n
\n
\n \n \n \n
\n Valor\n
\n
\n {formatCurrency(\n resume?.completa?.valorRestituicao\n )}\n
\n
\n {formatCurrency(\n resume?.simplificada?.valorRestituicao\n )}\n
\n
\n \n {formatCurrency(\n resume?.completa?.valorRestituicao - resume?.simplificada?.valorRestituicao\n )}\n \n
\n
\n \n
\n \n \n ) : (\n \n \n Para o seu perfil, investir em VGBL pode ser uma melhor\n opção.\n \n \n )}\n \n \n EDITAR SIMULAÇÃO\n \n \n
\n
\n {/* {resume.o > 0 && (\n \n \n (1) A economia indicada é baseada na comparação entre a\n declaração feita de forma completa e desconto simplificado\n \n \n (2) A dedução de imposto de renda por aplicação de PGBL\n somente é válido para contribuintes do INSS.\n \n \n (3) Os valores simulados são para fins ilustrativos apenas,\n não englobando a possibilidade de perda no investimento em\n PGBL\n \n \n )} */}\n \n )}\n
\n
\n {(!resume || editting) && (
\n
\n \n Seu cliente pode ser elegível para ter economia com aporte em PGBL\n caso se enquadre em algum dos casos abaixo:\n \n
\n
    \n
  • Assalariado (CLT)
  • \n
  • Empresário (recebeu pró-labore)
  • \n
  • Autônomo
  • \n
  • MEI
  • \n
  • Aposentado (rendimentos acima de R$ 4.224,00 por mês)
  • \n
  • Servidor Público
  • \n
  • Recebeu renda de aluguel
  • \n
\n
\n
\n
)}\n setHelpModal(undefined)}\n >\n {helpModal?.body}\n \n
\n );\n};\n","import { Input, Select } from \"antd\";\nimport { useState } from \"react\";\nimport Masked from \"react-input-mask\";\nimport NumberFormat from \"react-number-format\";\nimport { cnpjInputMask, cpfInputMask } from \"../../utils\";\n\ninterface InputParams {\n name?: string;\n disabled?: boolean;\n placeholder?: string;\n onBlur?: any;\n}\n\ninterface MaskInputParams {\n name?: string;\n mask?: string;\n placeholder?: string;\n disabled?: boolean;\n onBlur?: any;\n}\n\ninterface NumberInputParams extends InputParams {\n prefix?: string;\n decimalScale?: number;\n allowNegative?: boolean;\n}\n\ninterface SelectInputParams extends InputParams {\n name?: string;\n options?: { label: string; value: any }[];\n onBlur?: any;\n}\n\nexport const TextInput = ({ placeholder, disabled, ...rest }: InputParams) => (\n {\n if (rest.onBlur) {\n rest.onBlur(rest.name, e.target.value);\n }\n }}\n />\n);\n\nexport const SelectInput = ({\n placeholder,\n disabled,\n options,\n ...rest\n}: SelectInputParams) => (\n trigger.parentNode}\n />\n);\n\nexport const SelectMultipleInput = ({\n disabled,\n assessoresSelected,\n handleChangeAssessores,\n professionals = [],\n}: any) => {\n return (\n trigger.parentNode}\n >\n {professionals.map((professional: any) => (\n \n
{professional.name}
\n
\n ))}\n \n );\n};\n\nexport const NumberInput = ({\n prefix = \"\",\n disabled = false,\n decimalScale = 2,\n placeholder = \"\",\n allowNegative = false,\n}: NumberInputParams) => (\n \n);\n\nexport const MaskInput = ({\n mask = \"\",\n placeholder = \"\",\n disabled = false,\n ...rest\n}: MaskInputParams) => (\n {\n if (rest.onBlur) {\n rest.onBlur(rest.name, e.target.value);\n }\n }}\n />\n);\n\nexport const MaskCpfCnpjInput = ({\n mask = \"\",\n placeholder = \"\",\n disabled = false,\n ...rest\n}: MaskInputParams) => {\n const [controlledInput, setControlledInput] = useState(\"\");\n const [isCnpj, setIsCnpj] = useState(false);\n const selectMask = isCnpj\n ? cnpjInputMask\n : controlledInput.length > 0\n ? cpfInputMask\n : \"\";\n return (\n {\n const value = e.target.value.replaceAll(/[._-]/g, \"\");\n if (mask === cpfInputMask) {\n if (value.length > 11) {\n setIsCnpj(true);\n setControlledInput(value);\n } else if (value.length >= 11 && controlledInput.length >= 11) {\n setIsCnpj(true);\n } else if (value.length < 11 && controlledInput.length < 11) {\n setIsCnpj(false);\n }\n }\n setControlledInput(value);\n }}\n onBlur={(e) => {\n if (rest.onBlur) {\n rest.onBlur(rest.name, e.target.value);\n }\n }}\n />\n );\n};\n","import { FormItemProps } from \"antd\";\nimport { currencyToNumber } from \"../../utils\";\nimport {\n MaskInput,\n NumberInput,\n TextInput,\n SelectInput,\n SelectMultipleInput,\n MaskCpfCnpjInput,\n} from \"../inputs\";\nimport {\n validationFieldRequired,\n validationDate,\n validationNumberFieldPositive,\n} from \"../../utils/formValidations\";\n\ninterface FormItemParams extends FormItemProps {\n name: string;\n span?: number;\n disabled?: boolean;\n options?: any;\n placeholder?: string;\n onChange?: (changed: any, values: any) => any;\n hide?: ((data: any) => boolean) | boolean;\n onBlur?: any;\n}\n\ninterface NumberFormItemParams extends FormItemParams {\n prefix?: string;\n decimalScale?: number;\n allowNegative?: boolean;\n}\n\ninterface MaskFormItemParams extends FormItemParams {\n mask?: string;\n}\n\ninterface SelectFormItemParams extends FormItemParams {\n options?: { label: string; value: any; disabled?: boolean }[];\n renderItem?: any;\n defaultValue?: any;\n}\n\nexport const MaskFormItem = ({\n mask,\n placeholder,\n disabled,\n ...rest\n}: MaskFormItemParams) => ({\n ...rest,\n input: MaskInput({\n mask,\n placeholder,\n disabled,\n ...rest,\n }),\n});\n\nexport const MaskCpfCnpjFormItem = ({\n mask,\n placeholder,\n disabled,\n ...rest\n}: MaskFormItemParams) => ({\n ...rest,\n input: MaskCpfCnpjInput({\n mask,\n placeholder,\n disabled,\n ...rest,\n }),\n});\n\nexport const DateFormItem = ({\n rules,\n placeholder,\n disabled,\n mask,\n ...rest\n}: MaskFormItemParams) => ({\n ...rest,\n rules: rules ? rules : validationDate,\n input: MaskInput({\n mask: mask ?? \"99/99/9999\",\n placeholder: placeholder || \"01/01/2021\",\n disabled,\n }),\n});\n\nexport const TextFormItem = ({\n rules,\n placeholder,\n disabled,\n ...rest\n}: FormItemParams) => ({\n ...rest,\n rules: rules || [],\n input: TextInput({ placeholder, disabled, ...rest }),\n});\n\nexport const SelectFormItem = ({\n placeholder,\n disabled,\n options,\n rules,\n ...rest\n}: SelectFormItemParams) => ({\n ...rest,\n rules: rules ?? validationFieldRequired,\n input: SelectInput({ placeholder, disabled, options, ...rest }),\n});\n\nexport const SelectMultipleFormItem = ({\n placeholder,\n disabled,\n options,\n rules,\n assessoresSelected,\n handleChangeAssessores,\n professionals,\n ...rest\n}: any) => ({\n ...rest,\n input: SelectMultipleInput({\n placeholder,\n disabled,\n options,\n assessoresSelected,\n handleChangeAssessores,\n professionals,\n }),\n});\n\nexport const NumberFormItem = ({\n name,\n label,\n rules = [],\n prefix = \"\",\n disabled = false,\n placeholder = \"\",\n decimalScale = 2,\n allowNegative = false,\n onChange,\n}: NumberFormItemParams) => ({\n name,\n label,\n rules,\n placeholder,\n input: NumberInput({\n prefix,\n decimalScale,\n placeholder,\n allowNegative,\n disabled,\n }),\n onChange: onChange\n ? onChange\n : (changed: any, values: any) =>\n changed[name]\n ? Number(changed[name].replace(/\\./g, \"\").replace(\",\", \".\")) || 0\n : values[name],\n});\n\nexport const CurrencyFormItem = ({\n name,\n label,\n rules = [],\n prefix = \"R$ \",\n disabled = false,\n decimalScale = 2,\n placeholder = \"R$ 0,00\",\n allowNegative = false,\n onChange,\n ...rest\n}: NumberFormItemParams) => ({\n ...rest,\n name,\n label,\n placeholder,\n rules: rules ? rules : validationNumberFieldPositive,\n input: NumberInput({\n prefix,\n decimalScale,\n placeholder,\n allowNegative,\n disabled,\n }),\n onChange: onChange\n ? onChange\n : (changed: any, values: any) =>\n changed[name] ? currencyToNumber(changed[name], prefix) : values[name],\n});\n","export const permissoes = [\n {\n label: \"Adicionar clientes\",\n assessor: true,\n gerente: true,\n admin: true,\n },\n {\n label: \"Enviar DARFs automaticamente\",\n assessor: true,\n gerente: true,\n admin: true,\n },\n {\n label: \"Contratar plano via cartão de crédito\",\n assessor: true,\n gerente: true,\n admin: true,\n },\n {\n label: \"Contratar planos via concierge\",\n assessor: false,\n gerente: true,\n admin: true,\n },\n {\n label: \"Adicionar novos assessores\",\n assessor: false,\n gerente: false,\n admin: true,\n },\n {\n label: \"Visualizar e editar informações dos clientes\",\n assessor: false,\n gerente: false,\n admin: true,\n },\n {\n label: \"Visualizar e editar informações dos assessores\",\n assessor: false,\n gerente: false,\n admin: true,\n },\n {\n label: \"Visualização das faturas mensais consolidadas\",\n assessor: false,\n gerente: false,\n admin: true,\n },\n];\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_6631_165240)\"\n}, /*#__PURE__*/React.createElement(\"ellipse\", {\n opacity: 0.08,\n cx: 199.244,\n cy: 119.397,\n rx: 100,\n ry: 140,\n transform: \"rotate(-60 199.244 119.397)\",\n fill: \"#808080\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 108,\n y: 120,\n width: 264,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 180,\n y: 144,\n width: 120,\n height: 8,\n rx: 4,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 180,\n y: 159,\n width: 72,\n height: 8,\n rx: 4,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 148,\n cy: 160,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 36,\n y: 32,\n width: 264,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 108,\n y: 56,\n width: 120,\n height: 8,\n rx: 4,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 108,\n y: 71,\n width: 72,\n height: 8,\n rx: 4,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 76,\n cy: 72,\n r: 20,\n fill: \"#E8E8E8\"\n}));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_6631_165240\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 408,\n height: 240,\n fill: \"white\"\n})));\n\nfunction SvgEmpty(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 408,\n height: 240,\n viewBox: \"0 0 408 240\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEmpty);\nexport default __webpack_public_path__ + \"static/media/empty.0114c930.svg\";\nexport { ForwardRef as ReactComponent };","import clsx from \"clsx\";\nimport { RcFile } from \"antd/lib/upload\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport { useEffect, useState } from \"react\";\nimport { GrAddCircle } from \"react-icons/gr\";\nimport { BiX, BiCheck } from \"react-icons/bi\";\nimport { HiOutlineDownload } from \"react-icons/hi\";\nimport { IoMdAddCircleOutline } from \"react-icons/io\";\nimport { UploadRequestOption } from \"rc-upload/lib/interface\";\nimport { BsThreeDotsVertical, BsTrash } from \"react-icons/bs\";\nimport {\n AiOutlineSearch,\n AiFillInfoCircle,\n AiOutlineUpload,\n AiOutlineDownload,\n AiOutlineClose,\n} from \"react-icons/ai\";\nimport {\n Typography,\n Input,\n Row,\n Col,\n Table,\n message,\n Modal,\n Dropdown,\n Card,\n Tooltip,\n} from \"antd\";\nimport api from \"../../services/api\";\nimport { isMobile } from \"../../utils\";\nimport { maskCpf } from \"../../utils/mask\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { FormModal } from \"../../components/FormModal\";\nimport UploadVelotax from \"../../components/UploadVelotax\";\nimport { DrawerModal } from \"../../components/DrawerModal\";\nimport { permissoes } from \"../../constants/others/permissoes\";\nimport { AssessorFormItemRows } from \"../../constants/clients\";\nimport { IProfessional, useClients } from \"../../contexts/ClientsContext\";\nimport { ReactComponent as EmptyIcon } from \"../../assets/icons/empty.svg\";\nimport DeleteConfirmationModal from \"../../components/DeleteConfirmationModal\";\nimport {\n SideContent,\n Container,\n Content,\n EmptyContainer,\n ClientContainer,\n ClientPlanContent,\n} from \"../Clients/styles\";\n\nexport const assessorTooltip = () => (\n
    \n
  • \n Apenas assessores cadastrados com nível de Gerente ou Administrador\n poderão efetuar a contratação de planos para seus usuários em nome do\n escritório\n
  • \n
\n);\n\nvar debounce: NodeJS.Timeout;\n\nexport const Professionals: React.FC = () => {\n const { user } = useAuth();\n const {\n newClient,\n createClient,\n setNewClient,\n professionals,\n professionalGet,\n getProfessionals,\n totalProfessionals,\n removeProfessional,\n updateProfessional,\n handleDownloadSheet,\n } = useClients();\n\n const [errors, setErrors] = useState([]);\n const [sendRequest, setSendRequest] = useState(true);\n const [itemRemove, setItemRemove] = useState({});\n const [loadingFile, setLoadingFile] = useState(false);\n const [optionsModal, setOptionsModal] = useState(false);\n const [firstSelected, setFirsSelected] = useState(false);\n const [csvModalVisible, setCsvModalVisible] = useState(false);\n const [errorModalVisible, setErrorModalVisible] = useState(false);\n const [deleteModalVisible, setDeleteModalVisible] = useState(false);\n const [createModalVisible, setCreateModalVisible] = useState(false);\n const [modalPermissaoVisible, setModalPermissaoVisible] = useState(false);\n const [selectedProfessional, setSelectedProfessional] =\n useState();\n\n const dataSource = professionals;\n const hosts = [\"-dev\", \"local\"];\n const env = hosts.some((host) => window.location.host.includes(host))\n ? \"_dev\"\n : \"\";\n\n const acesso: any = {\n admin: \"Administrador\",\n gerente: \"Gerente\",\n assessor: \"Assessor\",\n };\n\n const handleEdit = (item: any) => {\n setCreateModalVisible(!createModalVisible);\n setNewClient(item);\n };\n\n const beforeUpload = (file: RcFile) => {\n setSendRequest(true);\n if (\n ![\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \"application/vnd.ms-excel\",\n \"text/x-csv\",\n \"text/plain\",\n \"text/tab-separated-values\",\n \"text/x-comma-separated-values\",\n \"text/comma-separated-values\",\n \"application/x-csv\",\n \"application/csv\",\n ].includes(file.type)\n ) {\n message.error(\"Envie um arquivo do tipo CSV\");\n setSendRequest(false);\n }\n };\n\n const customRequest = ({ file }: UploadRequestOption) => {\n const formData = new FormData();\n if (!sendRequest) return;\n formData.append(\"file\", file);\n setLoadingFile(true);\n api\n .post(\"/assessores/batch\", formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n })\n .then(({ data }) => {\n setLoadingFile(false);\n setCsvModalVisible(!csvModalVisible);\n if (data?.errors?.length === 0) {\n message.success(\"Integração iniciada com sucesso\");\n } else {\n message.error(\n \"Erro durante inserção. Favor conferir no modal apresentado.\"\n );\n setErrors(data.errors);\n setErrorModalVisible(true);\n }\n getProfessionals();\n })\n .catch((error) => {\n setLoadingFile(false);\n message.error(error.response.data.message);\n });\n };\n\n const setOptionsModalVisibility = () => {\n setOptionsModal(!optionsModal);\n setNewClient(null);\n };\n\n const setCsvModalVisibility = () => {\n setCsvModalVisible(!csvModalVisible);\n setOptionsModal(!optionsModal);\n setNewClient(null);\n };\n\n const setDeleteModalVisiblity = () => {\n setDeleteModalVisible(!deleteModalVisible);\n };\n\n const setCreateModalVisiblity = () => {\n setCreateModalVisible(!csvModalVisible);\n setOptionsModal(!optionsModal);\n setNewClient(null);\n };\n\n const handleSearch = (value: string) => {\n if (debounce) clearTimeout(debounce);\n debounce = setTimeout(() => {\n getProfessionals(1, value);\n }, 1000);\n };\n\n const handleRemove = (data: any) => {\n setDeleteModalVisible(!deleteModalVisible);\n setItemRemove(data);\n };\n\n useEffect(() => {\n getProfessionals();\n }, [getProfessionals]);\n\n useEffect(() => {\n if (!isMobile() && !firstSelected && professionals?.length > 0) {\n setFirsSelected(true);\n setSelectedProfessional(professionals[0]);\n }\n }, [professionals, firstSelected]);\n\n return (\n \n \n \n \n \n Assessores\n \n \n \n }\n onClick={setOptionsModalVisibility}\n >\n Adicionar\n \n \n \n }\n onChange={(e) => handleSearch(e.target.value)}\n />\n \n \n \n item._id === selectedProfessional?._id ? \"selected-client\" : \"\"\n }\n pagination={{\n defaultPageSize: 10,\n total: totalProfessionals,\n showLessItems: true,\n showSizeChanger: false,\n }}\n onChange={(pagination) => {\n getProfessionals(pagination.current);\n }}\n columns={[\n {\n title: (\n <>\n
\n
\n }\n onClick={() => {\n if (professionals.length > 0) {\n handleDownloadSheet(\"Assessores\");\n }\n }}\n />\n
\n
\n \n ),\n render: (_, item) => (\n {\n setSelectedProfessional(item);\n }}\n >\n \n \n {item.name}\n \n \n \n \n \n {acesso[item?.acesso]}\n \n \n \n
\n ),\n },\n ]}\n />\n \n \n
\n 0 && selectedProfessional,\n })}\n >\n {professionals?.length === 0 ? (\n \n \n \n Olá, {user.user.name}!\n \n \n Para iniciar, adicione e selecione clientes na lista ao lado para\n visualizar mais detalhes.\n \n \n ) : selectedProfessional ? (\n \n
\n }\n onClick={() => {\n handleEdit(selectedProfessional);\n }}\n >\n Editar\n \n ,\n onClick: () => handleRemove(selectedProfessional),\n },\n ],\n }}\n >\n }\n onClick={(e) => e.preventDefault()}\n />\n \n }\n onClick={() => {\n setSelectedProfessional(undefined);\n }}\n />\n
\n
\n \n {selectedProfessional.name}\n \n \n \n \n {acesso[selectedProfessional?.acesso]}\n \n setModalPermissaoVisible(true)}\n />\n \n \n \n \n \n \n
CPF:
\n
\n {maskCpf(selectedProfessional.username)}\n
\n \n \n
E-mail:
\n
\n {selectedProfessional.email}\n
\n \n
\n
\n
\n ) : (\n <>\n )}\n setOptionsModal(!optionsModal)}\n >\n \n \n \n Escolha a forma que deseja adicionar o assessor:\n \n \n \n \n \n \n

\n Adicionar assessores manualmente\n

\n
\n
\n \n \n \n \n \n

\n Importar assessores de planilha Excel\n

\n
\n
\n \n
\n \n setCsvModalVisible(false)}\n >\n \n \n \n window.open(\n `https://velotax-assets.s3.amazonaws.com/cadastro_assessor_xp${env}.xlsx`\n )\n }\n >\n Baixar planilha modelo\n

\n \n \n \n
\n \n {\n setDeleteModalVisible(false);\n }}\n setVisibility={setDeleteModalVisiblity}\n onOk={() => removeProfessional(itemRemove)}\n />\n {\n setCreateModalVisible(false);\n }}\n add={(data: any) => {\n createClient({ ...data, professional: true });\n setCreateModalVisible(false);\n setOptionsModal(false);\n }}\n edit={(data: any) => {\n updateProfessional(data);\n setCreateModalVisible(false);\n setOptionsModal(false);\n }}\n />\n setErrorModalVisible(false)}\n >\n \n (\n <>\n \n {item.user}\n \n \n \n

\n {maskCpf(item.cpf)}\n

\n \n
\n \n ),\n },\n {\n title: \"Linha do excel\",\n align: \"center\",\n render: (_, item) => (\n \n {item.position}\n \n ),\n },\n {\n title: \"Mensagem\",\n render: (_, item) => (\n \n {item.message}\n \n ),\n },\n ]}\n />\n
\n \n setModalPermissaoVisible(false)}\n >\n (\n \n {item.label}\n \n ),\n },\n {\n title: \"Assessor\",\n align: \"center\",\n render: (_, item) =>\n item.assessor ? (\n \n ) : (\n \n ),\n },\n {\n title: \"Gerente\",\n align: \"center\",\n render: (_, item) =>\n item.gerente ? (\n \n ) : (\n \n ),\n },\n {\n title: \"Administrador\",\n align: \"center\",\n render: (_, item) =>\n item.admin ? (\n \n ) : (\n \n ),\n },\n ]}\n >\n \n \n
\n );\n};\n","import { useState } from \"react\";\nimport { message, ModalProps } from \"antd\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport api from \"../../services/api\";\nimport { PaymentModal } from \"../Payment\";\nimport { UserPlans } from \"../../constants/plans\";\nimport { ChoosePlanStep } from \"./ChoosePlanStep\";\nimport { Content, Loading, PlanModalStyled } from \"./styles\";\nimport { IClient, useClients } from \"../../contexts/ClientsContext\";\n\ninterface IUserPlanModal extends ModalProps {\n modalPlans?: any[];\n paymentData?: any;\n closeModal?: any;\n open?: boolean;\n setOpen?: any;\n setClientsSelected?: any;\n clientsSelected?: IClient[];\n userCount: number;\n paymentType: string;\n setPaymentType: Function;\n createConciergePlan: React.MouseEventHandler;\n clientsWithCancelRecurring?: IClient[];\n showPaymentModal?: boolean;\n setShowPaymentModal?: any;\n selectedPlan: any\n setSelectedPlan: any\n}\n\nvar getStatus: NodeJS.Timeout;\n\nexport const UserPlanModal: React.FC = ({\n open,\n title,\n setOpen,\n onCancel,\n userCount,\n modalPlans,\n closeModal,\n paymentData,\n paymentType,\n setPaymentType,\n clientsSelected,\n showPaymentModal,\n setClientsSelected,\n createConciergePlan,\n setShowPaymentModal,\n clientsWithCancelRecurring,\n selectedPlan,\n setSelectedPlan,\n ...rest\n}) => {\n const { selectedClient, getClients } = useClients();\n const [loading] = useState(false);\n const [closable] = useState(true);\n const isActive = selectedClient?.userPlanInfoVelotax?.active;\n const planBought = selectedClient?.userPlanInfoVelotax?.type ?? \"\";\n const isCancelRecurring = (clientsWithCancelRecurring || []).length > 0;\n\n const handleSuccess = (data: any) => {\n checkWasPaid(data.paymentId, 4);\n };\n\n const checkWasPaid = (id: string, delay: number = 2) => {\n let attempts = 0;\n\n getStatus = setInterval(async () => {\n api\n .get(\n `/clients/user/${selectedClient?.username}?userId=${selectedClient?._id}`\n )\n .then((res) => {\n if (res.data?.plan) {\n clearInterval(getStatus);\n message.success(\"Pagamento Confirmado com sucesso\");\n closeModal();\n getClients();\n }\n })\n .finally(() => {\n attempts += 1;\n\n if (attempts > 100) {\n clearInterval(getStatus);\n }\n });\n }, delay * 1000);\n };\n return (\n <>\n {showPaymentModal ? (\n {}}\n onSucessCreditCard={handleSuccess}\n planCurrent={UserPlans[selectedPlan]}\n clientSelected={clientsSelected?.[0]}\n createConciergePlan={createConciergePlan}\n disableCreditCardOption={(clientsSelected || [])?.length > 1}\n onCancel={() => {\n setShowPaymentModal(false);\n closeModal(false);\n }}\n paymentData={{\n ...paymentData,\n type: UserPlans[selectedPlan]?.type,\n isPlan: true,\n }}\n disableCreditCardMessage={\n (clientsSelected || [])?.length > 1\n ? \"Para contratar via cartão, selecione apenas um cliente por vez\"\n : \"\"\n }\n />\n ) : (\n {\n setOpen(false);\n setClientsSelected([]);\n }}\n {...rest}\n >\n \n {loading && (\n \n \n \n )}\n\n {\n setShowPaymentModal(true);\n setOpen(false);\n }}\n />\n \n \n )}\n \n );\n};\n","import React, { useState } from \"react\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Col, Divider, message, Modal, Row } from \"antd\";\nimport Button from \"../Button\";\n\ninterface IDeleteConfirmationModalProps {\n title: string;\n visibility: boolean;\n body: React.ReactNode;\n onCancel: () => void;\n onOk?: () => Promise;\n updateData?: () => void;\n setVisibility: (param: any) => void;\n buttonLabel?: string;\n showToast?: boolean;\n}\n\nconst DeleteConfirmationModal: React.FC = ({\n title,\n visibility,\n onCancel,\n onOk,\n body,\n updateData,\n setVisibility,\n buttonLabel,\n showToast = true\n}) => {\n const [loading, setLoading] = useState(false);\n const handleOnOk = () => {\n setLoading(true);\n const finish = () => {\n setLoading(false);\n updateData?.();\n setVisibility(false);\n showToast && message.success(\"Deletado com sucesso\");\n };\n if (onOk) {\n onOk()\n .then(() => finish())\n .catch((err) => {\n showToast && message.error(\"Algo deu errado\");\n setLoading(false);\n });\n } else {\n finish();\n }\n };\n return (\n \n

{body}

\n \n \n \n \n Cancelar\n \n \n \n \n {loading && }\n {buttonLabel || \"Deletar\"}\n \n \n \n \n );\n};\n\nexport default DeleteConfirmationModal;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n height: 100%;\n display: flex;\n\n .clientsSelectedDrawer > .ant-drawer-content-wrapper {\n height: 7rem !important;\n }\n .clientsSelectedDrawer > .ant-drawer-mask {\n display: none;\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n }\n`;\n\nexport const ContainerProventos: any = styled.div`\n height: 400px;\n width: 100%;\n .empty-data {\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n p {\n margin-top: 8px;\n font-weight: 500;\n }\n }\n .container-tooltip {\n display: flex;\n flex-direction: column;\n background-color: white;\n margin-top: 5px;\n padding: 5px;\n width: 100%;\n }\n .recharts-default-legend {\n display: inline !important;\n li {\n margin-right: 15px !important;\n }\n }\n .recharts-bar-rectangle {\n cursor: pointer;\n }\n .recharts-legend-wrapper {\n bottom: 0px !important;\n }\n .ant-select-selection-placeholder {\n display: flex;\n align-items: center;\n }\n\n .recharts-legend-wrapper {\n left: 0px !important;\n }\n\n .recharts-layer > text {\n font-size: 12px;\n font-weight: 400;\n fill: black;\n }\n .ant-btn {\n border-radius: 10px;\n }\n .filter-proventos {\n width: 100%;\n display: flex;\n margin-bottom: 16px;\n button.ant-btn.ant-btn-default {\n height: 40px;\n svg.fill {\n fill: var(--ant-primary-color);\n }\n }\n .ant-select {\n margin-right: 8px;\n }\n .ant-select:not(:first-of-type) {\n margin-right: auto;\n }\n }\n @media only screen and (max-device-width: 812px) {\n margin-bottom: 64px;\n .filter-proventos {\n flex-wrap: wrap;\n .ant-select:first-of-type {\n width: 25%;\n }\n .ant-select:not(:first-of-type) {\n margin-right: 0;\n width: calc(75% - 8px);\n }\n button.ant-btn.ant-btn-default {\n width: 50%;\n }\n }\n .container-tooltip {\n width: auto;\n }\n .recharts-legend-wrapper {\n width: 100% !important;\n .recharts-default-legend {\n text-align: left !important;\n .recharts-legend-item {\n display: block !important;\n }\n }\n }\n }\n`;\n\nexport const BlurContent = styled.div`\n width: 100%;\n margin: 10px;\n position: relative;\n user-select: none;\n border-radius: 4px;\n .blur-content {\n opacity: 0.5;\n filter: blur(4px);\n }\n .blur-content-title {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0 100px;\n font-weight: 500;\n font-size: 1.25rem;\n text-align: center;\n row-gap: 16px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n color: var(--velotax-font-color-light);\n }\n\n @media only screen and (max-device-width: 812px) {\n .blur-content-title {\n padding: 0 16px;\n font-size: 1rem;\n }\n }\n`;\n\nexport const BlurContentProventos = styled.div`\n width: 100%;\n margin: 10px;\n position: relative;\n user-select: none;\n border-radius: 4px;\n .blur-content {\n opacity: 0.5;\n filter: blur(4px);\n }\n .blur-content-title {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0 100px;\n font-weight: 500;\n font-size: 1.25rem;\n text-align: center;\n row-gap: 16px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n color: var(--velotax-font-color-light);\n }\n\n @media only screen and (max-device-width: 812px) {\n .blur-content-title {\n padding: 0 16px;\n font-size: 1rem;\n }\n }\n`;\n\nexport const SideContent = styled.div`\n padding: 24px;\n min-width: 420px;\n max-width: 420px;\n max-height: 100%;\n overflow-y: hidden;\n box-shadow: 0px 0px 8px #e0e0e0;\n\n & > .ant-row {\n height: 100%;\n align-items: start;\n .ant-col-clients-table {\n height: calc(100% - 87px);\n .ant-table-wrapper {\n height: 100%;\n .ant-spin-nested-loading {\n height: 100%;\n .ant-spin-container {\n height: calc(100% - 56px);\n .ant-table-pagination {\n width: 100%;\n bottom: -56px;\n margin: 0 0 0;\n padding: 12px 16px;\n position: absolute;\n border-top: 1px solid var(--ghost);\n }\n .ant-table {\n height: 100%;\n .ant-table-container {\n height: 100%;\n .ant-table-content {\n height: 100%;\n overflow-y: auto;\n position: relative;\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n width: 0;\n }\n & > table {\n .ant-table-thead {\n top: 0;\n z-index: 1;\n position: sticky;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n .ant-table-pagination {\n display: flex;\n align-items: center;\n }\n\n .ant-row\n .ant-col-clients-table\n .ant-table-wrapper\n .ant-spin-nested-loading\n .ant-spin-container\n .ant-table-pagination {\n background-color: white;\n justify-content: center;\n }\n\n .ant-btn.ant-btn-primary.ant-btn-lg.ant-btn-block {\n height: 44px;\n font-size: 14px;\n }\n\n .ant-table-wrapper {\n max-width: unset;\n margin-left: -24px;\n width: calc(100% + 48px);\n\n .ant-table-row.selected-client {\n .ant-table-cell {\n background-color: #f8f8f8;\n &:not(.ant-table-selection-column) {\n border-right: 8px solid var(--ant-primary-color);\n }\n }\n }\n\n th.ant-table-cell.ant-table-selection-column {\n padding: 16px 0 16px 24px;\n }\n td.ant-table-cell.ant-table-selection-column {\n vertical-align: top;\n padding: 20px 0 16px 24px;\n }\n }\n .client-table-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n &.professionals {\n justify-content: end;\n }\n .client-table-header-btns {\n display: flex;\n column-gap: 8px;\n align-items: center;\n .ant-btn {\n height: 32px;\n min-width: 32px;\n font-weight: 500;\n border-radius: 24px;\n border: 1px solid var(--ghost);\n &.filtro-aplicado {\n color: var(--ant-primary-color);\n border: 1px solid var(--ant-primary-color);\n background-color: var(--ant-primary-1);\n }\n svg {\n fill: none;\n width: 18px;\n height: 18px;\n stroke: var(--ant-primary-color);\n &.fill {\n path {\n stroke: var(--ant-primary-color);\n }\n }\n }\n }\n }\n }\n\n .integration-indicator {\n /* position: absolute;\n top: 0;\n right: 0;\n width: fit-content; */\n display: flex;\n margin-left: 8px;\n transform: translateY(-1px);\n }\n .client-name {\n font-size: 14px;\n font-weight: 500;\n display: flex;\n align-items: center;\n svg {\n width: 16px;\n height: 16px;\n margin-left: 8px;\n }\n }\n .client-notification {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 18px;\n height: 18px;\n display: flex;\n color: var(--white);\n border-radius: 9px;\n align-items: center;\n justify-content: center;\n background-color: var(--ant-error-color);\n &.large {\n width: 24px;\n span {\n font-size: 10px;\n line-height: 10px;\n }\n }\n span {\n font-weight: 500;\n font-size: 11px;\n line-height: 11px;\n }\n }\n .client-integration {\n margin-top: 10px;\n .ant-tag {\n font-size: 10px;\n }\n }\n .no-integration {\n color: var(--gray-1);\n border-color: var(--ghost);\n background-color: var(--ghost);\n }\n .has-integration {\n border-color: #e0f7ee;\n background-color: #e0f7ee;\n color: var(--ant-success-color);\n }\n\n .mobile-actions {\n display: none;\n }\n\n @media only screen and (max-device-width: 812px) {\n min-width: 100%;\n max-width: 100%;\n position: relative;\n & > .ant-row {\n .ant-col-clients-table {\n height: calc(100% - 124px + 32px);\n }\n }\n .mobile-actions {\n left: 0;\n bottom: 0;\n width: 100%;\n height: 56px;\n display: flex;\n padding: 8px 16px;\n position: absolute;\n background-color: var(--white);\n .ant-btn {\n height: 100%;\n }\n }\n }\n`;\n\nexport const Content = styled.div`\n flex-grow: 1;\n height: 100%;\n padding: 32px 64px 96px;\n background-color: var(--ghost);\n overflow-x: hidden;\n overflow-y: auto;\n\n .calc-status {\n /* width: fit-content; */\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 6px;\n span:first-of-type {\n width: 8px;\n height: 8px;\n min-width: 8px;\n min-height: 8px;\n border-radius: 4px;\n display: inline-block;\n background-color: var(--red);\n &.Regular {\n background-color: var(--green-1);\n }\n &.NOT_PAYED {\n background-color: var(--yellow);\n }\n }\n }\n\n .ant-btn-group.ant-dropdown-button {\n .ant-btn {\n text-transform: none;\n border-color: var(--dark-1);\n :first-of-type {\n border-radius: 24px;\n margin-right: 8px;\n }\n :last-of-type {\n border-radius: 24px;\n }\n :disabled,\n :hover {\n color: var(--gray-1);\n border-color: var(--gray-1);\n }\n &.ant-dropdown-trigger {\n svg {\n fill: var(--dark-1);\n }\n :disabled,\n :hover {\n svg {\n fill: var(--gray-1);\n }\n }\n }\n }\n }\n\n .ant-list.ant-list-split {\n padding: 0 32px;\n border: 2px solid var(--dark-1);\n border-radius: 8px;\n .ant-list-item-action > li {\n padding: 0;\n }\n }\n .ant-list-item {\n padding: 20px 0;\n }\n .ant-list-item-meta-title {\n font-size: 1rem;\n font-weight: 700;\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--white);\n }\n .ant-list-item-action {\n display: flex;\n row-gap: 4px;\n column-gap: 8px;\n\n .ant-btn.hire-btn {\n color: var(--ant-primary-color) !important;\n border-color: var(--dark-1);\n background-color: var(--dark-1);\n }\n\n .ant-btn.action-btn {\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: space-between;\n row-gap: 0;\n height: 48px;\n padding: 0 4px;\n font-size: 14px;\n color: var(--white);\n\n svg,\n svg * {\n stroke: var(--ant-primary-color);\n }\n }\n }\n .ant-list-item-action-split {\n display: none;\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n\n .ant-btn {\n span {\n line-height: 18px;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n svg {\n min-width: 20px;\n min-height: 20px;\n }\n }\n\n .resp {\n p {\n margin: 0;\n text-align: left;\n max-width: 128px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n left: 0;\n top: 100%;\n z-index: 2;\n padding: 0;\n position: fixed;\n border-radius: 0;\n transition: top 0.2s;\n background-color: var(--white);\n\n &.mobile-show {\n top: 0;\n width: 100%;\n z-index: 5;\n }\n\n .ant-list.ant-list-split {\n padding: 0 16px;\n font-size: 12px;\n\n .ant-list-item {\n padding: 16px 0;\n }\n\n .ant-list-item-action {\n flex-direction: column;\n }\n }\n\n .ant-table-content {\n overflow-y: auto;\n }\n }\n`;\n\nexport const ClientPlanContent = styled.div`\n .client-plan {\n height: 20px;\n display: flex;\n font-size: 10px;\n color: var(--gray-2);\n &.professional {\n display: flex;\n font-size: 12px;\n column-gap: 4px;\n align-items: center;\n }\n }\n .client-no-plan {\n height: 24px;\n display: flex;\n font-size: 10px;\n font-weight: 500;\n align-items: center;\n color: var(--ant-error-color);\n svg {\n margin-top: -1px;\n }\n }\n`;\n\nexport const EmptyContainer = styled.div`\n height: 100%;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n h1 {\n font-size: 32px;\n font-weight: 600;\n line-height: 40px;\n text-align: center;\n color: var(--dark-2);\n letter-spacing: -0.32px;\n margin-top: 32px;\n }\n div.ant-typography {\n max-width: 400px;\n color: var(--dark-2);\n text-align: center;\n font-size: 16px;\n font-weight: 300;\n line-height: 24px;\n }\n\n .action-buttons {\n min-width: 540px;\n justify-content: center;\n .btn-underlined {\n span {\n font-weight: 500;\n padding-bottom: 4px;\n border-bottom: 2px solid var(--ant-primary-color);\n }\n }\n .button-disabled-plan {\n position: relative;\n\n .over-button-disabled {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 999;\n }\n }\n }\n\n .close-selection {\n display: none;\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n height: auto;\n padding: 24px;\n min-height: 100%;\n position: relative;\n svg {\n width: 100%;\n height: auto;\n }\n div.ant-typography {\n max-width: 100%;\n }\n .action-buttons {\n min-width: unset;\n max-width: 100%;\n }\n .close-selection {\n display: flex;\n position: absolute;\n top: 24px;\n right: 24px;\n }\n }\n`;\n\nexport const ClientContainer = styled.div`\n min-width: 640px;\n max-width: 895px;\n margin: 0 auto;\n .ant-badge-count.ant-badge-multiple-words {\n padding: 0 4px;\n }\n .client-actions {\n display: flex;\n align-items: center;\n justify-content: end;\n column-gap: 8px;\n margin-bottom: 24px;\n\n .close-client {\n display: none;\n }\n\n .ant-btn {\n border: none;\n height: 40px;\n font-size: 14px;\n min-width: 40px;\n font-weight: 500;\n border-radius: 24px;\n background: rgba(171, 170, 168, 0.24);\n &:active,\n &:focus,\n &:hover {\n color: var(--gray-1);\n }\n }\n }\n .client-content {\n padding: 48px;\n border-radius: 8px;\n background-color: var(--white);\n box-shadow: 0px 4px 8px 0px #e0e0e0;\n position: relative;\n\n .client-header {\n min-height: 40px;\n }\n\n h1 {\n display: flex;\n font-size: 28px;\n font-weight: 600;\n line-height: 32px;\n color: var(--black);\n align-items: center;\n margin-bottom: 4px;\n svg {\n margin-left: 16px;\n }\n span {\n display: flex;\n align-items: center;\n }\n\n .contratar-plano {\n margin-left: auto;\n .ant-btn {\n height: 40px;\n }\n }\n }\n\n .notification-button {\n position: absolute;\n right: 40px;\n top: 40px;\n\n button {\n width: 52px;\n height: 52px;\n border-radius: 50%;\n background-color: var(--ant-primary-color);\n transition: 0.3s;\n\n &:hover {\n background-color: var(--ant-primary-5);\n box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.1) !important;\n transition: 0.3s;\n }\n }\n\n svg {\n font-size: 28px;\n }\n }\n }\n\n .client-info {\n padding-top: 12px;\n margin: 24px 0 32px;\n border-top: 1px solid var(--ghost);\n &.professional {\n margin: 24px 0 8px;\n }\n .client-info-title {\n color: var(--dark-2);\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n }\n .client-info-data {\n color: var(--gray-2);\n font-size: 14px;\n font-weight: 300;\n line-height: 20px;\n .dashed {\n border-bottom: 1px dashed var(--gray-2);\n }\n .concierge {\n color: var(--gray-2);\n cursor: pointer;\n }\n .ativar-concierge {\n color: blue;\n opacity: 0.8;\n cursor: pointer;\n align-items: center;\n display: flex;\n justify-content: space-around;\n }\n }\n }\n\n .client-details {\n padding: 32px 48px 0;\n margin-left: -48px;\n margin-bottom: -48px;\n width: calc(100% + 96px);\n background-color: #f8f8f8;\n border-radius: 0 0 8px 8px;\n\n .tab-title {\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n transform: translateY(-1px);\n margin-left: 4px;\n }\n }\n\n .spinTabs {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .client-details-loading {\n height: 128px;\n display: flex;\n align-items: center;\n padding-bottom: 32px;\n justify-content: center;\n .anticon-loading {\n width: 32px;\n height: 32px;\n svg {\n width: 32px;\n height: 32px;\n fill: var(--ant-primary-color);\n }\n }\n }\n }\n\n .ant-tabs {\n &.gambiarra-uma-tab {\n .ant-tabs-nav {\n .ant-tabs-nav-wrap {\n .ant-tabs-nav-list {\n .ant-tabs-ink-bar {\n left: 0 !important;\n width: 100% !important;\n }\n .ant-tabs-tab {\n width: 100%;\n }\n }\n }\n }\n }\n .ant-tabs-tab + .ant-tabs-tab {\n margin: 0;\n }\n .ant-tabs-nav {\n margin: 0 0 32px;\n .ant-tabs-nav-operations {\n display: none;\n }\n .ant-tabs-nav-wrap {\n .ant-tabs-nav-list {\n width: 100%;\n .ant-tabs-ink-bar {\n background-color: var(--black);\n }\n .ant-tabs-tab {\n width: 50%;\n justify-content: center;\n .ant-tabs-tab-btn {\n font-size: 16px;\n font-weight: 500;\n line-height: 24px;\n color: var(--gray-1);\n text-transform: uppercase;\n }\n &.ant-tabs-tab-active {\n .ant-tabs-tab-btn {\n color: var(--black);\n }\n }\n }\n }\n }\n }\n }\n\n .aviso-list-empty {\n padding: 16px;\n margin-top: 0;\n border-radius: 8px;\n text-align: center;\n margin-bottom: 48px;\n color: var(--velotax-font-color);\n background-color: var(--ghost);\n }\n\n .client-integration-card {\n padding: 24px;\n border-radius: 8px;\n background-color: var(--ant-primary-1);\n border: 1px solid var(--ant-primary-color);\n display: flex;\n align-items: start;\n margin-bottom: 1rem;\n &:last-of-type {\n /* margin-bottom: 48px; */\n }\n & > svg {\n min-width: 32px;\n min-height: 32px;\n color: var(--ant-primary-color);\n stroke: var(--ant-primary-color);\n &.fill {\n fill: var(--ant-primary-color);\n }\n }\n\n .client-integration-card-content {\n width: 100%;\n margin-left: 16px;\n h3 {\n color: var(--gray-3);\n font-size: 16px;\n font-weight: 600;\n line-height: 24px;\n margin-bottom: 8px;\n }\n div.ant-typography {\n color: var(--gray-3);\n font-size: 14px;\n font-weight: 300;\n line-height: 20px;\n width: calc(100% - 48px);\n }\n .ant-btn {\n padding: 0;\n border: none;\n height: 40px;\n font-size: 14px;\n font-weight: 500;\n margin: -12px 0;\n }\n button {\n display: flex;\n align-items: center;\n\n svg {\n margin-left: 4px;\n }\n }\n }\n }\n\n .aviso-rendimentos-card {\n margin-bottom: 1rem !important;\n }\n\n .client-wallet-header-btns {\n display: flex;\n column-gap: 8px;\n align-items: center;\n .ant-btn {\n height: 32px;\n min-width: 32px;\n font-weight: 500;\n border-radius: 24px;\n border: 1px solid var(--ghost);\n &.filtro-aplicado {\n color: var(--ant-primary-color);\n border: 1px solid var(--ant-primary-color);\n background-color: var(--ant-primary-1);\n }\n svg {\n fill: none;\n width: 18px;\n height: 18px;\n stroke: var(--ant-primary-color);\n &.fill {\n path {\n stroke: var(--ant-primary-color);\n }\n }\n }\n }\n }\n\n .investimentos-container {\n .list-empty {\n padding: 16px;\n margin: 48px 0;\n border-radius: 8px;\n text-align: center;\n color: var(--velotax-font-color);\n background-color: var(--ghost);\n }\n .patrimonio-atual {\n padding: 0 32px 0 48px;\n color: var(--dark-2);\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n h2 {\n font-size: 36px;\n font-weight: 700;\n line-height: 48px;\n margin-bottom: 8px;\n white-space: nowrap;\n letter-spacing: -0.4px;\n }\n }\n\n .patrimonio-reverse {\n padding: 0 32px 0 48px;\n color: var(--dark-2);\n font-size: 12px;\n font-weight: 400;\n line-height: 0px;\n h2 {\n font-size: 20px;\n font-weight: 700;\n line-height: 48px;\n margin-bottom: 8px;\n white-space: nowrap;\n letter-spacing: -0.4px;\n }\n }\n\n .patrimonio-reverse-total {\n position: absolute;\n padding: 0 32px 0 48px;\n color: var(--dark-2) !important;\n font-size: 12px;\n font-weight: 400;\n line-height: 0px;\n\n h2 {\n font-size: 10px;\n font-weight: 700;\n line-height: 48px;\n margin-bottom: 8px;\n white-space: nowrap;\n letter-spacing: -0.4px;\n }\n }\n\n .lucro-prejuizo-diario-total {\n padding: 0 16px;\n color: var(--dark-2);\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n }\n .grafico-container {\n position: relative;\n margin: 48px 0 16px;\n padding: 0 32px 0 56px;\n\n .recharts-legend-wrapper {\n top: 32px !important;\n left: 332px !important;\n right: unset !important;\n width: 100% !important;\n max-width: 180px !important;\n }\n }\n\n .select-container-corretora {\n display: flex;\n max-width: 50%;\n margin-top: 82px;\n flex-direction: column;\n align-items: start;\n justify-content: center;\n .ant-select-selection-item {\n height: 32px;\n padding: 0 0 4px 28px;\n }\n .ant-select-arrow {\n left: 0;\n right: unset;\n svg {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n }\n .update-patrimonio {\n margin-top: 4px;\n font-size: 12px;\n font-weight: 500;\n max-width: 240px;\n text-align: center;\n color: var(--gray-1);\n }\n }\n\n .select-container {\n top: 0;\n right: 0;\n width: 50%; // para alinhar com o prejuizo\n position: absolute;\n display: flex;\n align-items: center;\n }\n\n .select-container,\n .select-container-corretora {\n .ant-select {\n min-width: 240px;\n border-radius: 0px !important;\n .ant-select-selector {\n height: 32px;\n border: none !important;\n padding: 0 0 0px !important;\n border-radius: 0px !important;\n background-color: transparent !important;\n border-bottom: 1px solid var(--dark-2) !important;\n .ant-select-selection-search,\n .ant-select-selection-item {\n display: flex;\n font-size: 14px;\n align-items: center;\n font-weight: 400 !important;\n }\n }\n .ant-select-arrow {\n top: calc(50% - 2px);\n }\n }\n\n .ant-select-focused.ant-select-open {\n box-shadow: none !important;\n\n .ant-select-selector {\n border-color: var(--ant-primary-color) !important;\n }\n }\n\n .ant-select:not(.ant-select-disabled):hover .ant-select-selector,\n .ant-select-focused:not(.ant-select-disabled).ant-select:not(\n .ant-select-customize-input\n )\n .ant-select-selector {\n box-shadow: none !important;\n }\n\n .ant-dropdown,\n .ant-select-dropdown {\n box-shadow: none;\n }\n\n .ant-select-item-option-content {\n font-size: 14px;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n margin: 0;\n min-width: 100%;\n max-width: 100%;\n background-color: var(--white);\n\n .client-actions {\n margin: 0;\n padding: 12px;\n border-bottom: 1px solid var(--ghost);\n .close-client {\n display: flex;\n }\n }\n .client-content {\n padding: 24px;\n border-radius: 0;\n box-shadow: none;\n h1 {\n align-items: flex-start;\n flex-direction: column;\n width: calc(100% - 42px);\n\n span {\n display: block;\n svg {\n margin-left: 8px;\n margin-bottom: -5px;\n }\n }\n .contratar-plano {\n margin: 0;\n width: 100%;\n .ant-btn {\n width: 100%;\n margin: 8px 0 0;\n }\n }\n }\n .notification-button {\n top: 12px;\n right: 12px;\n }\n }\n .client-details {\n padding: 32px 24px !important;\n margin-left: -24px;\n width: calc(100% + 48px);\n .ant-tabs {\n .ant-tabs-nav {\n margin-left: -24px;\n width: calc(100% + 48px);\n }\n }\n }\n .client-integration-card {\n .client-integration-card-content {\n div.ant-typography {\n width: 100%;\n }\n }\n }\n\n .client-wallet-header-btns {\n width: 100%;\n margin-top: 8px;\n }\n\n .ant-tabs {\n .ant-tabs-nav {\n margin: 0 0 24px;\n .ant-tabs-nav-wrap {\n .ant-tabs-nav-list {\n .ant-tabs-tab {\n padding: 8px 4px;\n .ant-tabs-tab-btn {\n font-size: 12px;\n }\n }\n }\n }\n }\n }\n .investimentos-container {\n width: 100%;\n .patrimonio-atual {\n padding: 0;\n h2 {\n font-size: 30px;\n }\n }\n .lucro-prejuizo-diario-total {\n display: flex;\n font-size: 12px;\n column-gap: 16px;\n margin-top: 16px;\n padding: 16px 0 0;\n border-top: 1px solid var(--ghost);\n }\n .grafico-container {\n padding: 0;\n margin: 64px 0 16px;\n\n .recharts-legend-wrapper {\n top: -8px !important;\n left: 200px !important;\n right: unset !important;\n font-size: 12px;\n }\n .select-container {\n top: -48px;\n left: 0;\n width: 100%;\n display: flex;\n position: absolute;\n align-items: center;\n }\n }\n }\n }\n`;\n\nexport const HiredTag = styled.div`\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 8px;\n padding: 4px 16px;\n border: none;\n font-size: 14px;\n font-weight: 500;\n color: var(--white);\n background-color: var(--dark-1);\n`;\n\nexport const SelectedContainer = styled.div`\n display: flex;\n`;\n\nexport const PatrimonioContainer = styled.div``;\n\nexport const Patrimonio = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const InfoLabel = styled.p`\n margin: 0;\n white-space: nowrap;\n font-size: 12px;\n color: #1890ff;\n font-weight: 500;\n cursor: pointer;\n transition: 0.3s;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translateX(12px);\n\n &:hover {\n color: #0071d9;\n text-decoration: underline;\n transition: 0.3s;\n }\n`;\n\nexport const B3Link = styled.a`\n display: block;\n font-size: 10px;\n color: rgb(1, 103, 153);\n text-align: center;\n margin: auto;\n width: 450px;\n\n &:hover {\n text-decoration: underline;\n color: rgb(1, 103, 153);\n }\n`;\n\nexport const CopyLink = styled.button`\n color: #0566cd;\n font-weight: 500;\n text-decoration: underline;\n\n &:hover {\n text-decoration: underline;\n color: #06417f;\n }\n`;\n\nexport const ShareItem = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n margin-right: 1rem;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n color: #06417f;\n }\n\n img {\n width: 40px;\n height: 40px;\n }\n\n p {\n font-size: 11px;\n margin: 0.5rem 0;\n }\n`;\n\nexport const Instructions = styled.p`\n font-size: 13px;\n margin-bottom: 4px;\n`;\n\nexport const Paragraph = styled.p<{ color?: string }>`\n margin: 0;\n color: ${({ color }) => color ?? \"\"};\n`;\n\nexport const PatrimonioHeader = styled.div`\n display: flex;\n width: 100%;\n position: relative;\n`;\n\nexport const PatrimonioValue = styled.p`\n font-size: 36px;\n font-weight: 700;\n`;\n\nexport const RetornoContainer = styled.div`\n display: flex;\n flex-direction: column;\n margin-left: 1rem;\n border-left: 1px solid var(--ghost);\n padding-left: 0.5rem;\n justify-content: space-around;\n`;\n\nexport const RetornoLabel = styled.p<{ retorno: number }>`\n margin: 0 0 8px;\n color: ${({ retorno }) =>\n retorno > 0\n ? \"var(--ant-success-color)\"\n : retorno < 0\n ? \"var(--ant-error-color)\"\n : \"var(--gray-2)\"};\n`;\n\nexport const RelatorioButton = styled.button`\n display: flex;\n cursor: pointer;\n transition: 0.3s;\n font-weight: 500;\n align-items: center;\n justify-content: center;\n fill: var(--ant-primary-color);\n color: var(--ant-primary-color);\n\n svg {\n width: 16px;\n height: 16px;\n margin-right: 4px;\n }\n\n &:hover {\n color: var(--ant-primary-color-active);\n fill: var(--ant-primary-color-active);\n transition: 0.3s;\n }\n`;\n\nexport const IsentCardStyled = styled.div`\n margin-bottom: 4px;\n height: 110px;\n padding: 23px;\n border: none !important;\n border-radius: 4px !important;\n background-color: var(--velotax-background-color-ghost);\n text-align: center;\n gap: 12px;\n flex-direction: column;\n display: flex;\n\n .overviewTitleIsent {\n color: var(--black);\n font-size: 13px;\n }\n`;\n\nexport const ConatinerDarfs = styled.div`\n min-height: 400px;\n width: 100%;\n padding-bottom: 2rem;\n position: relative;\n overflow: visible;\n`;\n\nexport const BlurBox = styled.div`\n display: flex;\n justify-content: center;\n padding-top: 6rem;\n position: absolute;\n top: -20px;\n left: -20px;\n width: calc(100% + 40px);\n height: 100%;\n background-color: #f8f8f88f;\n backdrop-filter: blur(10px);\n z-index: 10;\n\n .blur-content-title {\n font-weight: 500;\n font-size: 1.25rem;\n text-align: center;\n row-gap: 16px;\n color: var(--velotax-font-color-light);\n max-width: 500px;\n }\n`;\n\nexport const FilterDarfs = styled.div`\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n margin-bottom: 15px;\n justify-content: space-between;\n\n .filterYear {\n min-width: 120px;\n }\n\n .buttonFilter {\n display: flex;\n justify-content: flex-end;\n flex-grow: 1;\n }\n\n @media only screen and (max-device-width: 450px) {\n .filterYear {\n flex-grow: 1;\n width: 100%;\n margin-bottom: 1rem;\n }\n .buttonFilter {\n button {\n width: calc(50% - 4px);\n }\n }\n }\n`;\n\nexport const DarfFilterButton = styled.button<{ selected: boolean }>`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 8px 1rem;\n border-radius: 2rem;\n background-color: ${({ selected }) => (selected ? \"black\" : \"white\")};\n color: ${({ selected }) => (selected ? \"white\" : \"black\")};\n border: 1px solid black;\n transition: 0.3s;\n\n &:hover {\n background-color: ${({ selected }) =>\n selected ? \"black\" : \"var(--ghost)\"};\n transition: 0.3s;\n }\n`;\n\nexport const DarfCard = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n background-color: white;\n border-radius: 8px;\n box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.1);\n padding: 2rem;\n margin-bottom: 1rem;\n\n .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n p {\n font-size: 18px;\n font-weight: 600;\n margin: 0;\n }\n\n button {\n height: 20px;\n font-size: 11px;\n font-weight: 500;\n text-transform: uppercase;\n background-color: var(--gray-1);\n border-radius: 1rem;\n padding: 0 0.5rem;\n }\n\n .payed {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: var(--ant-success-color);\n color: white;\n\n svg {\n font-size: 16px;\n margin-left: 2px;\n transform: translateY(-1px);\n }\n }\n }\n\n .body {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n }\n\n .resumo {\n flex-grow: 1;\n p {\n margin: 0;\n max-width: 240px;\n display: flex;\n justify-content: space-between;\n\n strong {\n min-width: 100px;\n font-weight: 600;\n }\n }\n\n .empty {\n max-width: 100%;\n color: var(--gray-2);\n font-weight: 300;\n }\n }\n\n .action-view {\n display: flex;\n align-items: center;\n\n button {\n height: 60px;\n border-radius: 0;\n font-weight: 600;\n text-transform: uppercase;\n background-color: white;\n font-size: 15px;\n width: 200px;\n\n svg {\n color: var(--ant-primary-color);\n }\n\n &:first-of-type {\n margin-right: 4px;\n }\n\n &:last-of-type {\n text-transform: none;\n }\n }\n }\n\n .actions {\n display: flex;\n align-items: center;\n\n button {\n height: 40px;\n border-radius: 0;\n font-weight: 600;\n text-transform: uppercase;\n\n svg {\n color: var(--ant-primary-color);\n }\n\n &:first-of-type {\n margin-right: 4px;\n }\n\n &:last-of-type {\n text-transform: none;\n }\n }\n }\n\n @media only screen and (max-device-width: 550px) {\n .actions {\n width: 100%;\n margin-top: 1rem;\n\n button {\n flex-grow: 1;\n }\n }\n\n .action-view {\n button {\n height: 40px;\n width: 100px;\n }\n }\n }\n`;\n\n\nexport const PlanContainer = styled.div`\n width: fit-content;\n background-color: var(--velotax-background-color);\n padding: 2rem 2rem;\n margin: auto;\n`","import { cpfInputMask, phoneInputMask } from \"../../utils\";\nimport { IClient } from \"../../contexts/ClientsContext\";\nimport {\n MaskFormItem,\n TextFormItem,\n SelectFormItem,\n SelectMultipleFormItem,\n} from \"../formItems\";\nimport { IAuthState } from \"../../contexts/AuthContext\";\nimport {\n validationCpf,\n validationEmail,\n validationFullName,\n validationPhone,\n} from \"../../utils/formValidations\";\nimport { Tooltip } from \"antd\";\nimport { AiFillInfoCircle } from \"react-icons/ai\";\nimport { assessorTooltip } from \"../../pages/Professionals\";\n\ninterface ClientFormItemProps {\n user: IAuthState;\n step?: number;\n assessores?: any;\n professionals?: any;\n client?: IClient | null;\n handleChangeAssessores?: any;\n onBlur?: any;\n userSelected?: any;\n}\n\nexport const FormItemsClients = ({\n user,\n client,\n assessores,\n professionals,\n handleChangeAssessores,\n onBlur,\n}: ClientFormItemProps) => {\n return {\n id: TextFormItem({\n name: \"id\",\n label: \"Id\",\n hidden: true,\n disabled: !!client,\n }),\n name: TextFormItem({\n name: \"name\",\n placeholder: \"Nome\",\n rules: validationFullName,\n disabled: false,\n }),\n username: MaskFormItem({\n name: \"username\",\n placeholder: \"CPF\",\n rules: validationCpf,\n mask: cpfInputMask,\n disabled: !!client,\n }),\n email: TextFormItem({\n name: \"email\",\n placeholder: \"E-mail\",\n rules: validationEmail,\n disabled: false,\n onBlur,\n }),\n phone: MaskFormItem({\n name: \"phone\",\n placeholder: \"Celular\",\n rules: validationPhone,\n mask: phoneInputMask,\n disabled: false,\n onBlur,\n }),\n plan: SelectFormItem({\n name: \"plan\",\n placeholder: \"Plano\",\n disabled: false,\n options: [\n {\n value: \"free\",\n label: \"Gratuito\",\n disabled: client?.hasPlanXp || client?.planType === \"anual\",\n },\n {\n value: \"mensal\",\n label: \"Plano Premium mensal\",\n disabled:\n !user.user?.liberadaContratacao ||\n client?.hasPlanXp ||\n client?.planType === \"anual\" ||\n client?.cancelRecuring,\n },\n {\n value: \"anual\",\n label: \"Plano Premium anual\",\n disabled: !user.user?.liberadaContratacao || client?.hasPlanXp,\n },\n ],\n onBlur,\n }),\n assessores: SelectMultipleFormItem({\n name: \"assessores\",\n placeholder: \"Assessores\",\n assessoresSelected: assessores,\n handleChangeAssessores: handleChangeAssessores,\n professionals,\n disabled: !user?.user?.office && !user?.user?.admin,\n }),\n };\n};\n\nexport const FormItemsAssessores = (client?: IClient | null) => {\n return {\n id: TextFormItem({\n name: \"id\",\n label: \"Id\",\n hidden: true,\n disabled: !!client,\n }),\n name: TextFormItem({\n name: \"name\",\n placeholder: \"Nome\",\n rules: validationFullName,\n disabled: !!client,\n }),\n username: TextFormItem({\n name: \"username\",\n placeholder: \"CPF\",\n rules: validationCpf,\n disabled: !!client,\n }),\n email: TextFormItem({\n name: \"email\",\n placeholder: \"E-mail\",\n rules: validationEmail,\n disabled: false,\n }),\n acesso: SelectFormItem({\n name: \"acesso\",\n placeholder: \"Selecione o tipo de acesso\",\n label: (\n <>\n Acesso\n \n \n \n \n ),\n disabled: false,\n options: [\n {\n value: \"admin\",\n label: \"Administrador\",\n },\n {\n value: \"gerente\",\n label: \"Gerente\",\n },\n {\n value: \"assessor\",\n label: \"Assessor\",\n },\n ],\n }),\n };\n};\n\nexport const ClientFormItemRows = ({\n user,\n client,\n assessores,\n professionals,\n handleChangeAssessores,\n onBlur,\n userSelected,\n}: ClientFormItemProps) => {\n if (client)\n client.planType =\n client.planDueDate < new Date().getTime() ? \"free\" : client.planType;\n const formItems = FormItemsClients({\n user,\n client,\n assessores,\n professionals,\n handleChangeAssessores,\n onBlur,\n });\n const ret = [];\n ret.push([formItems.id]);\n ret.push([formItems.username]);\n ret.push([formItems.name]);\n ret.push([formItems.email]);\n ret.push([formItems.phone]);\n ret.push(\n ...(user?.user?.office || user?.user?.admin ? [[formItems.assessores]] : [])\n );\n return ret;\n};\n\nexport const AssessorFormItemRows = (step: number, client?: IClient | null) => [\n [FormItemsAssessores(client).id],\n [FormItemsAssessores(client).username],\n [FormItemsAssessores(client).name],\n [FormItemsAssessores(client).email],\n [FormItemsAssessores(client).acesso],\n];\n","import { Card } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const Feature = styled.div`\n display: flex;\n align-items: center;\n .feature-icon {\n transform: translateY(1px);\n margin-right: 4px;\n }\n .feature-text {\n color: var(--gray-2);\n }\n`;\n\ninterface CardStyledProps {\n checked: boolean;\n hasConcierge: boolean;\n}\n\nexport const CardStyled = styled(Card)`\n position: relative;\n border-radius: 8px;\n transition: 0.3s;\n border-color: ${({ checked }) => (checked ? \"var(--ant-primary-color)\" : \"\")};\n background-color: ${({ checked }) => (checked ? \"#fbc10512\" : \"\")};\n pointer-events: ${({ hasConcierge }) => (hasConcierge ? \"\" : \"none\")};\n\n &:hover {\n border-color: var(--ant-primary-color);\n transition: 0.3s;\n }\n`;\n\nexport const GrayOverlay = styled.div`\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: 8px;\n background-color: rgba(128, 128, 128, 0.5); /* Cor cinza com transparência */\n pointer-events: none; /* Garante que a camada cinza não intercepte eventos do mouse */\n z-index: 1; /* Coloca a camada cinza acima do conteúdo do card */\n`;\n\nexport const Interval = styled.p`\n color: var(--ant-primary-color);\n font-weight: 500;\n font-size: 16px;\n margin-bottom: 1rem;\n\n @media only screen and (max-device-width: 812px) {\n font-size: 12px;\n margin-bottom: 0.5rem;\n }\n`;\nexport const Price = styled.p`\n font-weight: 600;\n font-size: 40px;\n margin: 0;\n\n @media only screen and (max-device-width: 812px) {\n font-size: 24px;\n margin-bottom: 0.5rem;\n }\n`;\nexport const Info = styled.p`\n font-size: 13px;\n transform: translateY(-8px);\n margin: 0;\n`;\n\nexport const Radio = styled.div<{\n checked: boolean;\n}>`\n position: absolute;\n right: 1rem;\n top: 1rem;\n width: 1.5rem;\n height: 1.5rem;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${({ checked }) =>\n checked ? \"var(--ant-primary-color)\" : \"var(--ghost)\"};\n`;\n","import { useState } from \"react\";\nimport { AiOutlineArrowRight } from \"react-icons/ai\";\nimport { Button, Col, Divider, Radio, Row, Tooltip, Typography } from \"antd\";\nimport { formatCurrency } from \"../../../utils\";\nimport { UserPlans } from \"../../../constants/plans\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\nimport { IClient } from \"../../../contexts/ClientsContext\";\nimport {\n CardStyled,\n Feature,\n Info,\n Interval,\n Price,\n GrayOverlay,\n} from \"./styles\";\n\ninterface IProps {\n userCount: number;\n selectedClient?: IClient | null;\n selectedPlan: number;\n setSelectedPlan: React.Dispatch>;\n setPaymentType: Function;\n isCancelRecurring: boolean;\n clientsWithCancelRecurring?: IClient[];\n planBought: string;\n isActive?: boolean;\n handleAction: React.MouseEventHandler;\n}\n\nexport const ChoosePlanStep = ({\n isActive,\n userCount,\n planBought,\n selectedPlan,\n handleAction,\n selectedClient,\n setPaymentType,\n setSelectedPlan,\n isCancelRecurring,\n clientsWithCancelRecurring,\n}: IProps) => {\n const { user } = useAuth();\n\n const [mostrarTip, setMostrarTip] = useState(false);\n\n return (\n <>\n \n A contratação inclui:\n \n
\n \n {UserPlans[0].includedFeatures.map((feature: any) => (\n \n {feature.icon}\n \n {feature.name}\n {feature?.secondaryIcon}\n \n \n ))}\n \n
\n \n {UserPlans.map((plan, i) => (\n setMostrarTip(true)}\n onMouseLeave={() => setMostrarTip(false)}\n span={12}\n key={i}\n >\n \n {\n setSelectedPlan(i);\n setPaymentType(plan.interval.toLowerCase());\n }}\n >\n \n \n \n {/* */}\n \n PLANO {plan.interval.toUpperCase()}\n \n \n \n {formatCurrency(plan.price)}\n \n \n por mês no plano {plan.interval.toLowerCase()}\n \n {!user.user.liberadaContratacao && plan.interval !== \"Anual\" ? (\n \n ) : null}\n \n \n \n ))}\n \n \n
\n \n {isCancelRecurring && selectedPlan === 1\n ? \"Atenção:\"\n : \"Total contratado:\"}\n \n {isCancelRecurring && selectedPlan === 1 ? (\n <>\n \n Não é possível contratar novamente um plano cancelado. Contrate um\n plano anual para os clientes selecionados a seguir:\n \n
    \n {(clientsWithCancelRecurring || []).map((client, i) => (\n
  • \n {client.name} - CPF: {client.username}\n
  • \n ))}\n
\n \n ) : (\n \n {formatCurrency(UserPlans[selectedPlan].price * userCount)} por mês\n ({userCount} {userCount > 1 ? \"usuários\" : \"usuário\"})\n \n )}\n
\n\n \n \n {planBought &&\n isActive &&\n UserPlans[selectedPlan].type ===\n selectedClient?.userPlanInfoVelotax?.type ? (\n \"PLANO SELECIONADO\"\n ) : (\n <>\n PRÓXIMO{\" \"}\n \n \n )}\n \n \n \n );\n};\n","import styled from \"styled-components\";\nimport { Card, Modal } from \"antd\";\n\nexport const Container = styled.div`\n width: 100%;\n height: 100%;\n padding: 0;\n border-radius: 4px;\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--velotax-font-color-ghost);\n }\n .original-price {\n display: grid;\n max-width: 150px;\n }\n .price {\n display: flex;\n width: 100%;\n column-gap: 8px;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n h4 {\n font-size: 22px;\n margin: 8px 0 !important;\n color: var(--ant-primary-color);\n del,\n span.per-month {\n font-size: 14px;\n }\n del {\n opacity: 0.8;\n color: var(--velotax-font-color);\n }\n }\n .ant-typography-danger {\n font-size: 11px;\n text-align: right;\n max-width: 120px;\n }\n }\n .ant-divider.ant-divider-horizontal {\n margin: 16px 0;\n }\n .other-features,\n .included-features-user {\n .feature {\n display: flex;\n align-items: center;\n justify-content: start;\n opacity: 0.7;\n margin: 6px 0;\n column-gap: 16px;\n span {\n font-weight: 500;\n display: flex;\n column-gap: 4px;\n align-items: center;\n svg {\n min-width: 20px;\n min-height: 20px;\n }\n }\n svg.fill {\n fill: var(--velotax-font-color);\n }\n svg:not(.fill) {\n stroke: var(--velotax-font-color);\n }\n &.disabled {\n opacity: 0.4;\n }\n .feature-desc {\n display: block;\n font-size: 10px;\n font-weight: 400;\n }\n }\n }\n .other-features {\n margin-bottom: 24px;\n }\n\n @media only screen and (max-device-width: 812px) {\n .original-price {\n font-size: 14px;\n max-width: 100px;\n\n .per-month {\n font-size: 12px !important;\n }\n }\n }\n`;\n\nexport const PlanModalStyled = styled(Modal)`\n .ant-modal-body {\n padding: 24px 32px !important;\n }\n\n .ant-tabs {\n width: 100%;\n }\n\n .ant-tabs-nav {\n margin: 0 auto 8px !important;\n width: calc(100% - 16px) !important;\n }\n\n @media only screen and (max-device-width: 812px) {\n .ant-modal-body {\n padding: 16px !important;\n }\n }\n`;\n\nexport const Content = styled.div``;\n\nexport const Loading = styled.div`\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n border-radius: 8px;\n position: absolute;\n align-items: center;\n justify-content: center;\n background-color: var(--velotax-shadow-default);\n`;\n\nexport const Feature = styled.div`\n display: flex;\n align-items: center;\n`\n\nexport const CardStyled = styled(Card)<{\n checked: boolean;\n}>`\n position: relative;\n border-radius: 8px;\n transition: .3s;\n border-color: ${({ checked }) => checked ? 'var(--ant-primary-color)' : ''};\n \n &:hover {\n border-color: var(--ant-primary-color);\n transition: .3s;\n }\n`\n\nexport const Interval = styled.p`\n color: var(--ant-primary-color);\n font-weight: 500;\n font-size: 16px;\n margin-bottom: 1rem;\n`\nexport const Price = styled.p`\n font-weight: 600;\n font-size: 40px;\n margin: 0;\n`\nexport const Info = styled.p`\n font-size: 13px;\n transform: translateY(-8px);\n margin: 0;\n`\n\nexport const Radio = styled.div<{\n checked: boolean\n}>`\n position: absolute;\n right: 1rem;\n top: 1rem;\n width: 1.5rem;\n height: 1.5rem;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${({ checked }) => checked ? 'var(--ant-primary-color)' : 'var(--ghost)'};\n`\n\n","import styled from \"styled-components\";\n\nexport const ContainerModal: any = styled.div`\n width: 100%;\n margin-top: 0;\n .container-table {\n width: 100%;\n overflow-y: auto;\n th.ant-table-cell {\n font-weight: bold;\n color: black;\n }\n }\n .container-1 {\n gap: 8px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n .ant-btn {\n display: flex;\n align-items: center;\n border-radius: 10px;\n }\n }\n .year-resume {\n .ant-typography {\n font-size: 14px;\n margin: 0px;\n font-weight: 600;\n }\n justify-content: space-between;\n border-radius: 10px;\n margin: 16px 0;\n display: flex;\n padding: 20px 25px;\n background-color: #ededed;\n width: 100%;\n }\n .client-wallet-header-btns {\n display: flex;\n column-gap: 8px;\n align-items: center;\n .ant-btn {\n height: 32px;\n min-width: 32px;\n font-weight: 500;\n border-radius: 24px;\n border: 1px solid var(--ghost);\n &.filtro-aplicado {\n color: var(--ant-primary-color);\n border: 1px solid var(--ant-primary-color);\n background-color: var(--ant-primary-1);\n }\n svg {\n fill: none;\n width: 18px;\n height: 18px;\n stroke: var(--ant-primary-color);\n &.fill {\n path {\n stroke: var(--ant-primary-color);\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n margin-top: 0px;\n .container-1 {\n flex-direction: column;\n .client-wallet-header-btns {\n width: 100%;\n .ant-select {\n width: 35%;\n }\n .ant-select:first-of-type {\n width: calc(65% - 8px);\n }\n .ant-btn {\n width: calc(50% - 4px);\n }\n }\n }\n }\n`;\n","import styled from \"styled-components\";\n\nexport const ReportTypeContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 20px;\n\n .divider {\n width: 100%;\n max-width: 80px;\n background-color: var(--ant-primary-color);\n height: 2px;\n margin-bottom: 1rem;\n }\n\n .loading {\n display: flex; \n \n h5 {\n margin-left: 1rem;\n }\n }\n\n .textInfo {\n display: flex;\n align-items: start;\n gap: 12px;\n padding: 2px;\n font-size: 10px;\n color: var(--gray-2);\n }\n\n .buttonDownload {\n font-size: 10px;\n align-items: center;\n display: flex;\n gap: 2px;\n }\n`;\n","import { Button, Drawer, Typography } from \"antd\";\nimport { AiOutlineArrowLeft, AiOutlineDownload } from \"react-icons/ai\";\nimport { isMobile } from \"../../utils\";\nimport { ReportTypeContainer } from \"./styles\";\nimport { InfoCircleOutlined, LoadingOutlined } from \"@ant-design/icons\";\n\ninterface IProps {\n open: boolean;\n loading?: boolean;\n setType: Function;\n onClose:\n | ((\n e: React.MouseEvent | React.KeyboardEvent\n ) => void)\n | undefined;\n}\n\nexport const ReportTypeDrawer = ({\n open,\n loading,\n setType,\n onClose,\n}: IProps) => {\n return (\n }\n title={\n
\n Voltar\n
\n }\n {...(isMobile() ? { width: \"100%\" } : { width: \"420px\" })}\n >\n \n
\n Baixar\n
\n
\n
\n \n Qual tipo de arquivo deseja baixar?\n \n
\n
\n \n \n {\" \"}\n O arquivo baixado mostrará suas informações de acordo com os filtros\n selecionados no momento do download.\n \n
\n setType(\"pdf\")}\n >\n \n Arquivo em PDF para simples conferência de dados.\n \n setType(\"xlsx\")}\n className=\"buttonDownload\"\n disabled={loading}\n >\n \n Arquivo em Excel para ser importado em planilhas.\n \n {loading && (\n \n )}\n \n \n );\n};\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport * as XLSX from \"xlsx\";\nimport { HiOutlineDownload } from \"react-icons/hi\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport {\n Checkbox,\n Col,\n DatePicker,\n Modal,\n Row,\n Select,\n Table,\n Typography,\n message,\n} from \"antd\";\nimport api from \"../../services/api\";\nimport { ContainerModal } from \"./styles\";\nimport Button from \"../../components/Button\";\nimport { useClients } from \"../../contexts/ClientsContext\";\nimport { ReportTypeDrawer } from \"../ReportType/ReportType\";\nimport {\n download,\n downloadPDF,\n formatCurrency,\n monthsExtended,\n} from \"../../utils\";\nimport { ReactComponent as FiltroIcon } from \"../../assets/icons/filtro.svg\";\n\nconst months: any = {\n Jan: 1,\n Fev: 2,\n Mar: 3,\n Abr: 4,\n Mai: 5,\n Jun: 6,\n Jul: 7,\n Ago: 8,\n Set: 9,\n Out: 10,\n Nov: 11,\n Dez: 12,\n};\n\nexport const ProventosModal: React.FC = ({\n open,\n month,\n setOpenModal,\n yearProventos,\n selectedClient,\n proventosLoading,\n setYearProventos,\n setMonthProventos,\n}) => {\n const date = new Date();\n const selectYears = [1, 0, -1, -2, -3];\n const [data, setData] = useState([]);\n const [originalData, setOriginalData] = useState([]);\n const [dataModalPDF, setDataModalPDF] = useState([]);\n const [showFilterModal, setShowFilterModal] = useState(false);\n const [filters, setFilters] = useState({});\n const dateFormat = \"DD/MM/YYYY\";\n const [dateBeginFilter, setDateBeginFilter] = useState(\"\");\n const dateBeginRef = useRef(null);\n const [dateEndFilter, setDateEndFilter] = useState(\n moment().format(\"DD/MM/YYYY\")\n );\n const [appliedFilters, setAppliedFilters] = useState({});\n const [total, setTotal] = useState(0);\n const [loading, setLoading] = useState(false);\n const [reportDrawerProventos, setReportDrawerProventos] = useState(false);\n const { proventos } = useClients();\n\n const downloadRelatorioProventos = async (type: string) => {\n try {\n const escritorioId =\n selectedClient && selectedClient?.code\n ? selectedClient?.code[0].escritorioId\n : null;\n setLoading(true);\n if (type === \"pdf\") {\n let fileUrl = \"\";\n let file = \"\";\n const ret = await api.post(\"/clients/downloadRelatorioProventos\", {\n proventos: dataModalPDF,\n escritorioId: escritorioId,\n username: selectedClient?.username\n });\n if (ret) {\n fileUrl = ret?.data?.fileUrl;\n file = ret?.data?.file;\n }\n if (fileUrl) {\n download(fileUrl);\n } else if (file) {\n downloadPDF(file, \"Proventos\");\n }\n setLoading(false);\n }\n if (type === \"xlsx\") {\n const workbook = XLSX.utils.book_new();\n const worksheet = XLSX.utils.json_to_sheet(data);\n XLSX.utils.book_append_sheet(workbook, worksheet, \"Proventos\");\n XLSX.writeFile(workbook, \"Proventos.xlsx\");\n setLoading(false);\n }\n } catch (err: any) {\n setLoading(false);\n message.error(\n \"Não foi possível baixar o relatório de proventos. Tente novamente mais tarde\"\n );\n }\n };\n\n const handleOpenFilterModal = () => {\n setShowFilterModal(true);\n };\n\n const getCorretFilters = () => {\n const newCorret: any[] = [];\n if (originalData && originalData.length > 0)\n originalData.forEach((el: any) => {\n if (newCorret.includes(el[\"Instituição\"])) {\n } else {\n newCorret.push(el[\"Instituição\"]);\n }\n });\n return newCorret;\n };\n\n const reportPDFData = (data: any, type: string) => {\n const formatModalPDF = data.map((el: any) => {\n if (type === \"prov\") {\n return {\n code: el.code || \"\",\n date: moment(el?.date).format(\"DD/MM/YYYY\"),\n corporateActionTypeDescription: _.capitalize(\n el?.corporateActionTypeDescription\n ),\n corretora: el?.corretora,\n quantity: el?.quantity || \"-\",\n unitPrice: el?.unitPrice || \"-\",\n grossAmount: el?.grossAmount,\n };\n } else if (type === \"other\") {\n return {\n code: el[\"Produto\"] || \"\",\n date: el[\"Pagamento\"],\n corporateActionTypeDescription: _.capitalize(el[\"Tipo\"]),\n corretora: el[\"Instituição\"],\n quantity: el[\"Qtde.\"] || \"-\",\n unitPrice: el[\"Preço unit.\"] || \"-\",\n grossAmount: el[\"Valor líquido\"],\n };\n }\n return {};\n });\n return formatModalPDF;\n };\n\n useEffect(() => {\n let total = 0;\n const monthNumber = months[month];\n\n const dataFiltered = proventos.filter((el: any) => {\n const monthOp = Number(moment(el?.date).format(\"M\"));\n const yearOp = Number(moment(el?.date).format(\"YYYY\"));\n if (monthNumber === monthOp && yearProventos === yearOp) {\n return true;\n }\n return false;\n });\n setDataModalPDF(reportPDFData(dataFiltered, \"prov\"));\n const dataSerialized = dataFiltered.map((el: any) => {\n total += el?.grossAmount;\n\n return {\n Produto: el?.code,\n Pagamento: moment(el?.date).format(\"DD/MM/YYYY\"),\n Tipo: _.capitalize(el?.corporateActionTypeDescription),\n Instituição: el?.corretora,\n \"Qtde.\": el?.quantity || \"-\",\n \"Preço unit.\": !el?.unitPrice\n ? \"-\"\n : \"R$ \" +\n el?.unitPrice?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }),\n \"Valor líquido\":\n \"R$ \" +\n el?.grossAmount?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }),\n };\n });\n setTotal(total);\n setData(dataSerialized);\n setOriginalData(dataSerialized);\n }, [month, yearProventos, proventos]);\n\n useEffect(() => {\n if (Object.keys(filters).length > 0 || (dateBeginFilter && dateEndFilter))\n setData(originalData);\n }, [filters, dateBeginFilter, dateEndFilter, originalData]);\n\n return (\n <>\n setOpenModal(false)}\n >\n \n
\n \n setMonthProventos({ name })}\n options={Object.keys(months).map((m, i) => ({\n value: m,\n label: monthsExtended[i],\n }))}\n />\n setYearProventos(e)}\n options={selectYears.map((y) => ({\n value: date.getFullYear() + y,\n label: date.getFullYear() + y,\n }))}\n />\n \n \n }\n onClick={handleOpenFilterModal}\n className={\n Object.keys(appliedFilters).filter(\n (key) => (appliedFilters[key]?.length || 0) > 0\n ).length > 0\n ? \"filtro-aplicado\"\n : \"\"\n }\n >\n Filtrar\n \n }\n onClick={() => {\n setReportDrawerProventos(true);\n }}\n >\n Baixar\n \n \n
\n downloadRelatorioProventos(type)}\n onClose={() => setReportDrawerProventos(false)}\n />\n \n
\n \n Total recebido no mês:\n \n \n {formatCurrency(total)}\n \n
\n
\n \n
\n \n
\n
\n
\n \n {\n setFilters(appliedFilters);\n setShowFilterModal(false);\n }}\n >\n \n \n \n \n Instituição\n \n \n {\n setFilters((filters: any) => ({ ...filters, corretoras }));\n }}\n >\n \n {getCorretFilters().map((el: any) => {\n const value = `${el.split(\" \")[0]}_${el.split(\" \")[1]}`;\n return (\n \n {el}\n \n );\n })}\n \n \n \n \n Período de pagamento\n \n \n Data inicial\n setDateBeginFilter(\"\")}\n onChange={(el) => {\n if (el) setDateBeginFilter(moment(el).format(\"DD/MM/YYYY\"));\n }}\n format={dateFormat}\n >\n Data final\n setDateEndFilter(\"\")}\n defaultValue={moment()}\n onChange={(el) => {\n if (el) setDateEndFilter(moment(el).format(\"DD/MM/YYYY\"));\n }}\n format={dateFormat}\n >\n \n \n \n \n {\n setAppliedFilters(filters);\n const getProventosWithFilter = (filters: any) => {\n const corretoras = filters?.corretoras || [];\n const dataFiltered: any = [];\n const dataFinal: any = [];\n if (corretoras.length > 0) {\n corretoras.forEach((corret: string) => {\n data.forEach((el: any) => {\n const corretEl = `corret_${\n el[\"Instituição\"]?.split(\" \")[0]\n }_${el[\"Instituição\"]?.split(\" \")[1]}`;\n if (corretEl === corret) dataFiltered.push(el);\n });\n });\n setData(dataFiltered);\n if (dateBeginFilter && dateEndFilter) {\n const dateBegin = moment(\n dateBeginFilter,\n dateFormat\n ).toDate();\n const dateEnd = moment(\n dateEndFilter,\n dateFormat\n ).toDate();\n dataFiltered.forEach((el: any) => {\n const datePagamento = moment(\n el[\"Pagamento\"],\n dateFormat\n ).toDate();\n if (\n datePagamento >= dateBegin &&\n datePagamento <= dateEnd\n )\n dataFinal.push(el);\n });\n setData(dataFinal);\n }\n setDataModalPDF(\n reportPDFData(\n dataFinal.length === 0 ? dataFiltered : dataFinal,\n \"other\"\n )\n );\n return;\n } else if (dateBeginFilter && dateEndFilter) {\n const dateBegin = moment(\n dateBeginFilter,\n dateFormat\n ).toDate();\n const dateEnd = moment(dateEndFilter, dateFormat).toDate();\n data.forEach((el: any) => {\n const datePagamento = moment(\n el[\"Pagamento\"],\n dateFormat\n ).toDate();\n if (\n datePagamento >= dateBegin &&\n datePagamento <= dateEnd\n )\n dataFinal.push(el);\n });\n setData(dataFinal);\n setDataModalPDF(reportPDFData(dataFinal, \"other\"));\n return;\n }\n setData(originalData);\n };\n getProventosWithFilter(filters);\n setTimeout(() => {\n setShowFilterModal(false);\n }, 500);\n }}\n >\n Aplicar\n \n \n \n \n \n );\n};\n","export default __webpack_public_path__ + \"static/media/mail.c0cf6ce6.svg\";","export default __webpack_public_path__ + \"static/media/whatsapp.9cd0446d.svg\";","import styled from \"styled-components\";\n\nexport const B3Link = styled.a`\n margin: auto;\n font-size: 10px;\n text-align: center;\n white-space: normal;\n display: inline-block;\n word-break: break-all;\n color: rgb(1, 103, 153);\n\n &:hover {\n text-decoration: underline;\n color: rgb(1, 103, 153);\n }\n`;\n\nexport const CopyLink = styled.button`\n color: #0566cd;\n font-weight: 500;\n text-decoration: underline;\n\n &:hover {\n text-decoration: underline;\n color: #06417f;\n }\n`;\n\nexport const ShareItem = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n margin-right: 1rem;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n color: #06417f;\n }\n\n img {\n width: 40px;\n height: 40px;\n }\n\n p {\n font-size: 11px;\n margin: 0.5rem 0;\n }\n`;\n\nexport const Instructions = styled.p`\n font-size: 13px;\n margin-bottom: 4px;\n`;\n","export default __webpack_public_path__ + \"static/media/Integracao_XP_B3.635b7422.gif\";","export default __webpack_public_path__ + \"static/media/integracao_xp_exterior_fundo_branco.f35bdfb7.gif\";","import { Typography, Image, message, Divider } from \"antd\";\nimport { DrawerModal } from \"../DrawerModal\";\nimport mainIcon from \"../../assets/icons/mail.svg\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport whatsIcon from \"../../assets/icons/whatsapp.svg\";\nimport { IClient } from \"../../contexts/ClientsContext\";\nimport { B3Link, CopyLink, Instructions, ShareItem } from \"./styles\";\nimport b3IntegrationExample from \"../../assets/Integracao_XP_B3.gif\";\nimport xpIntegrationExample from \"../../assets/integracao_xp_exterior_fundo_branco.gif\";\n\nexport type TIntegrationModal = \"B3\" | \"XP International\" | null;\ninterface IProps {\n integrationModal: TIntegrationModal;\n setIntegrationModal: React.Dispatch>;\n integrationClient: IClient | null;\n sendMail: (type: string, clients?: IClient[]) => Promise;\n}\n\nconst b3Link =\n \"https://b3investidor.b2clogin.com/b3Investidor.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1A_FINTECH&client_id=069ecfdf-7471-48eb-be82-d50799c99e5c&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fwww.investidor.b3.com.br&scope=openid&response_type=code&prompt=login\";\nconst b3Encoded =\n \"https%3A%2F%2Fb3investidor.b2clogin.com%2Fb3Investidor.onmicrosoft.com%2Foauth2%2Fv2.0%2Fauthorize%3Fp%3DB2C_1A_FINTECH%26client_id%3D069ecfdf-7471-48eb-be82-d50799c99e5c%26nonce%3DdefaultNonce%26redirect_uri%3Dhttps%253A%252F%252Fwww.investidor.b3.com.br%26scope%3Dopenid%26response_type%3Dcode%26prompt%3Dlogin\";\n\nexport const IntegrationModal = ({\n integrationModal,\n setIntegrationModal,\n integrationClient,\n sendMail,\n}: IProps) => {\n const { user } = useAuth();\n return (\n {\n setIntegrationModal(null);\n }}\n >\n {integrationModal === \"B3\" ? (\n \n Os clientes devem permitir a conexão entre Velotax e B3 para leitura\n das operações realizadas na bolsa de valores.\n \n ) : (\n \n Os clientes devem permitir a conexão entre Velotax e XP International\n para leitura das operações realizadas.\n \n )}\n \n \n
\n\n {integrationModal === \"B3\" ? (\n <>\n \n {b3Link}\n \n\n \n {\n navigator.clipboard.writeText(b3Link);\n message.success(\"Link copiado\");\n }}\n >\n Copiar link\n \n
\n \n ) : (\n <>\n \n Instruções\n \n
\n \n Passo 1. Acesse a aba de{\" \"}\n Investimento Global dentro do aplicativo da XP\n \n \n Passo 2. Deslize a tela para baixo e clique em{\" \"}\n Imposto de Renda e DARF\n \n \n Passo 3. Clique em{\" \"}\n Calcular Imposto de Renda e aceite os termos\n \n
\n \n )}\n\n \n\n \n Compartilhe {integrationModal === \"B3\" ? \"o link\" : \"as instruções\"}{\" \"}\n para conexão:\n \n
\n {\n if (integrationClient) {\n sendMail(\n integrationModal === \"B3\"\n ? \"b3-integration\"\n : \"exterior-integration\",\n [integrationClient]\n );\n setIntegrationModal(null);\n }\n }}\n >\n \"Ícone\n

E-mail

\n \n {\n const text =\n \"Instru%C3%A7%C3%B5es%20para%20conex%C3%A3o%20com%20XP%20International%3A%0APasso%201.%20Acesse%20a%20aba%20de%20Investimento%20Global%20dentro%20do%20aplicativo%20da%20XP%0APasso%202.%20Deslize%20a%20tela%20para%20baixo%20e%20clique%20em%20Imposto%20de%20Renda%20e%20DARF%0APasso%203.%20Clique%20em%20Calcular%20Imposto%20de%20Renda%20e%20aceite%20os%20termos\";\n const url = `https://wa.me${\n integrationClient?.phone ? `/55${integrationClient?.phone}` : \"\"\n }?text=${\n integrationModal === \"B3\"\n ? `${encodeURI(\n `Olá! O Velotax precisa da sua autorização na B3 para acompanhar seu imposto de renda mensal (DARF).\\n\\nClique aqui:`\n )}${b3Encoded}`\n : text\n }`;\n window.open(url, \"_blank\");\n }}\n >\n \"Ícone\n

Whatsapp

\n \n
\n \n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n .income-report-uploader > div.ant-upload.ant-upload-select.ant-upload-select-text {\n border: 1px solid var(--ant-primary-color);\n border-radius: 1.5rem;\n }\n .income-report-uploader {\n height: auto;\n display: block;\n margin: 1rem 0 1.5rem 0;\n \n .ant-upload {\n width: 100%;\n height: 120px;\n margin-top: 4px;\n\n .upload-text-icon {\n height: 100%;\n cursor: pointer;\n font-size: 20px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n\n svg {\n fill: var(--ant-primary-color);\n }\n\n .upload-text-desc {\n font-size: 14px;\n text-align: center;\n }\n }\n\n .loading-container {\n height: 100%;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n\n .anticon {\n width: 40px;\n height: 40px;\n margin-bottom: 12px;\n\n svg {\n width: 100%;\n height: 100%;\n fill: var(--ant-primary-color);\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { Upload } from \"antd\";\nimport { UploadProps } from \"antd/lib/upload\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { AiOutlineCloudUpload } from \"react-icons/ai\";\nimport { Container } from \"./styles\";\n\nexport interface IUploadProps extends UploadProps {\n loading?: boolean;\n descText?: string;\n customText?: string;\n}\n\nconst UploadNotas: React.FC = ({\n loading,\n descText,\n disabled,\n customText = \"Arraste ou clique\",\n ...props\n}) => {\n return (\n \n \n {loading ? (\n
\n \n Isso pode demorar alguns minutos, aguarde\n
\n ) : (\n
\n \n {customText}\n {descText && {descText}}\n
\n )}\n \n
\n );\n};\n\nexport default UploadNotas;\n","import { Collapse } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const PosicaoCardStyled = styled(Collapse.Panel)`\n margin-bottom: 4px;\n border: 1px solid var(--ghost) !important;\n border-radius: 8px !important;\n background-color: #f8f8f8;\n\n &:last-of-type {\n margin-bottom: 0;\n }\n\n &.ant-collapse-item-active {\n background-color: transparent;\n }\n\n .hr-datails {\n margin: 15px 10px;\n opacity: 0.3;\n }\n\n .ant-collapse-header {\n height: 72px;\n background-color: transparent;\n padding: 24px 72px 24px 32px !important;\n .ant-collapse-arrow {\n right: 32px !important;\n }\n\n .header {\n width: 100%;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n .title {\n font-weight: 700;\n font-size: 1.125rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n\n span {\n margin-left: 8px;\n font-weight: 600;\n font-size: 0.875rem;\n }\n }\n\n .posicao {\n font-weight: 600;\n font-size: 1.125rem;\n color: var(--velotax-font-color-light);\n }\n }\n }\n\n .ant-collapse-content {\n border: none;\n background-color: transparent;\n border-radius: 0 0 8px 8px !important;\n\n .ant-collapse-content-box {\n padding: 0 32px 32px;\n color: var(--velotax-font-color);\n & > div {\n & > span:first-child {\n width: 180px;\n display: inline-block;\n }\n & > span:not(:first-child) {\n font-weight: 500;\n margin-left: 16px;\n .valorUSD {\n font-size: 11px;\n font-weight: 100;\n margin-left: 8px;\n color: var(--velotax-font-color);\n /* &.success {\n color: var(--ant-success-color);\n }\n &.error {\n color: var(--ant-error-color);\n } */\n }\n }\n }\n }\n }\n\n .row-section {\n width: 100%;\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n }\n .chart-section {\n width: 340px;\n flex-grow: 1;\n margin-top: 1rem;\n\n .recharts-responsive-container {\n transform: translateX(2rem);\n }\n\n .recharts-text {\n font-weight: 300;\n font-size: 13px;\n }\n }\n\n .recharts-surface {\n overflow: visible;\n }\n\n .chart-tooltip {\n width: 200px;\n height: 60px;\n background-color: white;\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.2);\n padding: 0.5rem 1rem;\n display: flex;\n flex-direction: column;\n\n text {\n &:first-of-type {\n font-weight: 500;\n }\n &:last-of-type {\n color: var(--ant-primary-8);\n }\n }\n }\n\n .info-section {\n div {\n display: flex;\n span {\n &:first-of-type {\n width: 196px;\n }\n }\n }\n }\n\n .info-title {\n font-size: 13px;\n margin: 1rem 0 0 0;\n\n &:first-of-type {\n margin: 0;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .ant-collapse-header {\n height: 64px;\n padding: 20px 48px 20px 16px !important;\n .ant-collapse-arrow {\n right: 16px !important;\n }\n .header {\n .title {\n font-size: 0.6rem;\n span {\n margin-left: 8px;\n font-size: 0.675rem;\n }\n }\n .posicao {\n font-size: 0.875rem;\n text-align: right;\n }\n }\n }\n .ant-collapse-content {\n .ant-collapse-content-box {\n padding: 0 16px 24px 16px;\n & > div {\n & > span:first-child {\n width: 140px;\n font-size: 0.75rem;\n letter-spacing: -0.5px;\n }\n & > span:not(:first-child) {\n font-size: 0.75rem;\n letter-spacing: -0.8px;\n }\n }\n }\n }\n }\n`;\n","import { Link } from \"react-router-dom\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport React, { Dispatch, SetStateAction } from \"react\";\nimport { AiOutlineArrowDown, AiOutlineArrowUp, AiOutlineMinusCircle, AiOutlinePlusCircle } from \"react-icons/ai\";\nimport { PosicaoCardStyled } from \"./styles\";\nimport { formatCurrency, numberToPercentage } from \"../../utils\";\nimport Loading from \"../Loading\";\nimport { Typography } from \"antd\";\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport moment from \"moment\";\n\nconst negativeToPositive = (n: number) => (n < 0 ? n * -1 : n);\n\nconst signal = (n: number) => (n > 0 ? \"+\" : n < 0 ? \"-\" : \"\");\n\nconst arrow = (n: number) => (n > 0 \n ? \n : n < 0 \n ? \n : \"\");\n\nconst className = (n: number) => (n === 0 ? \"\" : n > 0 ? \"success\" : \"error\");\n\nexport const LucroPrejuizo: React.FC<{\n n?: number;\n p?: number;\n cotacao?: number;\n}> = ({ n, p, cotacao }) => (\n \n {arrow(n || 0)}\n {formatCurrency(negativeToPositive(n || 0))} ({arrow(n || 0)}\n {numberToPercentage(negativeToPositive(p || 0))})\n {cotacao && (\n \n {signal(n || 0)}\n {formatCurrency(negativeToPositive(n ? n / cotacao : 0), \"US$ \")}\n \n )}\n \n);\n\nexport const HidenValue: React.FC<{\n block?: boolean;\n strong?: boolean;\n currency?: boolean;\n}> = ({ block, strong, currency = true }) => {\n const value = `${currency ? \"R$ \" : \"\"}****`;\n const content = strong ? {value} : value;\n return block ?
{content}
: {content};\n};\n\nexport interface Posicao {\n avgPriceUsd: number;\n categoria: string;\n codigo: string;\n posicao: number;\n quantidade: number;\n precoAtual: number;\n precoVenda: number;\n loan?: {\n isLoan?: boolean;\n typeLoan?: string;\n };\n custoMedio: number;\n lucroPrejuizoTotal: number;\n lucroPrejuizoDiario: number;\n lucroPrejuizoTotalPercentual: number;\n lucroPrejuizoDiarioPercentual: number;\n hasPosition2019: boolean;\n corretora: string;\n}\ninterface PosicaoCardProps {\n key: string;\n details?: any;\n posicao?: Partial;\n hideValues?: boolean;\n setHelpModal?: Dispatch>;\n categoria?: string;\n index?: number;\n codigo?: string;\n loading?: boolean;\n cotacaoVenda?: number;\n}\n\nexport const PosicaoHeader = (posicao?: Partial, hideValues?: boolean) => (\n
\n
\n {posicao?.codigo || \"GOOGL\"}\n
\n \n {hideValues ? (\n \n ) : (\n (posicao?.precoAtual || posicao?.posicao)\n ? formatCurrency(\n posicao?.categoria === \"TesouroDireto\"\n ? posicao?.precoAtual || 0\n : posicao?.posicao || 0\n )\n : formatCurrency(negativeToPositive(posicao?.lucroPrejuizoTotal || 0))\n )}\n
\n \n);\n\nexport const CustoMedioModal = {\n title: \"Custo Médio\",\n content: (\n
\n

\n Preencha o custo médio do ativo na aba{\" \"}\n \n Posição 31-12-2019\n \n .\n

\n
\n ),\n};\n\nexport const PosicaoBody = (\n posicao: Partial,\n setHelpModal: Dispatch>,\n hideValues?: boolean,\n details?: any,\n loading?: boolean,\n cotacaoVenda?: number\n) => {\n return (\n <>\n
\n Quantidade:\n \n {hideValues ? : posicao.quantidade}\n \n
\n \n
\n {posicao?.loan?.typeLoan === \"Tomador\" && (\n <>\n Preço de venda:\n \n {hideValues ? (\n \n ) : (\n formatCurrency(posicao.precoVenda || 0)\n )}\n \n \n )}\n
\n {posicao.hasPosition2019 && posicao?.loan?.typeLoan !== \"Tomador\" && (\n \n posicao.custoMedio === 0 || !posicao.custoMedio\n ? setHelpModal(CustoMedioModal)\n : null\n }>\n Custo médio de compra: \n \n {posicao.custoMedio === 0 || !posicao.custoMedio ? (\n \n ) : (\n formatCurrency(posicao.custoMedio)\n )}\n {cotacaoVenda && posicao.custoMedio && (\n \n {formatCurrency(\n posicao.avgPriceUsd ? posicao.avgPriceUsd : 0,\n \"US$ \"\n )}\n \n )}\n \n \n )}\n {!posicao.hasPosition2019 && posicao?.loan?.typeLoan !== \"Tomador\" && (\n
\n {posicao.categoria === \"TesouroDireto\" ? (\n Valor Aplicado:\n ) : (\n Custo médio de compra:\n )}\n \n {posicao.custoMedio === 0 || !posicao.custoMedio ? (\n \"N/A\"\n ) : hideValues ? (\n \n ) : (\n formatCurrency(posicao.custoMedio)\n )}\n {cotacaoVenda && posicao.custoMedio && (\n \n {formatCurrency(\n posicao.custoMedio ? posicao.custoMedio / cotacaoVenda : 0,\n \"US$ \"\n )}\n \n )}\n \n
\n )}\n {posicao.categoria !== \"TesouroDireto\" &&\n posicao.categoria !== \"Bonds\" && (\n \n )}\n {posicao.hasPosition2019 && (\n \n posicao.lucroPrejuizoTotal === 0 || !posicao.lucroPrejuizoTotal\n ? setHelpModal(CustoMedioModal)\n : null\n }>\n Lucro/prejuízo total:\n {posicao.lucroPrejuizoTotal === 0 || !posicao.lucroPrejuizoTotal ? (\n \n ) : (\n \n )}\n \n )}\n {!posicao.hasPosition2019 && (\n \n )}\n {details &&\n (details?.marketCap !== \"N/A\" ||\n details?.beta !== \"N/A\" ||\n details?.peRatio !== \"N/A\" ||\n details?.earningDate !== \"N/A\" ||\n details?.dividendYield !== \"N/A\" ||\n details?.targetPrice !== \"N/A\" ||\n details?.enterpriseValueRevenue !== \"N/A\" ||\n details?.enterpriseValueEbitda !== \"N/A\") && (\n <>\n
\n
\n
\n \n Negociação\n \n
\n Captalização de mercado:\n \n {hideValues ? (\n \n ) : (\n <>\n {formatCurrency(\n Number(details?.marketCap || 0) / 1000000000\n )}{\" \"}\n B\n \n )}\n \n
\n
\n Preço-alvo da ação:\n \n {hideValues ? (\n \n ) : typeof details?.targetPrice === \"string\" ? (\n details?.targetPrice\n ) : (\n formatCurrency(details?.targetPrice)\n )}\n \n
\n
\n Dividend yield (1YFW):\n \n {hideValues ? (\n \n ) : typeof details?.dividendYield === \"string\" ? (\n details?.dividendYield\n ) : (\n `${(details?.dividendYield * 100)?.toFixed(2)}%`\n )}\n \n
\n
\n Divulgação de resultados:\n \n {hideValues ? (\n \n ) : (\n details?.earningDate\n )}\n \n
\n \n Avaliação\n \n {/*
\n Beta:\n \n {hideValues ? : typeof details?.beta !== 'string' ? details?.beta?.toFixed(2) : details?.beta}\n \n
*/}\n
\n EV/Receita (1YFW):\n \n {hideValues ? (\n \n ) : (\n `${\n typeof details?.enterpriseValueRevenue !== \"string\"\n ? `${details?.enterpriseValueRevenue?.toFixed(1)} x`\n : details?.enterpriseValueRevenue\n }`\n )}\n \n
\n
\n EV/EBITDA (1YFW):\n \n {hideValues ? (\n \n ) : (\n `${\n typeof details?.enterpriseValueEbitda !== \"string\"\n ? `${details?.enterpriseValueEbitda?.toFixed(1)} x`\n : details?.enterpriseValueEbitda\n }`\n )}\n \n
\n
\n P/E (1YFW):\n \n {hideValues ? (\n \n ) : (\n `${\n typeof details?.peRatio !== \"string\"\n ? `${details?.peRatio?.toFixed(1)}`\n : details?.peRatio\n } x`\n )}\n \n
\n
\n {details?.chart?.length && (\n
\n \n \n \n \n \n \n \n \n {\n const date = new Date(v);\n return `${date.getMonth() + 1}/${date.getFullYear()}`;\n }}\n />\n \n \n (\n
\n \n {moment(new Date(label)).format(\"DD/MM/YYYY\")}\n \n \n Cotação:{\" \"}\n {formatCurrency(Number(payload?.[0]?.value || 0))}\n \n
\n )}\n />\n \n \n
\n
\n )}\n
\n \n )}\n {loading && (\n
\n \n
\n )}\n \n );\n};\n\nexport const PosicaoCard = ({\n key,\n details,\n posicao,\n hideValues,\n loading,\n setHelpModal,\n cotacaoVenda,\n}: PosicaoCardProps) => {\n return (\n \n {posicao\n ? PosicaoBody(\n posicao,\n setHelpModal!,\n hideValues,\n details,\n loading,\n cotacaoVenda\n )\n : null}\n \n );\n};\n\nexport const ExpandIcon = ({ isActive }: { isActive?: boolean }) =>\n isActive ? (\n \n ) : (\n \n );\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.0519 0.353988C13.5958 -0.117996 14.4042 -0.117996 14.9482 0.353988L16.614 1.79915C16.9496 2.09037 17.4004 2.21119 17.8369 2.12682L20.0019 1.70812C20.709 1.57138 21.409 1.97555 21.6443 2.6563L22.3642 4.74069C22.5092 5.16074 22.8394 5.49082 23.2594 5.63591L25.3438 6.35587C26.0245 6.591 26.4286 7.29103 26.2919 7.99817L25.8733 10.1633C25.7888 10.5996 25.9096 11.0505 26.2009 11.3861L27.6461 13.0519C28.118 13.5958 28.118 14.4042 27.6461 14.9482L26.2009 16.614C25.9096 16.9496 25.7888 17.4004 25.8733 17.8369L26.2919 20.0019C26.4286 20.709 26.0245 21.409 25.3438 21.6443L23.2594 22.3642C22.8394 22.5092 22.5092 22.8394 22.3642 23.2594L21.6443 25.3438C21.409 26.0245 20.709 26.4286 20.0019 26.2919L17.8369 25.8733C17.4004 25.7888 16.9496 25.9096 16.614 26.2009L14.9482 27.6461C14.4042 28.118 13.5958 28.118 13.0519 27.6461L11.3861 26.2009C11.0505 25.9096 10.5996 25.7888 10.1633 25.8733L7.99817 26.2919C7.29103 26.4286 6.591 26.0245 6.35587 25.3438L5.63591 23.2594C5.49082 22.8394 5.16074 22.5092 4.74069 22.3642L2.6563 21.6443C1.97555 21.409 1.57138 20.709 1.70812 20.0019L2.12682 17.8369C2.21119 17.4004 2.09037 16.9496 1.79915 16.614L0.353988 14.9482C-0.117996 14.4042 -0.117996 13.5958 0.353988 13.0519L1.79915 11.3861C2.09037 11.0505 2.21119 10.5996 2.12682 10.1633L1.70812 7.99817C1.57138 7.29103 1.97555 6.591 2.6563 6.35587L4.74069 5.63591C5.16074 5.49082 5.49082 5.16074 5.63591 4.74069L6.35587 2.6563C6.591 1.97555 7.29103 1.57138 7.99817 1.70812L10.1633 2.12682C10.5996 2.21119 11.0505 2.09037 11.3861 1.79915L13.0519 0.353988Z\",\n fill: \"#00BC75\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5 11L12.3125 17L9.5 14.2728\",\n stroke: \"white\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgSelo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 28,\n viewBox: \"0 0 28 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSelo);\nexport default __webpack_public_path__ + \"static/media/selo.7aa9cf53.svg\";\nexport { ForwardRef as ReactComponent };","import _ from \"lodash\";\n\nexport const serializePatrimonio = (\n itemPatrimonio: any,\n corretoraFilter?: string[]\n) => {\n let posicoesFiltradas = itemPatrimonio?.wallet?.posicoes || [];\n const corretoras = getTodasAsCorretoras(posicoesFiltradas);\n if (corretoraFilter && corretoraFilter.length > 0) {\n const corretoraNames = corretoraFilter.map((c) =>\n getNomeCorretora({ shortName: c })\n );\n posicoesFiltradas = posicoesFiltradas?.filter((p: any) =>\n corretoraNames.includes(p.corretora)\n );\n }\n\n const patrimonio = calculaSaldoCorretoras(\n posicoesFiltradas,\n itemPatrimonio?.wallet?.posicao2019 || {}\n );\n\n const classesAtivos = calculaClassesAtivos(\n posicoesFiltradas,\n itemPatrimonio?.wallet?.posicao2019 || {}\n );\n const posicoes = calculaPorcentagemPosicoes(posicoesFiltradas);\n\n return { patrimonio, classesAtivos, posicoes, corretoras };\n};\n\nexport const getNomeCorretora = ({\n name,\n shortName,\n}: {\n name?: string;\n shortName?: string;\n}) => {\n const corretoras = [\n {\n name: \"XP INVESTIMENTOS CCTVM S/A\",\n shortName: \"XP Investimentos\",\n },\n {\n name: \"NU INVEST CORRETORA DE VALORES S.A.\",\n shortName: \"Nubank\",\n },\n {\n name: \"INTER DISTRIBUIDORA DE TITULOS E VALORES MOBILIARIOS LTDA\",\n shortName: \"Inter\",\n },\n {\n name: \"ORAMA DTVM S.A.\",\n shortName: \"Orama\",\n },\n {\n name: \"CLEAR CORRETORA - GRUPO XP\",\n shortName: \"Clear Corretora\",\n },\n {\n name: \"Exterior\",\n shortName: \"XP International\",\n },\n ];\n\n if (name) return corretoras.find((c) => c.name === name)?.shortName || name;\n if (shortName)\n return corretoras.find((c) => c.shortName === shortName)?.name || shortName;\n return \"\";\n};\n\nconst getCategoriaShortName = (categoria: string) => {\n if (categoria.includes(\"Fundos de Investimentos\")) return \"FIs\";\n if (categoria.includes(\"FII\")) return \"FIIs\";\n if (categoria.includes(\"BDR\")) return \"BDRs\";\n if (categoria.includes(\"ETF\")) return \"ETFs\";\n if (categoria.includes(\"Empréstimo de Ativos\")) return \"Empréstimos\";\n if (categoria.includes(\"TesouroDireto\")) return \"Tesouro Direto\";\n return categoria;\n};\n\nconst calculaSaldoCorretoras = (posicoes: any, posicao2019: any) => {\n const agrupadoPorCorretora = _.groupBy(posicoes, (p) => p.corretora);\n const saldosCorretoras = [];\n for (const corretora in agrupadoPorCorretora) {\n const saldo = agrupadoPorCorretora[corretora].reduce((prev, curr) => {\n return (prev || 0) + (curr?.posicao || 0);\n }, 0);\n saldosCorretoras.push({\n name: getNomeCorretora({ name: corretora }),\n value: saldo,\n });\n }\n\n return calculaPorgentagensCategorias(saldosCorretoras);\n};\n\nconst getTodasAsCorretoras = (posicoes: any) => {\n const agrupadoPorCorretora = _.groupBy(posicoes, (p) => p.corretora);\n const corretoras = Object.keys(agrupadoPorCorretora);\n const corretorasShortName = corretoras.map((c) =>\n getNomeCorretora({ name: c })\n );\n return corretorasShortName.sort((a, b) => a.localeCompare(b));\n};\n\nconst calculaClassesAtivos = (posicoes: any, posicao2019: any) => {\n const agrupadoPorCategoria = _.groupBy(posicoes, (p) => p.categoria);\n const saldosCategorias = [];\n for (const categoria in agrupadoPorCategoria) {\n const saldo = agrupadoPorCategoria[categoria].reduce((prev, curr) => {\n return (prev || 0) + (curr?.posicao || 0);\n }, 0);\n saldosCategorias.push({\n name: getCategoriaShortName(categoria),\n value: saldo,\n });\n }\n\n return calculaPorgentagensCategorias(saldosCategorias);\n};\n\nconst calculaPorgentagensCategorias = (\n saldosCategorias: Array<{ name: string; value: number }>\n) => {\n const totalSaldos = saldosCategorias.reduce(\n (acc, curr) => acc + curr.value,\n 0\n );\n\n const porcentagens = saldosCategorias.map((categoria) => ({\n name: categoria.name,\n value: categoria.value,\n percentage: Number(((categoria.value / totalSaldos) * 100).toFixed(1)),\n }));\n\n return porcentagens;\n};\n\nconst calculaPorcentagemPosicoes = (\n posicoes: {\n codigo: string;\n posicao: number;\n custoMedio: number;\n precoAtual: number;\n quantidade: number;\n categoria: string;\n corretora: string;\n hasPosition2019: boolean;\n }[]\n) => {\n if (!posicoes || posicoes.length === 0) return [];\n\n const patrimonioTotal = Number(\n posicoes.reduce((prev, curr) => prev + curr.posicao, 0).toFixed(2)\n );\n\n const posicoesOrdenadas = posicoes.sort((a, b) => {\n return b.posicao - a.posicao;\n });\n const quantidadeDeAtivosMostrados = 8;\n const porcentagens = [];\n\n for (\n let i = 0;\n i <\n (posicoesOrdenadas.length < quantidadeDeAtivosMostrados\n ? posicoesOrdenadas.length\n : quantidadeDeAtivosMostrados);\n i++\n ) {\n const posicao = posicoesOrdenadas[i];\n if (posicao.categoria === \"Exterior\" || !posicao.hasPosition2019) {\n const porcentagem = (posicao.posicao / patrimonioTotal) * 100;\n porcentagens.push({\n name: posicao.codigo,\n value: Number(posicao.posicao),\n percentage: Number(porcentagem.toFixed(1)),\n });\n }\n }\n\n let porcentagensOrdenadas = porcentagens.sort(\n (a, b) => a.percentage - b.percentage\n );\n\n if (porcentagensOrdenadas.length > quantidadeDeAtivosMostrados) {\n porcentagensOrdenadas = porcentagensOrdenadas.slice(\n 0,\n quantidadeDeAtivosMostrados\n );\n }\n\n let somatorioDasMaioresPorcentagens = 0;\n let somatorioDosMaioresValores = 0;\n for (const po of porcentagensOrdenadas) {\n somatorioDasMaioresPorcentagens += po.percentage;\n somatorioDosMaioresValores += po.value;\n }\n\n const ret = porcentagensOrdenadas.sort((a, b) => b.percentage - a.percentage);\n\n if (somatorioDasMaioresPorcentagens < 100) {\n ret.push({\n name: \"Outros\",\n value: patrimonioTotal - somatorioDosMaioresValores,\n percentage: Number((100 - somatorioDasMaioresPorcentagens).toFixed(2)),\n });\n }\n\n return ret;\n};\n","import styled from \"styled-components\";\n\nexport const NotificationContainer = styled.div`\n h3 {\n margin-bottom: 8px;\n }\n\n .divider {\n width: 100%;\n max-width: 80px;\n background-color: var(--ant-primary-color);\n height: 2px;\n margin-bottom: 1rem;\n }\n\n .illustration {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n position: relative;\n\n span {\n margin-right: 1rem;\n color: var(--gray-2);\n }\n\n h5 {\n font-weight: 500;\n }\n\n button,\n span {\n display: flex;\n justify-content: center;\n align-items: center;\n color: black !important;\n }\n span {\n margin: 0 0 0 0.5rem;\n }\n button {\n max-width: 160px;\n height: 52px;\n margin-right: auto;\n margin-top: 1rem;\n }\n }\n\n .loading {\n display: flex;\n\n h5 {\n margin-left: 1rem;\n }\n }\n\n .card {\n background-color: var(--ant-primary-1);\n box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.15);\n border-radius: 6px;\n margin-bottom: 1rem;\n padding: 1rem;\n cursor: pointer;\n transition: 0.3s;\n position: relative;\n\n &:hover {\n transition: 0.3s;\n background-color: var(--ant-primary-2);\n }\n\n .loading {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n background-color: rgba(0, 0, 0, 0.2);\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .header {\n display: flex;\n align-items: center;\n width: 100%;\n margin-bottom: 8px;\n\n h5 {\n flex-grow: 1;\n margin-bottom: 0;\n }\n\n svg {\n color: var(--ant-primary-color);\n font-size: 20px;\n margin-right: 4px;\n }\n\n span {\n color: var(--gray-2);\n }\n\n .actionButton {\n color: var(--gray-2);\n margin: 0;\n transition: 0.3s;\n cursor: pointer;\n\n &:hover {\n color: var(--ant-primary-color);\n transition: 0.3s;\n }\n }\n }\n\n .body {\n display: flex;\n span {\n width: 200px;\n flex-grow: 1;\n }\n button {\n &:hover {\n svg {\n fill: var(--ant-primary-7);\n }\n }\n }\n }\n }\n\n .viewed {\n background-color: var(--velotax-ghost);\n h5,\n svg,\n span {\n color: var(--ant-info-color-deprecated-bg) !important;\n }\n\n &:hover {\n background-color: var(--velotax-ghost);\n }\n }\n\n .section {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 2rem;\n\n h5 {\n text-transform: uppercase;\n font-size: 14px;\n }\n\n button {\n color: var(--gray-2);\n transition: 0.3s;\n text-transform: uppercase;\n font-size: 13px;\n font-weight: 500;\n &:hover {\n color: var(--ant-primary-color);\n transition: 0.3s;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .illustration {\n img {\n width: 100%;\n }\n }\n .card {\n .header {\n h5 {\n font-size: 14px;\n }\n span {\n font-size: 13px;\n }\n }\n }\n }\n`;\n","import { useState } from \"react\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { AiOutlineArrowLeft } from \"react-icons/ai\";\nimport { HiOutlineCurrencyDollar } from \"react-icons/hi\";\nimport { Drawer, Tooltip, Typography, message } from \"antd\";\nimport api from \"../../services/api\";\nimport { isMobile } from \"../../utils\";\nimport { NotificationContainer } from \"./styles\";\nimport { useClients } from \"../../contexts/ClientsContext\";\nimport notificationImage from \"../../assets/notification.png\";\nimport { ReactComponent as SendIcon } from \"../../assets/icons/send.svg\";\n\ninterface IProps {\n open: boolean;\n onClose:\n | ((\n e: React.MouseEvent | React.KeyboardEvent\n ) => void)\n | undefined;\n filters: any;\n searchText: string;\n currentPage: number;\n}\n\nexport const NotificationDrawer = ({ open, onClose, filters, searchText, currentPage }: IProps) => {\n const {\n selectedClient,\n notificacoes,\n setNotificacoes,\n loadingNotificacoes,\n getClients,\n } = useClients();\n const [loadingIndex, setLoadingIndex] = useState(null);\n const lidas = (notificacoes || []).filter((n) => n.viewed);\n const naoLidas = (notificacoes || []).filter((n) => !n.viewed);\n\n const removeNotification = (index?: number) => {\n const notifications = notificacoes.map((n, i: number) => {\n if (index === undefined || index === i)\n return { ...n, viewed: true, viewedDate: new Date() };\n return n;\n });\n\n setLoadingIndex(index === undefined ? \"all\" : index);\n api\n .patch(`/clients/notification/${selectedClient?.username}`, {\n notifications,\n })\n .then(() => {\n setNotificacoes(notifications);\n setLoadingIndex(null);\n getClients({\n ...filters,\n page: currentPage,\n searchText: searchText.length > 0 ? searchText : null,\n });\n })\n .catch(() => {\n message.error(\"Não foi possível remover notificação\");\n });\n };\n\n const sendWhatsapp = (event: any, phone: string, text: string) => {\n event.stopPropagation();\n const url = `https://wa.me${\n phone ? `/55${phone}` : \"\"\n }?text=${text.replaceAll(\" \", \"%20\")}`;\n window.open(url, isMobile() ? undefined : \"_blank\");\n };\n\n return (\n }\n title={\n
\n Voltar\n
\n }\n {...(isMobile() ? { width: \"100%\" } : {})}\n >\n \n
\n Notificações\n
\n
\n\n {(loadingNotificacoes || !notificacoes.length) && (\n
\n \"Notificações\"\n {loadingNotificacoes ? (\n
\n \n \n Buscando notificações\n \n
\n ) : !notificacoes?.length ? (\n \n O seu cliente não possui novas notificações.\n \n ) : (\n <>\n )}\n
\n )}\n\n {}\n {!!naoLidas?.length && !loadingNotificacoes && (\n
\n Não lidas\n \n
\n )}\n {!loadingNotificacoes &&\n (notificacoes || [])?.map((item, i) => {\n if (item.viewed) return <>;\n return (\n
\n {\n if (!(loadingIndex === i || loadingIndex === \"all\"))\n removeNotification(i);\n }}\n >\n {(loadingIndex === i || loadingIndex === \"all\") && (\n
\n \n
\n )}\n
\n \n \n Rendimentos a receber\n \n {item?.date && (\n \n {new Date(item?.date)?.toLocaleDateString(\"pt-BR\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n })}\n \n )}\n
\n
\n {item.message}\n \n {\n sendWhatsapp(e, selectedClient?.phone!, item.message);\n }}\n >\n \n \n \n
\n
\n
\n );\n })}\n\n {/* Notificações Lidas */}\n {!!lidas?.length && !loadingNotificacoes && (\n
\n Lidas\n
\n )}\n {!loadingNotificacoes &&\n (notificacoes || [])?.map((item, i) => {\n if (!item.viewed) return <>;\n return (\n
\n
\n
\n \n \n Rendimentos a receber\n \n {item?.date && (\n \n {new Date(item?.date)?.toLocaleDateString(\"pt-BR\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n })}\n \n )}\n
\n
\n {item.message}\n
\n
\n
\n );\n })}\n
\n \n );\n};\n","export default \"data:image/png;base64,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\"","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_6611_119607)\"\n}, /*#__PURE__*/React.createElement(\"ellipse\", {\n opacity: 0.08,\n cx: 199.244,\n cy: 119.397,\n rx: 100,\n ry: 140,\n transform: \"rotate(-60 199.244 119.397)\",\n fill: \"#808080\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 280,\n y: 120,\n width: 80,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 320,\n cy: 160,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 192,\n y: 120,\n width: 80,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 232,\n cy: 160,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.25 154.75L229.422 165.25L224.5 160.477\",\n stroke: \"white\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 104,\n y: 120,\n width: 80,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 144,\n cy: 160,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 224,\n y: 32,\n width: 80,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 264,\n cy: 72,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 136,\n y: 32,\n width: 80,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 176,\n cy: 72,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M184.25 66.75L173.422 77.25L168.5 72.4773\",\n stroke: \"white\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 48,\n y: 32,\n width: 80,\n height: 80,\n rx: 8,\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 88,\n cy: 72,\n r: 20,\n fill: \"#E8E8E8\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.25 66.75L85.4219 77.25L80.5 72.4773\",\n stroke: \"white\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n}));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_6611_119607\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 408,\n height: 240,\n fill: \"white\"\n})));\n\nfunction SvgSelection(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 408,\n height: 240,\n viewBox: \"0 0 408 240\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSelection);\nexport default __webpack_public_path__ + \"static/media/selection.5db51f88.svg\";\nexport { ForwardRef as ReactComponent };","import clsx from \"clsx\";\nimport moment from \"moment\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport { RiGlobalLine } from \"react-icons/ri\";\nimport { ImAttachment } from \"react-icons/im\";\nimport { HiOutlineDownload } from \"react-icons/hi\";\nimport { MdEmail, MdOutlineMailOutline } from \"react-icons/md\";\nimport type { RcFile } from \"antd/es/upload/interface\";\nimport { UploadRequestOption } from \"rc-upload/lib/interface\";\nimport { BiBell, BiCheck, BiChevronDown, BiLock } from \"react-icons/bi\";\nimport { IoMdAddCircleOutline, IoMdOptions } from \"react-icons/io\";\nimport { GrAddCircle, GrDocumentUpload, GrUpdate } from \"react-icons/gr\";\nimport { FiAlertTriangle, FiExternalLink, FiRefreshCw } from \"react-icons/fi\";\nimport React, {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n BsTrash,\n BsWhatsapp,\n BsThreeDotsVertical,\n BsShieldCheck,\n BsEye,\n BsCheck2Circle,\n} from \"react-icons/bs\";\nimport {\n PieChart,\n Pie,\n Cell,\n Legend,\n ResponsiveContainer,\n Tooltip as RechartsTooltip,\n} from \"recharts\";\nimport {\n AiFillInfoCircle,\n AiOutlineSearch,\n AiOutlineCalendar,\n AiOutlineSafety,\n AiOutlineUpload,\n AiOutlineClose,\n} from \"react-icons/ai\";\nimport {\n LoadingOutlined,\n MailOutlined,\n InfoCircleOutlined,\n WhatsAppOutlined,\n SyncOutlined,\n} from \"@ant-design/icons\";\nimport {\n Typography,\n Input,\n Row,\n Col,\n Table,\n Modal,\n message,\n TablePaginationConfig,\n Card,\n Tooltip,\n Dropdown,\n Select,\n Collapse,\n Tag,\n Tabs,\n Checkbox,\n Divider,\n Badge,\n} from \"antd\";\nimport api from \"../../services/api\";\nimport { dayFilters, yearFilters } from \"../Darfs\";\nimport Button from \"../../components/Button\";\nimport Loading from \"../../components/Loading\";\nimport apiBolsa from \"../../services/bolsa-api\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { ChartBar } from \"../../components/ChartBar\";\nimport { FormModal } from \"../../components/FormModal\";\nimport { Avisos } from \"../../components/Avisos/Avisos\";\nimport UploadVelotax from \"../../components/UploadVelotax\";\nimport { Previdencia } from \"../../components/Previdencia\";\nimport { ClientFormItemRows } from \"../../constants/clients\";\nimport { UserPlanModal } from \"../../components/UserPlanModal\";\nimport { ProventosModal } from \"../../components/ProventosModal\";\nimport { OperationModal } from \"../../components/OperationModal\";\nimport { SendDarfModal } from \"../../components/Darf/SendDarfModal\";\nimport { IntegrationModal } from \"../../components/IntegrationModal\";\nimport UploadNotas from \"../../components/NotasCorretagem/UploadNotas\";\nimport { ExpandIcon, PosicaoCard } from \"../../components/PosicaoCard\";\nimport { ReactComponent as SeloIcon } from \"../../assets/icons/selo.svg\";\nimport { ReactComponent as EmptyIcon } from \"../../assets/icons/empty.svg\";\nimport { ReactComponent as FiltroIcon } from \"../../assets/icons/filtro.svg\";\nimport DeleteConfirmationModal from \"../../components/DeleteConfirmationModal\";\nimport { getNomeCorretora, serializePatrimonio } from \"../../utils/patrimonio\";\nimport { NotificationDrawer } from \"../../components/Notification/Notification\";\nimport { ReportTypeDrawer } from \"../../components/ReportType/ReportType\";\nimport { CalcStatus, IClient, useClients } from \"../../contexts/ClientsContext\";\nimport { ReactComponent as SelectionIcon } from \"../../assets/icons/selection.svg\";\nimport { useNotasCorretagem } from \"../../components/NotasCorretagem/useNotasCorretagem\";\nimport {\n downloadPDF,\n formatCurrency,\n maskCpf,\n isMobile,\n numberToCurrency,\n numberToPercentage,\n numberToPhone,\n monthsExtended,\n vendasTotais,\n vendasTotaisExt,\n mesesPassados,\n download,\n arrow,\n negativeToPositive,\n thirdBusinessDayAndMonth,\n} from \"../../utils\";\nimport {\n ClientContainer,\n ClientPlanContent,\n Container,\n ContainerProventos,\n Content,\n EmptyContainer,\n RetornoLabel,\n SideContent,\n IsentCardStyled,\n DarfFilterButton,\n FilterDarfs,\n DarfCard,\n ConatinerDarfs,\n BlurBox,\n PlanContainer,\n} from \"./styles\";\nimport _ from \"lodash\";\nimport { Planos } from \"../../components/Planos\";\nimport { yearConfigPL4173 } from \"../../constants/others/exterior\";\n\nconst freeTaxLimit = 10;\n\nconst Months: any = {\n 0: \"Janeiro\",\n 1: \"Fevereiro\",\n 2: \"Março\",\n 3: \"Abril\",\n 4: \"Maio\",\n 5: \"Junho\",\n 6: \"Julho\",\n 7: \"Agosto\",\n 8: \"Setembro\",\n 9: \"Outubro\",\n 10: \"Novembro\",\n 11: \"Dezembro\",\n};\n\nconst b3Encoded =\n \"https%3A%2F%2Fb3investidor.b2clogin.com%2Fb3Investidor.onmicrosoft.com%2Foauth2%2Fv2.0%2Fauthorize%3Fp%3DB2C_1A_FINTECH%26client_id%3D069ecfdf-7471-48eb-be82-d50799c99e5c%26nonce%3DdefaultNonce%26redirect_uri%3Dhttps%253A%252F%252Fwww.investidor.b3.com.br%26scope%3Dopenid%26response_type%3Dcode%26prompt%3Dlogin\";\n\nconst mailTypes = [\n {\n value: \"b3-integration\",\n whatsappMessage:\n \"Olá {fullname}, realize a integração da sua conta na B3 com o Velotax para auxiliar na conferência do seu imposto de renda mensal (DARF). Para realizar a integração clique no link: \",\n link: b3Encoded,\n label: () => (\n <>\n Solicitar integração B3\n \n ),\n icon: () => (\n \n ),\n },\n {\n value: \"exterior-integration\",\n whatsappMessage:\n \"Olá {fullname}, realize a integração da sua conta no exterior com o Velotax para auxiliar na conferência do seu imposto de renda mensal (DARF). Veja como fazer no link: \",\n link: \"https://youtu.be/atYsUXLHOPE?feature=shared\",\n label: () => (\n <>\n Solicitar integração Exterior\n \n ),\n icon: () => (\n \n ),\n },\n {\n value: \"pending-calc\",\n whatsappMessage:\n \"Olá {fullname}, realize a emissão do seu DARF de junho de 2023. Para emiti-lo, clique no link: \",\n link: \"https://xp.velotax.com.br/p/login\",\n label: () => (\n <>\n Lembrar sobre cálculo pendente\n \n ),\n icon: () => (\n \n ),\n },\n {\n value: \"hiring-plan\",\n whatsappMessage:\n \"Olá {fullname}, realize a contratação do plano premium no Velotax para auxiliar na conferência do seu imposto de renda mensal (DARF). Para contratar o plano premium, clique no link: \",\n link: \"https://xp.velotax.com.br/p/login\",\n label: () => (\n <>\n Solicitar que o cliente contrate o plano\n \n ),\n icon: () => (\n \n ),\n },\n];\n\nvar debounce: NodeJS.Timeout;\n\n// const Responsaveis: React.FC<{ item: IClient }> = ({ item }) => (\n//
\n// {item.resp?.length === 0 ? (\n// \"Escritório\"\n// ) : (\n// <>\n// {item.resp?.map((resp: any, index: number, array: any[]) => (\n//

\n// {resp.name}\n// {index === array.length - 1 ? \"\" : \",\"}\n//

\n// ))}\n// \n// )}\n//
\n// );\n\nconst PatrimonioSemPercentual = () => (\n \n \n \n);\n\nconst tooltip: any = () => (\n \n O usuário já possui uma conta cadastrada na plataforma. Enviamos um e-mail\n solicitando a sua permissão de acesso à conta e estamos aguardando a\n confirmação do usuário.\n

\n);\n\nconst handleVencimento = (data: IClient) => {\n // clientPlanActive: planActive da collection clients\n // planCancelPending: cancelPending da collection payment\n if ((!data.planActive || data.planCancelPending) && data.planDueDate) {\n const currentMonth = new Date().getMonth();\n const currentYear = new Date().getFullYear();\n const currentDay = new Date().getDate();\n const currentHour = new Date().getHours() + 3;\n const currentMinute = new Date().getMinutes();\n const valido =\n data.planDueDate >=\n Date.UTC(\n currentYear,\n currentMonth,\n currentDay,\n currentHour,\n currentMinute\n );\n if (valido) {\n return moment(new Date(data.planDueDate)).format(\"DD/MM/YYYY\");\n }\n return \"\";\n } else {\n return \"\";\n }\n};\n\nconst chartColors = [\n { background: \"#FCC102\", label: \"white\" },\n { background: \"#C8D200\", label: \"black\" },\n { background: \"#FF2B01\", label: \"white\" },\n { background: \"#E50045\", label: \"white\" },\n { background: \"#CC13AF\", label: \"white\" },\n { background: \"#5B0084\", label: \"white\" },\n { background: \"#79002B\", label: \"white\" },\n { background: \"#0A9E5A\", label: \"white\" },\n { background: \"#FF7F00\", label: \"white\" },\n];\n\nexport const Clients: React.FC = () => {\n const { user } = useAuth();\n const {\n files,\n history,\n setFiles,\n sendNotas,\n getHistory,\n loadingSend,\n uploadProps,\n downloadNota,\n showNotasCorretagemModal,\n setShowNotasCorretagemModal,\n } = useNotasCorretagem();\n const {\n clients,\n newClient,\n loadingGet,\n getClients,\n getProventos,\n getPatrimonios,\n getNotifications,\n proventos,\n // patrimonios,\n notificacoes,\n loadingLogin,\n removeClient,\n createClient,\n setNewClient,\n totalClients,\n totalPatrimonio,\n totalPatrimonioReverse,\n updateClient,\n loginInClient,\n setLoadingGet,\n professionals,\n restoreClient,\n selectedClient,\n getProfessionals,\n setSelectedClient,\n handleDownloadSheet,\n createClientDeleted,\n typeProventos,\n setTypeProventos,\n patrimoniosLoading,\n setCreateClientDeleted,\n setYearProventos,\n yearProventos,\n proventosLoading,\n proventosFileUrl,\n patrimoniosFileUrl,\n getClientsUpdating\n } = useClients();\n\n const [, setLoadingMail] = useState(\"\");\n const [, setLoadingToken] = useState(false);\n const [errors, setErrors] = useState([]);\n const [open, setOpen] = useState(false);\n const [openModal, setOpenModal] = useState(false);\n const [, setDetailedActiveKeys] = useState([]);\n const [activeKeys, setActiveKeys] = useState([]);\n const [monthProventos, setMonthProventos] = useState({});\n const [loadingProventos, setLoadingProventos] = useState(false);\n const [detailedPositions, setDetailedPositions] = useState([]);\n const [hideValues] = useState(false);\n const [, setHelpModal] = useState();\n const [keys, setKeys] = useState([]);\n const [filters, setFilters] = useState({});\n const [searchText, setSearchText] = useState(\"\");\n const [itemRemove, setItemRemove] = useState({});\n const [loadingFile, setLoadingFile] = useState(false);\n const [optionsModal, setOptionsModal] = useState(false);\n const [showDarfTooltip, setShowDarfTooltip] = useState(false);\n const [, setVisibleChart] = useState(false);\n const [visibleTabs, setVisibleTabs] = useState(true);\n const [firstSelected, setFirsSelected] = useState(false);\n const [chartType, setChartType] = useState(\"patrimonio\");\n const [currentPage, setCurrentPage] = useState(1);\n const [userSelected, setUserSelected] = useState({});\n const [sendRequest, setSendRequest] = React.useState(true);\n const [paymentType, setPaymentType] = useState(\"anual\");\n const [appliedFilters, setAppliedFilters] = useState({});\n const [csvModalVisible, setCsvModalVisible] = useState(false);\n const [showFilterModal, setShowFilterModal] = useState(false);\n const [showCorretoraFilterModal, setShowCorretoraFilterModal] =\n useState(false);\n const [filterCorretoraAtivo, setFilterCorretoraAtivo] = useState(\n []\n );\n const [, setConfirmPlanModal] = useState(false);\n const [errorModalVisible, setErrorModalVisible] = useState(false);\n const [deleteModalVisible, setDeleteModalVisible] = useState(false);\n const [createModalVisible, setCreateModalVisible] = useState(false);\n const [removeModalVisible, setRemoveModalVisible] = useState(false);\n const [assessoresSelected, setAssessoresSelected] = useState([]);\n const [updateAllPatrimonio, setUpdateAllPatrimonio] = useState(false);\n const [assessoresListModal, setAssessoresListModal] = useState(false);\n const [clientsSelected, setClientsSelected] = useState([]);\n const [vendasBolsa, setVendasBolsa] = useState(0);\n const [vendasExterior, setVendasExterior] = useState(0);\n const [vendasRestantesBolsa, setVendasRestantesBolsa] = useState(0);\n const [vendasRestantesExterior, setVendasRestantesExterior] =\n useState(0);\n const [sendMailModalVisible, setSendMailModalVisible] = useState(false);\n const [checkboxCorretoras, setCheckboxCorretoras] = useState([]);\n const [selectedCorretoras, setSelectedCorretoras] = useState([]);\n const [patrimonioModalVisible, setPatrimonioModalVisible] = useState(false);\n const [showPaymentModal, setShowPaymentModal] = useState(false);\n const [selectedPlan, setSelectedPlan] = useState(0);\n const [showMobileActionSelectedClients, setShowMobileActionSelectedClients] =\n useState(false);\n const [selectedNotificationType, setSelectedNotificationType] = useState<\n any | undefined\n >(undefined);\n const [integrationModal, setIntegrationModal] = useState<\n \"B3\" | \"XP International\" | null\n >(null);\n const [integrationClient, setIntegrationClient] = useState(\n null\n );\n const [currentTab, setCurrentTab] = useState(\"investimentos\");\n const [darfs, setDarfs] = useState>([]);\n const [typeDarf, setTypeDarf] = useState('');\n const [yearDarf, setYearDarf] = useState(2023);\n const [prevDarfTabClient, setPrevDarfTabClient] = useState<\n string | undefined\n >();\n const [darfLoading, setDarfLoading] = useState(false);\n const [modalOperationsOpen, setModalOperationsOpen] = useState(false);\n const [sendToResp, setSendToResp] = useState(false);\n const [showSendDarfModal, setShowSendDarfModal] = useState(false);\n const [darfSelected, setDarfSelected] = useState([]);\n const [whatsappRedirectURL, setWhatsappRedirectURL] = useState<\n string | undefined\n >(undefined);\n const [notificationDrawerOpen, setNotificationDrawerOpen] = useState(false);\n const [reportDrawerWallet, setReportDrawerWallet] = useState(false);\n const [reportDrawerProventos, setReportDrawerProventos] = useState(false);\n const [posicoesFilter, setPosicoesFilter] = useState([]);\n const [pagination] = useState({\n current: currentPage,\n pageSize: 10,\n defaultPageSize: 10,\n showSizeChanger: false, // mudar para true quando o back estiver aceitando\n pageSizeOptions: [\"5\", \"10\", \"20\", \"50\", \"100\"],\n });\n const [detailedLoadingIndex, setDetailedLoadingIndex] = useState<\n number | undefined\n >();\n const [showUpgradePlan, setShowUpgradePlan] = useState(false);\n\n const clientsToUpgrade = clientsSelected.filter(\n (client) => client.planName && !client.isConcierge && !client.planName.includes('CONCIERGE')\n )\n\n const getData = async () => {\n try {\n // const { data } = await api.get(\"/dashboard\");\n await api.get(\"/dashboard\");\n } catch (err) {\n message.error(\"Ocorreu um erro ao buscar as informações do dashboard\");\n }\n };\n\n useEffect(() => {\n getData();\n }, []);\n\n useEffect(() => {\n setPosicoesFilter(selectedClient?.wallet?.filters)\n }, [selectedClient]);\n\n useEffect(() => {\n let interval: NodeJS.Timeout | null = null;\n const clientsUpdatingB3Integration = clients.filter(\n (c) => c.updatingB3Integration\n );\n if (clientsUpdatingB3Integration.length) {\n interval = setInterval(() => {\n getClientsUpdating();\n }, 3000);\n } else {\n if (interval) {\n clearInterval(interval);\n }\n }\n return () => clearInterval(interval as unknown as NodeJS.Timeout);\n }, [clients, getClientsUpdating]);\n\n useEffect(() => {\n if (!temInvestimentos) setCurrentTab(\"darfs\");\n else if (temInvestimentos && !currentTab) setCurrentTab(\"investimentos\");\n }, [selectedClient]);\n\n useEffect(() => {\n if(typeDarf === '' && selectedClient) {\n if(selectedClient?.statusBolsa === 'Integração ativa') {\n setTypeDarf('Bolsa')\n } else if (selectedClient?.statusExterior === 'Integração ativa') {\n setTypeDarf('Exterior')\n } else {\n setTypeDarf('Bolsa')\n }\n }\n }, [selectedClient, typeDarf]);\n\n const hosts = [\"-dev\", \"local\"];\n const env = hosts.some((host) => window.location.host.includes(host))\n ? \"_dev\"\n : \"\";\n const isManagerOrOffice = user.user?.isManager || user?.user?.office;\n\n const { patrimonio, classesAtivos, posicoes, corretoras } = useMemo(\n () => serializePatrimonio(selectedClient, selectedCorretoras),\n [selectedClient, selectedCorretoras]\n );\n\n const checkAll = corretoras.length === checkboxCorretoras.length;\n const indeterminate =\n checkboxCorretoras.length > 0 &&\n checkboxCorretoras.length < corretoras.length;\n\n const handleDisabled = (item: any) => {\n const codes = (item.code || []).filter(\n (el: any) =>\n el?.escritorioId?.toString() === user?.user?.officeId?.toString() ||\n el?.assessorId?.toString() === user?.user?.assessorId?.toString()\n );\n return !codes.some((el: any) => !!el?.isAuthorized) ?? false;\n };\n\n const updateFilter = async () => {\n setLoadingGet(true)\n api.patch('/clients/wallet/filter', {\n username: selectedClient?.username,\n filters: posicoesFilter || []\n })\n .then(() => {\n getClients({\n ...filters,\n searchText: searchText ? searchText : '',\n page: currentPage,\n pageSize: pagination.pageSize,\n selectClient: selectedClient?.username\n })\n })\n .catch((err) => {\n console.log(err)\n })\n }\n const carteiraCategorizadaSemFiltros = useMemo(\n () =>\n selectedClient?.wallet?.posicoes?.reduce(\n (acc: any, cur: any) => ({\n ...acc,\n [cur.categoria]: [...(acc[cur.categoria] || []), cur],\n }),\n {} as { [key: string]: any }\n ) || {},\n [selectedClient?.wallet]\n );\n\n const carteiraCategorizada = useMemo(\n () =>\n selectedClient?.wallet?.posicoes\n ?.filter((p: any) => (selectedClient?.wallet?.filters?.length ? selectedClient?.wallet?.filters : [p.codigo]).includes(p.codigo))\n ?.reduce(\n (acc: any, cur: any) => ({\n ...acc,\n [cur.categoria]: [...(acc[cur.categoria] || []), cur],\n }),\n {} as { [key: string]: any }\n ) || {},\n [selectedClient?.wallet?.posicoes]\n );\n\n const beforeUpload = (file: RcFile) => {\n setSendRequest(true);\n if (\n ![\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \"application/vnd.ms-excel\",\n \"text/x-csv\",\n \"text/plain\",\n \"text/tab-separated-values\",\n \"text/x-comma-separated-values\",\n \"text/comma-separated-values\",\n \"application/x-csv\",\n \"application/csv\",\n ].includes(file.type)\n ) {\n message.error(\"Envie um arquivo do tipo CSV\");\n setSendRequest(false);\n }\n };\n\n const handleRemoveModal = (item?: any) => {\n setItemRemove(item);\n setRemoveModalVisible(!removeModalVisible);\n };\n\n const handlePatrimonioModal = (item?: any) => {\n setPatrimonioModalVisible(!patrimonioModalVisible);\n setUpdateAllPatrimonio(false);\n };\n\n const renderLegend = (value: string, entry: any) => {\n return {value};\n };\n\n const renderCustomizedLabel = ({\n cx,\n cy,\n midAngle,\n innerRadius,\n outerRadius,\n percent,\n payload,\n }: any) => {\n const RADIAN = Math.PI / 180;\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n let fill = chartColors.find(\n (colors) => colors.background === payload.fill\n )?.label;\n if (payload.fill === \"#FCC102\") fill = \"black\";\n return (\n \n {percent * 100 > 4 && `${(percent * 100).toFixed(0)}%`}\n \n );\n };\n\n const getProviderColor = (provider: string, index: number) => {\n while (index > 8) {\n const differnce = index - 8;\n index = differnce - 1;\n }\n return chartColors[index].background;\n };\n\n const customRequest = ({ file }: UploadRequestOption) => {\n const formData = new FormData();\n if (!sendRequest) return;\n formData.append(\"file\", file);\n setLoadingFile(true);\n api\n .post(\"/clients/batch\", formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n })\n .then(({ data }) => {\n setLoadingFile(false);\n setCsvModalVisible(!csvModalVisible);\n if (data.errors.length === 0) {\n message.success(\"Integração iniciada com sucesso\");\n } else {\n message.error(\n \"Erro durante inserção. Favor conferir no modal apresentado.\"\n );\n setErrors(data.errors);\n setErrorModalVisible(true);\n }\n getClients({ page: currentPage });\n })\n .catch((error) => {\n setLoadingFile(false);\n message.error(error.response.data.message);\n });\n };\n\n const setDeleteModalVisiblity = () => {\n setDeleteModalVisible(!deleteModalVisible);\n };\n\n const handleSearch = (value: string) => {\n setSearchText(value);\n if (debounce) clearTimeout(debounce);\n debounce = setTimeout(() => {\n getClients({\n ...filters,\n searchText: value,\n page: pagination.current,\n pageSize: pagination.pageSize,\n });\n }, 1000);\n };\n\n const handlePlan: any = async (client?: IClient) => {\n if (client) {\n setLoadingToken(true);\n setSelectedClient(client);\n setLoadingToken(false);\n } else {\n setKeys([]);\n setClientsSelected([]);\n setConfirmPlanModal(false);\n setShowMobileActionSelectedClients(false);\n }\n };\n\n const createPlanFromSelectedUsers = async () => {\n try {\n const filteredClients = clientsSelected.filter(\n (client) => !client.planActive\n );\n const usernames = filteredClients.map((client) => client.username);\n const { data } = await api.post(\"/plans\", {\n usernames,\n type: paymentType.toLowerCase(),\n });\n getClients({\n ...filters,\n searchText: searchText.length > 0 ? searchText : null,\n page: currentPage,\n });\n message.success(\n `${data.count} Clientes adicionados no Plano premium com sucesso`\n );\n } catch (err) {\n message.success(\"Ocorreu um erro ao adicionar os clientes no plano\");\n } finally {\n setShowPaymentModal(false);\n setConfirmPlanModal(false);\n setKeys([]);\n setClientsSelected([]);\n }\n };\n\n const sendMail = async (type: string, clients?: IClient[]) => {\n try {\n setSendMailModalVisible(false);\n setSelectedNotificationType(undefined);\n setLoadingGet(true);\n setLoadingMail(type);\n await api.post(\"/clients/send-mail\", {\n type,\n clients: clients ?? clientsSelected,\n });\n setSendMailModalVisible(false);\n setSelectedNotificationType(undefined);\n setClientsSelected([]);\n setKeys([]);\n } catch {\n message.error(\"Algo inesperado aconteceu. Tente novamente\");\n } finally {\n message.success(\"Suas solicitações foram enviadas\");\n setLoadingGet(false);\n setLoadingMail(\"\");\n }\n };\n\n const setOptionsModalVisibility = () => {\n setOptionsModal(!optionsModal);\n setNewClient(null);\n };\n\n const setCreateModalVisibility = () => {\n setCreateModalVisible(!createModalVisible);\n setOptionsModal(!optionsModal);\n setNewClient(null);\n };\n\n const setCsvModalVisibility = () => {\n setCsvModalVisible(!csvModalVisible);\n setOptionsModal(!optionsModal);\n setNewClient(null);\n };\n\n const handleRemove = () => {\n setLoadingGet(true);\n setRemoveModalVisible(!removeModalVisible);\n api.post(\"/clients/remove\", { ...itemRemove }).then(() => {\n getClients({ page: currentPage });\n });\n };\n\n const handleEdit = (item: any) => {\n setUserSelected(clients.find((obj: any) => obj.userId === item.userId));\n setNewClient(clients.find((obj: any) => obj.userId === item.userId));\n setCreateModalVisible(!createModalVisible);\n };\n\n const handleUpdatePatrimonio = async (item: any) => {\n if (updateAllPatrimonio) {\n getClients({\n ...filters,\n searchText: searchText.length > 0 ? searchText : null,\n page: currentPage,\n updateAllClients: true,\n });\n setPatrimonioModalVisible(false);\n setUpdateAllPatrimonio(false);\n } else {\n try {\n setLoadingGet(true);\n const { data } = await api.get(\n \"/clients/updatePatrimonio/\" + item.username\n );\n if (data?.message) message.info(data.message, 5);\n else setSelectedClient((item: any) => ({ ...item, wallet: data }));\n getClients({\n ...filters,\n searchText: searchText.length > 0 ? searchText : null,\n page: currentPage,\n });\n } catch (error) {\n setLoadingGet(false);\n message.error(\n \"Não foi possível atualizar o patrimônio. Tente novamente mais tarde\"\n );\n }\n }\n };\n useEffect(() => {\n setAssessoresSelected(\n //@ts-ignore\n clients\n ?.filter((item: any) => item.username === selectedClient?.username)[0]\n ?.resp?.map((resposavel: any) => resposavel._id)\n );\n // eslint-disable-next-line\n }, [assessoresListModal, createModalVisible, clients]);\n\n useEffect(() => {\n if (user?.user?.office || user?.user?.admin)\n getProfessionals(undefined, undefined, true);\n // eslint-disable-next-line\n }, []);\n\n useEffect(() => {\n getClients();\n }, [getClients]);\n\n useEffect(() => {\n getPatrimonios(selectedClient?.username!);\n getNotifications(selectedClient?.username!);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedClient?.username]);\n\n useEffect(() => {\n getProventos(selectedClient?.username!, yearProventos);\n }, [yearProventos, selectedClient?.username]);\n\n useEffect(() => {\n api\n .post(`/clients/insentometroTransactions`, {\n username: selectedClient?.username,\n month: new Date().getMonth() + 1,\n })\n .then((res) => {\n setVendasBolsa(vendasTotais(res?.data[0]));\n setVendasRestantesBolsa(20000 - vendasTotais(res?.data[0]));\n setVendasExterior(vendasTotaisExt(res?.data[1]));\n setVendasRestantesExterior(35000 - vendasTotaisExt(res?.data[1]));\n })\n .catch(() => { });\n }, [selectedClient]);\n\n useEffect(() => {\n if (!isMobile() && !firstSelected && clients?.length > 0) {\n setFirsSelected(true);\n setSelectedClient(clients[0]);\n }\n }, [clients, firstSelected, setSelectedClient]);\n\n useEffect(() => {\n setYearProventos(new Date().getFullYear());\n if (!isMobile() && !!selectedClient?.username) {\n const index = clients.findIndex(\n (c) => c.userId === selectedClient.userId\n );\n if (index < 0) {\n setSelectedClient(clients[0]);\n handleSelectedTab(clients[0]);\n setActiveKeys([]);\n setDetailedPositions([]);\n setDetailedActiveKeys([]);\n setCheckboxCorretoras([]);\n setSelectedCorretoras([]);\n setFilterCorretoraAtivo([]);\n setVisibleTabs(false);\n setTimeout(() => {\n setVisibleTabs(true);\n }, 1000);\n }\n }\n }, [\n selectedClient?.username,\n selectedClient?.userId,\n clients,\n setSelectedClient,\n setYearProventos,\n ]);\n\n const handleSelectedTab = (item: IClient) => {\n if (!!item?.wallet && (item?.wallet?.posicoes?.length || 0) > 0) {\n setCurrentTab(\"investimentos\");\n } else if (item?.code?.[0].isAuthorized) {\n setCurrentTab(\"darfs\");\n }\n };\n\n const handleChangeAssessores = (value: string[]) => {\n setAssessoresSelected(value);\n };\n\n const onInputBlur = (inputName: string, value: string) => {\n const clientAttr: any = newClient;\n if (inputName === \"plan\" && value === \"free\") {\n return;\n }\n if (!!clientAttr) {\n if (inputName === \"plan\" && value !== \"free\") {\n clientAttr[\"planType\"] = value;\n } else if (inputName === \"phone\") {\n clientAttr[inputName] = value.replace(/[_.-/-() ]/g, \"\");\n } else {\n clientAttr[inputName] = value;\n }\n setNewClient({ ...clientAttr });\n }\n };\n\n const sendPermissionEmail = async (item: any) => {\n try {\n await api.post(\"/clients/sendPermissionEmail\", {\n username: item?.username || \"\",\n });\n message.success(\"E-mail de solicitação de acesso enviado\");\n } catch (err: any) {\n message.error(\n \"Não foi possível enviar o e-mail de solicitação de acesso. Tente novamente mais tarde\"\n );\n }\n };\n\n const patrimonioFiltrado = useMemo(\n () =>\n selectedClient?.wallet?.posicoes?.reduce(\n (acc: any, cur: any) =>\n filterCorretoraAtivo.includes(cur.corretora)\n ? {\n patrimonioTotalFiltrado:\n acc.patrimonioTotalFiltrado + cur.posicao,\n lucroPrejuizoDiario:\n acc.lucroPrejuizoDiario + cur.lucroPrejuizoDiario,\n lucroPrejuizoDiarioPercentualNumerator:\n acc.lucroPrejuizoDiarioPercentualNumerator +\n (cur.categoria === \"TesouroDireto\"\n ? 0\n : cur.resumo?.lucroPrejuizoDiarioPercentualNumerator),\n lucroPrejuizoDiarioPercentualDenominator:\n acc.lucroPrejuizoDiarioPercentualDenominator +\n (cur.categoria === \"TesouroDireto\"\n ? 0\n : cur.resumo?.lucroPrejuizoDiarioPercentualDenominator),\n lucroPrejuizoTotal:\n acc.lucroPrejuizoTotal + cur.lucroPrejuizoTotal,\n lucroPrejuizoTotalPercentualNumerator:\n acc.lucroPrejuizoTotalPercentualNumerator +\n cur.resumo?.lucroPrejuizoTotalPercentualNumerator,\n lucroPrejuizoTotalPercentualDenominator:\n acc.lucroPrejuizoTotalPercentualDenominator +\n cur.resumo?.lucroPrejuizoTotalPercentualDenominator,\n }\n : acc,\n {\n lucroPrejuizoDiario: 0,\n lucroPrejuizoDiarioPercentualNumerator: 0,\n lucroPrejuizoDiarioPercentualDenominator: 0,\n lucroPrejuizoTotal: 0,\n lucroPrejuizoTotalPercentualNumerator: 0,\n lucroPrejuizoTotalPercentualDenominator: 0,\n patrimonioTotalFiltrado: 0,\n }\n ) || {\n lucroPrejuizoDiario: 0,\n lucroPrejuizoDiarioPercentualNumerator: 0,\n lucroPrejuizoDiarioPercentualDenominator: 0,\n lucroPrejuizoTotal: 0,\n lucroPrejuizoTotalPercentualNumerator: 0,\n lucroPrejuizoTotalPercentualDenominator: 0,\n patrimonioTotalFiltrado: 0,\n },\n [selectedClient?.wallet?.posicoes, filterCorretoraAtivo]\n );\n\n const downloadRelatorio = async (\n type: string,\n category: string,\n item: any\n ) => {\n try {\n setLoadingGet(true);\n\n if (type === \"pdf\") {\n let fileUrl = \"\";\n let file = \"\";\n if (category === \"patrimônios\") {\n const ret = await api.post(\"/clients/downloadRelatorio\", {\n username: item.username,\n userId: item.userId,\n escritorioId: item.code[0].escritorioId,\n corretoras: filterCorretoraAtivo,\n });\n getClients({\n ...filters,\n searchText: searchText.length > 0 ? searchText : null,\n page: currentPage,\n });\n if (ret) {\n fileUrl = ret?.data?.fileUrl;\n file = ret?.data?.file;\n }\n } else if (category === \"proventos\") {\n const escritorioId =\n selectedClient && selectedClient?.code\n ? selectedClient?.code[0].escritorioId\n : null;\n const newProventos = proventos.map((el: any) => {\n return {\n code: el.code || \"\",\n date: moment(el?.date).format(\"DD/MM/YYYY\"),\n corporateActionTypeDescription: _.capitalize(\n el?.corporateActionTypeDescription\n ),\n corretora: el?.corretora,\n quantity: el?.quantity || \"-\",\n unitPrice: el?.unitPrice,\n grossAmount: el?.grossAmount,\n };\n });\n const ret = await api.post(\"/clients/downloadRelatorioProventos\", {\n proventos: newProventos,\n escritorioId: escritorioId,\n username: selectedClient?.username\n });\n if (ret) {\n fileUrl = ret?.data?.fileUrl;\n file = ret?.data?.file;\n }\n }\n if (fileUrl) {\n download(fileUrl);\n } else if (file) {\n downloadPDF(\n file,\n `${category === \"patrimônios\" ? \"Meus Investimentos\" : \"Proventos\"}`\n );\n }\n } else if (type === \"xlsx\") {\n if (category === \"patrimônios\") {\n if (filterCorretoraAtivo.length > 0 || posicoesFilter.length > 0) {\n const res = await api.post(\n \"/clients/downloadRelatorioPatrimonioXlsx\",\n {\n username: item.username,\n corretoras: filterCorretoraAtivo,\n posicoes: posicoesFilter\n }\n );\n download(res?.data?.fileUrl);\n } else {\n download(patrimoniosFileUrl);\n }\n } else if (category === \"proventos\") {\n download(proventosFileUrl);\n }\n }\n setLoadingGet(false);\n } catch (err: any) {\n setLoadingGet(false);\n console.error(err);\n message.error(\n `Não foi possível baixar o relatório de ${category}. Tente novamente mais tarde`\n );\n }\n };\n\n const handleOpenFilterModal = () => {\n setShowFilterModal(true);\n };\n\n const getPlan = (item: any) =>{\n return (\n <>\n {'PLANO '}\n {item?.planName?.includes('_BASIC') ? 'BASIC ' : ''}\n {item?.planName?.includes('_CONCIERGE') ? 'CONCIERGE ' : ''}\n {item?.planName?.includes('_PRO') ? 'PREMIUM ' : ''}\n {item?.planName?.includes('ASSESSOR') ? 'ASSESSOR ' : ''}\n {(item.planType !== 'exterior') \n ? ((item?.planName?.includes('_MONTH') || item?.planType?.includes('mensal')) ? 'MENSAL' : 'ANUAL')\n : item.planName?.includes('ASSESSOR') ? ''\n : 'GRATUITO EXTERIOR'}\n {item.planType === \"exterior\"\n ? \"\"\n : item.hasPlanXp\n ? \" (CLIENTE)\"\n : \" (ESCRITÓRIO)\"}\n \n )\n }\n\n const ClientPlan: React.FC<{ item: IClient & { wallet: any } }> = ({\n item,\n }) => {\n return (\n \n {item.planActive || item.planDueDate > new Date().getTime() || item.planType === \"exterior\" || item.planName === 'ASSESSOR' ? (\n \n {getPlan(item)}\n {handleDisabled(item) ? (\n <>  |  Solicite permissão ao usuário\n ) : item.wallet ? (\n <>\n   |  PATRIMÔNIO: \n {formatCurrency(item.wallet?.patrimonioTotal || 0)}\n \n ) : (\n \"\"\n )}\n \n ) : (\n \n \n  SEM PLANO\n \n )}\n \n );\n };\n\n const renderIsentCard = (categoria: string) => {\n if (categoria === \"Ações\" || categoria === \"Exterior\") {\n const vendas = categoria === \"Ações\" ? vendasBolsa : vendasExterior;\n const restante =\n categoria === \"Ações\" ? vendasRestantesBolsa : vendasRestantesExterior;\n const limit = categoria === \"Ações\" ? 20000 : 35000;\n const tipVendas = vendas\n ? `R$ ${String(\n vendas.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n )}`\n : \"R$ 0,00\";\n const complete = vendas ? (vendas / limit) * 100 : 0;\n return (\n \n {restante <= 0 ? (\n \n O seu limite de vendas isentas foi atingido neste mês\n \n ) : (\n \n Você ainda possui{\" \"}\n \n {formatCurrency(restante)}{\" \"}\n {\" \"}\n em vendas isentas em{\" \"}\n \n {Months[new Date().getMonth()]} {new Date().getFullYear()}\n \n \n )}\n
\n \n = 100 ? 100 : complete}%`,\n borderBottomRightRadius: complete >= 100 ? \"50px\" : 0,\n borderTopRightRadius: complete >= 100 ? \"50px\" : 0,\n }}\n >\n
\n {vendas > 2500 ? formatCurrency(vendas) : \"\"}\n
\n
\n \n \n
\n );\n }\n };\n\n const downloadExcel = (data: any) => {\n download(proventosFileUrl);\n };\n\n const monthReport = (data?: any, index?: any) => {\n setOpenModal(true);\n if (data) {\n setMonthProventos(data);\n } else {\n const date = new Date();\n const y = date.getFullYear();\n const m = date.toLocaleString(\"pt-BR\", { month: \"short\" });\n const name = `${m[0].toUpperCase()}${m.substring(1, 3)}`;\n setMonthProventos({ name });\n setYearProventos(y);\n }\n };\n\n const handleDarfDownload = async (url?: string, idDarf?: string) => {\n if (url) {\n window.open(url);\n } else if (idDarf) {\n const token = localStorage.getItem(\"@VeloTax:token\");\n const { data } = await apiBolsa.get(`/darf/download/${idDarf}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n window.open(data?.url || \"\");\n }\n };\n\n const handleDarfSendAction = async (\n sendToWhatsapp?: boolean,\n directDownload?: boolean,\n inputClients?: Array\n ) => {\n const firstClient = inputClients?.[0]\n const oldModel = (firstClient?.year ?? 2023) < yearConfigPL4173\n if (oldModel) {\n handleDarfSend(sendToWhatsapp, directDownload, inputClients)\n } else {\n setModalOperationsOpen(false);\n setShowSendDarfModal(true);\n }\n }\n\n const handleDarfSend = async (\n sendToWhatsapp?: boolean,\n directDownload?: boolean,\n inputClients?: Array\n ) => {\n try {\n const clients =\n clientsSelected.length > 0 ? clientsSelected : inputClients || [];\n if (whatsappRedirectURL) window.open(whatsappRedirectURL);\n else {\n setLoadingGet(true);\n if (sendToWhatsapp) setWhatsappRedirectURL(\"loading\");\n const { data } = await api.post(\"/darf/send\", {\n clients: clients,\n sendToResp,\n sendToWhatsapp,\n });\n const phone = clients[0].phone;\n const singleClient = data[0] || {};\n const shortPath = singleClient?.shortPath;\n\n const isExterior = singleClient?.type === 'Exterior'\n const oldModel = (singleClient?.year ?? 2023) < yearConfigPL4173\n const darfLabel = isExterior && !oldModel ? 'relatório' : 'DARF' \n\n if (shortPath && sendToWhatsapp) {\n const text = `Olá, ${singleClient?.name || \"Cliente\"\n }. Segue seu ${darfLabel} do mês ${singleClient?.month}/${singleClient?.year\n }: ${shortPath}`;\n const url = `https://wa.me${phone ? `/55${phone}` : \"\"\n }?text=${text.replaceAll(\" \", \"%20\")}`;\n setWhatsappRedirectURL(url);\n window.open(url);\n }\n if (!sendToWhatsapp) {\n if (directDownload) {\n handleDarfDownload(shortPath);\n } else {\n message.success(`Envio de ${darfLabel}s realizado`);\n setShowSendDarfModal(false);\n }\n }\n setSendToResp(false);\n getClients({\n ...filters,\n getAllDarfStatus: true,\n planActive: true,\n fromClients: true,\n });\n }\n } catch (error: any) {\n setWhatsappRedirectURL(undefined);\n if (error.message.includes(\"400\")) {\n message.error(\n \"É necessário contratar o plano para prosseguir\"\n );\n } else {\n message.error(\"Algo errado aconteceu, tente novamente mais tarde.\");\n }\n }\n setLoadingGet(false);\n };\n\n const TabProventos = () => {\n const date = new Date();\n const selectYears = [1, 0, -1, -2, -3];\n if (\n selectedClient?.statusBolsa === \"Integração inativa\" &&\n selectedClient?.statusExterior === \"Integração ativa\"\n )\n selectYears.splice(0, 1);\n return (\n \n <>\n
\n setYearProventos(e)}\n options={selectYears.map((y) => ({\n value: date.getFullYear() + y,\n label: date.getFullYear() + y,\n }))}\n />\n setTypeProventos(e)}\n options={[\n {\n label: \"Por tipo de provento\",\n value: \"provento\",\n },\n {\n label: \"Por corretora\",\n value: \"corretora\",\n },\n {\n label: \"Por data de recebimento\",\n value: \"data\",\n },\n ]}\n />\n
\n }\n onClick={() => monthReport()}\n >\n Ver detalhes\n \n }\n onClick={() => {\n setReportDrawerProventos(true);\n }}\n >\n Baixar\n \n
\n
\n {proventosLoading ? (\n \n ) : (\n \n )}\n \n \n downloadRelatorio(type, \"proventos\", proventos)\n }\n onClose={() => setReportDrawerProventos(false)}\n />\n
\n );\n };\n\n const onChangeActiveKeys = (keys: string | string[]) => {\n setActiveKeys(keys as string[]);\n const lastOpened = keys[keys.length - 1];\n\n let codigo =\n lastOpened?.replaceAll(\" \", \"\").split(\"-\")[3] ||\n lastOpened?.replaceAll(\" \", \"\").split(\"-\")[2];\n let market =\n lastOpened?.replaceAll(\" \", \"\").split(\"-\")[0] ||\n lastOpened?.replaceAll(\" \", \"\").split(\"-\")[1];\n let index = lastOpened?.replaceAll(\" \", \"\").split(\"-\")[1];\n if (\n lastOpened.includes(\"Imobiliário\") ||\n lastOpened.includes(\"Traded\") ||\n lastOpened.includes(\"Brazilian\")\n ) {\n codigo = lastOpened?.replaceAll(\" \", \"\").replace(\"-\", \"\").split(\"-\")[2];\n index = lastOpened?.replaceAll(\" \", \"\").replace(\"-\", \"\").split(\"-\")[1];\n }\n\n if (lastOpened) {\n setDetailedActiveKeys((detailedActiveKeys) => {\n if (\n !detailedActiveKeys.includes(lastOpened) &&\n keys.length > detailedActiveKeys.length\n ) {\n setDetailedLoadingIndex(Number(index));\n api\n .get(`/clients/detalied/${codigo}`, {\n params: {\n exterior:\n market.toLowerCase() === \"exterior\" ? true : undefined,\n },\n })\n .then(({ data }) => {\n setDetailedPositions((positions) => [\n ...positions,\n {\n index,\n codigo: codigo,\n details: data,\n },\n ]);\n return [...detailedActiveKeys, lastOpened];\n })\n .finally(() => {\n setDetailedLoadingIndex(undefined);\n });\n }\n return detailedActiveKeys;\n });\n }\n };\n\n const TabInvestimentos = (\n \n \n {!loadingGet && selectedClient?.wallet && (\n }\n onClick={() => setShowCorretoraFilterModal(true)}\n className={selectedCorretoras.length > 0 ? \"filtro-aplicado\" : \"\"}\n >\n Filtrar\n \n )}\n {!loadingGet && selectedClient?.wallet && (\n \n }\n onClick={() => {\n setReportDrawerWallet(true);\n }}\n />\n \n )}\n \n downloadRelatorio(type, \"patrimônios\", selectedClient)\n }\n onClose={() => setReportDrawerWallet(false)}\n />\n \n \n \n Investimento total:{\" \"}\n {loadingGet ? (\n \n ) : (\n \n {formatCurrency(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.patrimonioTotalFiltrado\n : selectedClient?.wallet?.patrimonioTotal\n )}\n \n )}\n \n \n
\n Retorno diário\n 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoDiario\n : selectedClient?.wallet?.lucroPrejuizoDiario || 0\n )}\n >\n {arrow(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoDiario\n : selectedClient?.wallet?.lucroPrejuizoDiario || 0\n )\n )}\n {formatCurrency(negativeToPositive(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoDiario\n : selectedClient?.wallet?.lucroPrejuizoDiario || 0\n )\n ))}{\" \"}\n {filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length &&\n patrimoniosLoading &&\n (isNaN(\n patrimonioFiltrado.lucroPrejuizoDiarioPercentualNumerator\n ) ||\n isNaN(\n patrimonioFiltrado.lucroPrejuizoDiarioPercentualDenominator\n )) ? (\n \n ) : (\n <>\n (\n {arrow(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoDiarioPercentualNumerator /\n patrimonioFiltrado.lucroPrejuizoDiarioPercentualDenominator\n : selectedClient?.wallet\n ?.lucroPrejuizoDiarioPercentual || 0\n )\n )}\n {numberToPercentage(negativeToPositive(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoDiarioPercentualNumerator /\n patrimonioFiltrado.lucroPrejuizoDiarioPercentualDenominator\n : selectedClient?.wallet\n ?.lucroPrejuizoDiarioPercentual || 0\n )\n ))}\n )\n \n )}\n \n
\n
\n Retorno total\n 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoTotal\n : selectedClient?.wallet?.lucroPrejuizoTotal || 0\n )}\n >\n {arrow(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoTotal\n : selectedClient?.wallet?.lucroPrejuizoTotal || 0\n )\n )}\n {formatCurrency(negativeToPositive(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoTotal\n : selectedClient?.wallet?.lucroPrejuizoTotal || 0\n )\n ))}{\" \"}\n {filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length &&\n patrimoniosLoading &&\n (isNaN(\n patrimonioFiltrado.lucroPrejuizoTotalPercentualNumerator\n ) ||\n isNaN(\n patrimonioFiltrado.lucroPrejuizoTotalPercentualDenominator\n )) ? (\n \n ) : (\n <>\n (\n {arrow(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoTotalPercentualNumerator /\n patrimonioFiltrado.lucroPrejuizoTotalPercentualDenominator\n : selectedClient?.wallet\n ?.lucroPrejuizoTotalPercentual || 0\n )\n )}\n {numberToPercentage(negativeToPositive(\n Number(\n filterCorretoraAtivo.length > 0 &&\n filterCorretoraAtivo.length < corretoras.length\n ? patrimonioFiltrado.lucroPrejuizoTotalPercentualNumerator /\n patrimonioFiltrado.lucroPrejuizoTotalPercentualDenominator\n : selectedClient?.wallet\n ?.lucroPrejuizoTotalPercentual || 0\n )\n ))}\n )\n \n )}\n \n
\n \n \n Investimento total em outras corretoras:{\" \"}\n {loadingGet ? (\n \n ) : (\n \n {formatCurrency(selectedClient?.wallet?.patrimonioReverse)}\n \n )}\n \n {selectedClient?.wallet ? (\n <>\n \n \n <>\n \n {(chartType === \"patrimonio\" ||\n chartType === \"posicoes\" ||\n (chartType === \"classe\" && classesAtivos.length > 0)) && (\n \n )}\n \n {(chartType === \"classe\"\n ? classesAtivos\n : chartType === \"posicoes\"\n ? posicoes\n : patrimonio\n )?.map((entry: any, index: number) => {\n return (\n \n );\n })}\n \n {\n return `${numberToCurrency(Number(value))} (${String(\n payload.percentage\n ).replace(\".\", \",\")}%)`;\n }}\n />\n \n
\n setChartType(value)}\n suffixIcon={}\n getPopupContainer={(target) => target.parentElement!}\n >\n \n Visualizar por corretora\n \n \n Visualizar classe de ativo\n \n \n Visualizar por ativo\n \n \n
\n \n
\n \n\n \n
\n ExpandIcon({ isActive })}\n >\n {filterCorretoraAtivo.length === 0\n ? Object.keys(carteiraCategorizada).map((categoria) => (\n \n \n {categoria === \"TesouroDireto\"\n ? \"Tesouro Direto\"\n : categoria}\n \n \n \n \n }\n >\n \n ExpandIcon({ isActive })\n }\n >\n {categoria !== \"Exterior\" && renderIsentCard(categoria)}\n {carteiraCategorizada[categoria].map(\n (posicao: any, index: number) => (\n \n {PosicaoCard({\n key: `${categoria}-${index}-${posicao.codigo}`,\n posicao,\n hideValues,\n setHelpModal,\n loading: detailedLoadingIndex === index,\n cotacaoVenda:\n categoria === \"Exterior\" &&\n selectedClient?.wallet?.cotacaoVenda > 0\n ? selectedClient?.wallet?.cotacaoVenda\n : undefined,\n details: detailedPositions?.find(\n (el: any) =>\n el.codigo === posicao.codigo &&\n Number(el.index) === index\n )?.details,\n })}\n \n )\n )}\n \n \n ))\n : Object.keys(carteiraCategorizada).map((categoria) => (\n \n \n {categoria === \"TesouroDireto\"\n ? \"Tesouro Direto\"\n : categoria}\n \n \n \n \n }\n >\n \n ExpandIcon({ isActive })\n }\n >\n {categoria !== \"Exterior\" && renderIsentCard(categoria)}\n {carteiraCategorizada[categoria]\n .filter((item: any) =>\n filterCorretoraAtivo.includes(item?.corretora)\n )\n .map((posicao: any, index: number) => (\n \n {PosicaoCard({\n key: `${categoria}-${index}-${posicao.codigo}`,\n posicao,\n hideValues,\n setHelpModal,\n loading: detailedLoadingIndex === index,\n cotacaoVenda:\n categoria === \"Exterior\" &&\n selectedClient?.wallet?.cotacaoVenda > 0\n ? selectedClient?.wallet?.cotacaoVenda\n : 0,\n details: detailedPositions?.find(\n (el: any) =>\n el.codigo === posicao.codigo &&\n Number(el.index) === index\n )?.details,\n })}\n \n ))}\n \n \n ))}\n \n {!loadingGet && (\n \n \n \n }\n loading={loadingGet}\n className=\"button-refresh-wallet\"\n onClick={() => handleUpdatePatrimonio(selectedClient)}\n />\n \n {selectedClient?.wallet?.lastUpdate}\n \n \n )}\n \n
    \n
  • \n \n As posições são atualizadas em até quatro dias úteis após\n sua negociação (D+4)\n
  • \n
  • \n \n Bonds e/ou operações fora da bolsa de valores não são\n apresentadas na listagem acima.\n
  • \n
\n \n
\n \n \n ) : (\n \n \n Nenhuma posição encontrada\n \n \n )}\n
\n \n );\n\n const TabDarfs = () => {\n const date = new Date();\n const yearsOperations = [0, -1, -2, -3];\n const filteredDarfs = darfs.filter((d) => d?.type === typeDarf);\n const darfsToDisplay: any[] =\n !filteredDarfs?.length || !hasPlan\n ? mesesPassados(new Date(yearDarf, 6, 15, 12)).map((m, i) => ({\n month: m,\n year: yearDarf,\n impostoDevido: 0,\n }))\n : filteredDarfs;\n\n const getDarfs = useCallback((e: number) => {\n setPrevDarfTabClient(selectedClient?.username);\n setDarfLoading(true);\n api\n .get(\"/clients/allDarf\", {\n params: {\n searchText: selectedClient?.username,\n page: 1,\n pageSize: 24,\n year: e,\n username: selectedClient?.username,\n fromClients: true,\n },\n })\n .then((res) => {\n setDarfs(res.data.data);\n })\n .catch(() =>\n message.error(\n \"Não foi possível buscar DARFs. Tente novamente mais tarde\"\n )\n )\n .finally(() => setDarfLoading(false));\n }, []);\n\n useEffect(() => {\n if (\n selectedClient?.username !== prevDarfTabClient &&\n currentTab === \"darfs\"\n ) {\n getDarfs(yearDarf);\n }\n }, [getDarfs]);\n\n return (\n \n {!hasPlan && (\n \n
\n Contrate o plano premium para ver a lista completa de DARFs\n
\n
\n )}\n \n
\n {\n getDarfs(e);\n setYearDarf(e);\n }}\n options={yearsOperations.map((y) => ({\n value: date.getFullYear() + y,\n label: date.getFullYear() + y,\n }))}\n />\n
\n
\n {selectedClient?.statusBolsa === \"Integração ativa\" && (\n setTypeDarf(\"Bolsa\")}\n style={{ marginRight: \"8px\" }}\n >\n Bolsa de valores\n \n )}\n {selectedClient?.statusExterior === \"Integração ativa\" && (\n setTypeDarf(\"Exterior\")}\n >\n Exterior\n \n )}\n
\n
\n {darfLoading ? (\n \n ) : (\n darfsToDisplay.map((d: any) => {\n const vt = vendasTotais(d) + vendasTotaisExt(d);\n const transactions = d?.transactions;\n const impostoDevido: boolean = d?.impostoDevido >= freeTaxLimit;\n const impostoIsento: boolean =\n d?.type === \"Exterior\"\n ? d?.vendasTotais > 0\n : d?.impostoDevido !== 0 && d?.vendasTotais > 0;\n const isExterior = d.type === \"Exterior\"\n const oldModel = yearDarf < yearConfigPL4173\n return (\n \n
\n

{`${monthsExtended[d?.month - 1]} ${d?.year}`}

\n {((isExterior && !oldModel) || (d?.year > 2023 && isExterior) ) ? (<>)\n : d?.darfPago && impostoDevido ? (\n \n ) : impostoDevido ? (\n \n ) : (\n <>\n )}\n {(d?.year > 2023 && isExterior) &&
\n {\n setDarfSelected([d]);\n setModalOperationsOpen(true);\n }}\n >\n \n {!isMobile() && \"Visualizar\"}\n \n
}\n
\n {/* {((d?.year <= 2023 && isExterior) || !isExterior) && } */}\n \n {(d?.year > 2023 && isExterior) &&
\n {transactions?.length ? 'Há movimentações neste mês': \"Sem movimentações\"}\n
}\n {((d?.year <= 2023 && isExterior) || !isExterior) &&
\n {impostoIsento || transactions?.length > 0 ? (\n
\n

\n Vendas totais:{\" \"}\n {formatCurrency(d?.vendasTotais ?? vt)}\n

\n

\n Imposto a pagar:{\" \"}\n \n {d?.impostoDevido <= 0 || d?.impostoDevido <= freeTaxLimit\n ? \"Isento\"\n : formatCurrency(d?.impostoDevido)}\n \n

\n {impostoDevido && (!isExterior || oldModel) && (\n

\n Vencimento:{\" \"}\n \n {moment({ year: d?.year, month: d?.month - 1 })\n .add(1, \"month\")\n .endOf(\"month\")\n .format(\"DD/MM/YYYY\")}\n \n

\n )}\n
\n ) : (\n
\n

\n Não houve movimentações tributáveis neste mês.\n

\n
\n )}\n
\n {\n impostoDevido && typeDarf === \"Bolsa\" && thirdBusinessDayAndMonth(d).disabled\n ?\n \n {\n setShowDarfTooltip(!showDarfTooltip)\n\n setTimeout(() => {\n setShowDarfTooltip(false)\n }, 1500);\n }}\n >\n Enviar\n \n \n :\n impostoDevido\n ?\n {\n setDarfSelected([d]);\n setShowSendDarfModal(true);\n }}\n >\n {isExterior && !oldModel ? 'Enviar relatório' : \"Enviar\"}\n \n :\n null\n }\n {\n setDarfSelected([d]);\n setModalOperationsOpen(true);\n }}\n >\n \n {!impostoDevido && \"Visualizar\"}\n \n
\n
}\n
\n );\n })\n )}\n
\n );\n };\n\n const temInvestimentos =\n !!selectedClient?.wallet &&\n (selectedClient?.wallet?.posicoes?.length || 0) > 0;\n\n const hasPlan =\n selectedClient?.planActive ||\n moment(new Date(selectedClient?.planDueDate || 2021)).isAfter(\n moment(new Date())\n ) ||\n selectedClient?.planType === \"exterior\";\n\n const isAuthorized = selectedClient?.code?.[0].isAuthorized;\n\n const temAvisos =\n !hasPlan ||\n selectedClient?.statusBolsa !== \"Integração ativa\" ||\n selectedClient?.statusExterior !== \"Integração ativa\";\n\n const mostrarTabs = true;\n // hasPlan &&\n // (selectedClient?.statusBolsa === \"Integração ativa\" ||\n // selectedClient?.statusExterior === \"Integração ativa\");\n\n return (\n \n \n \n \n \n Meus clientes\n \n \n \n }\n onClick={setOptionsModalVisibility}\n >\n Adicionar\n \n \n \n \n Investimento total:{\" \"}\n \n {loadingGet ? (\n \n ) : (\n \n {formatCurrency(totalPatrimonio || 0)}\n \n )}\n \n \n \n Investimento total em outras corretoras:{\" \"}\n \n {loadingGet ? (\n \n ) : (\n \n {formatCurrency(totalPatrimonioReverse || 0)}\n \n )}\n \n \n }\n onChange={(e) => handleSearch(e.target.value)}\n />\n \n \n \n item.userId === selectedClient?.userId ? \"selected-client\" : \"\"\n }\n rowSelection={{\n selectedRowKeys: keys,\n onChange: (_: any, selectedRows) => {\n setClientsSelected(selectedRows);\n setShowUpgradePlan(false);\n setKeys((selectedRows ?? []).map((el) => el.username));\n },\n getCheckboxProps: (record: any) => ({\n disabled: handleDisabled(record),\n }),\n }}\n pagination={{\n defaultPageSize: 10,\n total: totalClients,\n defaultCurrent: 1,\n showLessItems: true,\n showSizeChanger: false,\n }}\n onChange={(pagination) => {\n setCurrentPage(pagination.current ?? 1);\n getClients({\n searchText,\n page: pagination.current,\n pageSize: pagination.pageSize,\n resp: (appliedFilters.resp || []) as string[],\n statusBolsa: appliedFilters.statusBolsa as CalcStatus[],\n planActive: (appliedFilters.planActive || []) as string[],\n statusExterior: appliedFilters.statusExterior as CalcStatus[],\n });\n }}\n columns={[\n {\n title: (\n <>\n
\n Selecionar todos\n
\n }\n onClick={handleOpenFilterModal}\n className={\n Object.keys(appliedFilters).filter(\n (key) => (appliedFilters[key]?.length || 0) > 0\n ).length > 0\n ? \"filtro-aplicado\"\n : \"\"\n }\n >\n Filtrar\n \n {clients.length > 0 && (\n \n }\n onClick={() => handleDownloadSheet(\"Clientes\")}\n />\n \n )}\n {clients.length > 0 && false && (\n \n }\n onClick={() => {\n setUpdateAllPatrimonio(true);\n setPatrimonioModalVisible(true);\n }}\n />\n \n )}\n
\n
\n \n ),\n render: (_, item) => (\n {\n setSelectedClient(item);\n setVisibleChart(false);\n setVisibleTabs(false);\n handleSelectedTab(item);\n setActiveKeys([]);\n setDetailedPositions([]);\n setDetailedActiveKeys([]);\n setCheckboxCorretoras([]);\n setSelectedCorretoras([]);\n setFilterCorretoraAtivo([]);\n setTimeout(() => {\n setVisibleChart(true);\n setVisibleTabs(true);\n }, 200);\n }}\n >\n \n \n {item.name}\n {handleDisabled(item) ? (\n \n \n \n \n \n ) : item.planActive ? (\n \n ) : (\n <>\n )}\n \n \n \n \n \n \n {item.statusBolsa !== \"Integração ativa\" ? (\n Inativo Bolsa\n ) : (\n \n Ativo Bolsa\n {item.updatingB3Integration && (\n
\n \n \n \n
\n )}\n {item.b3IntegrationUpdated && (\n
\n \n \n \n
\n )}\n
\n )}\n {item.statusExterior !== \"Integração ativa\" ? (\n Inativo Exterior\n ) : (\n Ativo Exterior\n )}\n \n {(item?.planActive ||\n moment(new Date(item?.planDueDate || 2021)).isAfter(\n moment(new Date())\n )) &&\n (item?.notifications?.filter((n) => !n.viewed)\n ?.length || 0) > 0 && (\n !n.viewed)\n ?.length || 0) >= 100\n ? \"large\"\n : \"\"\n }`}\n >\n \n {(item?.notifications?.filter((n) => !n.viewed)\n ?.length || 0) >= 100\n ? \"+99\"\n : item?.notifications?.filter((n) => !n.viewed)\n ?.length}\n \n \n )}\n
\n ),\n },\n ]}\n />\n \n \n {clientsSelected.length > 0 && (\n
\n {\n setShowMobileActionSelectedClients(true);\n }}\n >\n Ações\n \n
\n )}\n
\n 0 && selectedClient) ||\n (clientsSelected.length > 0 && showMobileActionSelectedClients),\n })}\n >\n {clients?.length === 0 ? (\n \n \n \n Olá, {user.user.name}!\n \n \n Para iniciar, adicione e selecione clientes na lista ao lado para\n visualizar mais detalhes.\n \n \n ) : selectedClient && !clientsSelected.length ? (\n \n
\n {!handleDisabled(selectedClient) ? (\n : }\n onClick={() => {\n loginInClient(selectedClient);\n }}\n >\n Acessar conta\n \n ) : (\n \n ) : (\n \n )\n }\n onClick={() => {\n sendPermissionEmail(selectedClient);\n }}\n >\n Reenviar solicitação de acesso\n \n )}\n ,\n onClick: () => handleRemoveModal(selectedClient),\n },\n ]\n : [\n {\n key: \"editar\",\n label: \"Editar\",\n icon: ,\n onClick: () => handleEdit(selectedClient),\n },\n {\n key: \"remover\",\n label: \"Remover\",\n icon: ,\n onClick: () => handleRemoveModal(selectedClient),\n },\n {\n key: \"patrimonio\",\n label: \"Atualizar Patrimônio\",\n icon: ,\n onClick: () => handleUpdatePatrimonio(selectedClient),\n },\n ],\n }}\n >\n }\n onClick={(e) => e.preventDefault()}\n />\n \n }\n onClick={() => {\n setSelectedClient(null);\n setActiveKeys([]);\n setDetailedPositions([]);\n setDetailedActiveKeys([]);\n }}\n />\n
\n
\n
\n {(selectedClient?.planActive ||\n moment(new Date(selectedClient?.planDueDate || 2021)).isAfter(\n moment(new Date())\n )) && (\n
\n !n.viewed).length\n }\n showZero={false}\n offset={[-12, 48]}\n >\n }\n onClick={() => {\n setNotificationDrawerOpen(true);\n }}\n />\n \n
\n )}\n \n \n {selectedClient.name}\n {selectedClient.planActive && (\n \n \n \n )}\n \n \n {selectedClient.planActive &&\n !handleDisabled(selectedClient) &&\n selectedClient.wallet && (\n \n \n \n PATRIMÔNIO: \n {formatCurrency(\n selectedClient.wallet?.patrimonioTotal || 0\n )}\n  \n {\n setClientsSelected([{ ...selectedClient }]);\n getHistory(selectedClient.username);\n setShowNotasCorretagemModal(true);\n }}\n />\n \n {selectedClient.updatingB3Integration && (\n \n
\n \n Atualizando integração com a B3\n
\n
\n )}\n {selectedClient.b3IntegrationUpdated && (\n \n \n \n Integração com a B3 atualizada\n
\n \n )}\n \n \n )}\n
\n \n {selectedClient.phone && (\n \n
Telefone:
\n
\n {numberToPhone(selectedClient.phone)}\n
\n \n )}\n \n
CPF:
\n
\n {maskCpf(selectedClient.username)}\n
\n \n \n
E-mail:
\n
{selectedClient.email}
\n \n {user.user.office || user?.user?.admin || user?.user?.liberadaContratacao ? (\n \n
\n Concierge responsável:\n
\n
\n {user?.user?.liberadaContratacao ? (\n \n \n {user.user.responsavel?.name}\n {\" \"}\n \n \n ) : !user?.user?.liberadaContratacao ? (\n \n Ativar concierge{\" \"}\n \n \n ) : (\n \"-\"\n )}\n
\n \n ) : (\n <>\n )}\n {handleVencimento(selectedClient) ? (\n \n
Vencimento:
\n
\n {handleVencimento(selectedClient)}\n
\n \n ) : (\n <>\n )}\n
\n {hasPlan && temAvisos && (\n client.cancelRecuring\n )}\n setIntegrationModal={setIntegrationModal}\n setIntegrationClient={setIntegrationClient}\n setClientsSelected={setClientsSelected}\n filters={{...filters, page: currentPage}}\n />\n )}\n {mostrarTabs && !handleDisabled(selectedClient) && (\n
\n {!visibleTabs ? (\n
\n \n
\n ) : (\n {\n setCurrentTab(key);\n if (key === \"darfs\") {\n setTypeDarf(\n (typeDarf === \"Exterior\" &&\n selectedClient?.statusExterior !==\n \"Integração ativa\") ||\n selectedClient?.statusBolsa === \"Integração ativa\"\n ? \"Bolsa\"\n : \"Exterior\"\n );\n } else {\n setVisibleChart(false);\n setTimeout(() => {\n setVisibleChart(true);\n }, 100);\n }\n }}\n items={\n !visibleTabs || !isAuthorized\n ? []\n : [\n ...(temInvestimentos\n ? [\n {\n key: \"investimentos\",\n label: (\n
\n Carteira {!hasPlan && }\n
\n ),\n children: hasPlan ? (\n TabInvestimentos\n ) : (\n // : TabInvestimentosSemPlano,\n <>\n ),\n },\n {\n key: \"proventos\",\n label: (\n
\n Proventos {!hasPlan && }\n
\n ),\n children: hasPlan ? (\n \n ) : (\n // \n <>\n ),\n },\n ]\n : []),\n ...(isAuthorized\n ? [\n {\n key: \"darfs\",\n label: (\n
\n DARFs {!hasPlan && }\n
\n ),\n children: hasPlan ? : <>,\n },\n {\n key: \"previdencia\",\n label: \"Previdência\",\n children: ,\n },\n ]\n : []),\n ]\n }\n />\n )}\n
\n )}\n {!hasPlan && temAvisos && currentTab !== \"previdencia\" && (\n client.cancelRecuring\n )}\n setIntegrationModal={setIntegrationModal}\n setIntegrationClient={setIntegrationClient}\n setClientsSelected={setClientsSelected}\n filters={{...filters, page: currentPage}}\n />\n )}\n \n
\n ) : clientsToUpgrade.length === 1 && showUpgradePlan ? (\n \n {setShowUpgradePlan(false)}} \n onFinish={() => {\n setShowUpgradePlan(false)\n setSelectedClient(clientsSelected[0])\n setClientsSelected([])\n }}/>\n \n ) : (\n \n }\n onClick={() => {\n setShowMobileActionSelectedClients(false);\n }}\n />\n \n \n {clientsSelected.length} cliente\n {clientsSelected.length > 1 ? \"s\" : \"\"}{\" \"}\n \n selecionado{clientsSelected.length > 1 ? \"s\" : \"\"}\n \n \n \n Selecione abaixo qual ação deseja realizar:\n \n \n \n {clientsSelected.filter((client) => !client.planActive).length > 1 \n || clientsSelected.filter((client) => client.isConcierge || client.planName?.includes('CONCIERGE')).length > 0 \n ? (\n
\n 1 ? \"s\" : \"\"\n } cliente${clientsSelected.length > 1 ? \"s\" : \"\"} já ${clientsSelected.length > 1 ? \"possuem\" : \"possui\"\n } plano ativo`}\n >\n
\n \n }\n >\n CONTRATAR PLANO\n \n
\n ) : (\n 1 ? true : false}\n size=\"large\"\n type=\"primary\"\n icon={}\n onClick={() => {\n if (clientsToUpgrade.length === 1) {\n setShowUpgradePlan(true)\n setSelectedClient(clientsSelected[0])\n } else if (clientsSelected[0]) {\n setSelectedClient(clientsSelected[0]);\n setCurrentTab('darfs')\n setActiveKeys([]);\n setKeys([]);\n setClientsSelected([]);\n }\n }}\n >\n {\n clientsToUpgrade.length === 1\n && clientsSelected.length === 1\n ? \"FAZER UPGRADE\"\n : \"CONTRATAR PLANO\"\n }\n \n )}\n \n \n }\n disabled={clientsSelected.length === 0}\n onClick={() => setSendMailModalVisible(true)}\n >\n ENVIAR LEMBRETE\n \n \n \n {\n setKeys([]);\n setClientsSelected([]);\n setShowMobileActionSelectedClients(false);\n }}\n >\n Limpar seleção\n \n \n \n \n )}\n {\n setDeleteModalVisible(false);\n }}\n setVisibility={setDeleteModalVisiblity}\n onOk={() => removeClient(currentPage)}\n />\n {\n // Se ele não for escritório ou manager, não mostra o input de plano\n if (!isManagerOrOffice && input[0]?.name === \"plan\") {\n return false;\n }\n return true;\n })}\n onCancel={() => {\n // getClients({\n // ...filters,\n // searchText: searchText.length > 0 ? searchText : null,\n // page: currentPage,\n // });\n setUserSelected({});\n setCreateModalVisible(false);\n }}\n add={(data: any) => {\n createClient(\n {\n plan: \"free\",\n ...data,\n assessores:\n user.user.office || user?.user?.admin\n ? data.assessores\n : [user.user.assessorId],\n },\n currentPage\n );\n setCreateModalVisible(false);\n setClientsSelected([]);\n setKeys([]);\n }}\n edit={(data: any) => {\n if (!user?.user?.office && !user?.user?.admin) {\n data.assessores = (userSelected?.resp || []).map(\n (r: any) => r._id\n );\n }\n updateClient(\n {\n ...data,\n plan: userSelected?.planType || \"free\",\n userId: newClient?.userId,\n },\n currentPage,\n filters\n );\n setCreateModalVisible(false);\n setSelectedClient(null);\n setKeys([]);\n }}\n />\n handlePlan()}\n setPaymentType={setPaymentType}\n clientsSelected={clientsSelected}\n selectedPlan={selectedPlan}\n setSelectedPlan={setSelectedPlan}\n showPaymentModal={showPaymentModal}\n setClientsSelected={setClientsSelected}\n setShowPaymentModal={setShowPaymentModal}\n createConciergePlan={createPlanFromSelectedUsers}\n userCount={\n clientsSelected.filter((client) => !client.planActive).length\n }\n clientsWithCancelRecurring={clientsSelected.filter(\n (client) => client.cancelRecuring\n )}\n />\n {\n if (!loadingSend) {\n setShowNotasCorretagemModal(false);\n setFiles([]);\n setClientsSelected([]);\n }\n }}\n >\n \n \n Você pode também adicionar as notas de corretagem caso queira\n verificar o imposto de renda sobre operações realizadas fora do\n ambiente B3.\n \n \n \n Histórico de notas\n \n {\n const filtros: any = filters;\n getHistory(clientsSelected[0].username, { filters: filtros });\n }}\n locale={{\n filterReset: \"Limpar\",\n }}\n columns={[\n {\n align: \"center\",\n title: \"Dia\",\n dataIndex: \"day\",\n filterIcon: ,\n filters: dayFilters,\n render: (status, item) => <>{status},\n },\n {\n align: \"center\",\n title: \"Mês\",\n dataIndex: \"month\",\n filterIcon: ,\n filters: monthsExtended.map((m, i) => ({\n text: m,\n value: i + 1,\n })),\n render: (status, item) => <>{status},\n },\n {\n align: \"center\",\n title: \"Ano\",\n dataIndex: \"year\",\n filterIcon: ,\n filters: yearFilters,\n render: (status, item) => <>{status},\n },\n {\n className: \"actionColumn\",\n render: (status, item) => (\n \n downloadNota(item.path, item.month, item.year)\n }\n >\n Ver nota\n \n ),\n },\n ]}\n />\n {files?.length > 0 && (\n <>\n \n \n Lembre-se de clicar em finalizar para salvar seus dados\n \n sendNotas(clientsSelected[0].username)}\n >\n Finalizar\n \n \n \n )}\n \n {\n setSelectedNotificationType(undefined);\n setSendMailModalVisible(false);\n }}\n >\n \n {!selectedNotificationType ? (\n <>\n \n \n Escolha qual dos lembretes abaixo deseja enviar para{\" \"}\n {clientsSelected.length > 1 ? (\n os {clientsSelected.length} clientes selecionados\n ) : (\n \"o cliente selecionado\"\n )}\n \n \n {mailTypes.map((mailType) => (\n \n {\n if (clientsSelected.length > 1) {\n sendMail(mailType.value);\n } else {\n setSelectedNotificationType(mailType);\n }\n }}\n >\n {mailType.icon()}\n {mailType.label()}\n \n \n ))}\n \n ) : (\n <>\n \n \n Escolha a forma que deseja enviar o lembrete para o cliente:\n \n \n \n {\n sendMail(selectedNotificationType.value);\n }}\n >\n \n \n \n Enviar lembrete por E-mail\n \n \n \n {\n const text = `${selectedNotificationType.whatsappMessage.replaceAll(\n \" \",\n \"%20\"\n )}${selectedNotificationType.link}`;\n const clientWithPhone = clientsSelected.find(\n (c) => !!c.phone\n );\n const phoneParam = clientWithPhone\n ? `/55${clientWithPhone.phone}`\n : \"\";\n const textParam = clientWithPhone\n ? text.replace(\"{fullname}\", clientWithPhone.name)\n : text.replace(\"%20{fullname}\", \"\");\n const url = `https://wa.me${phoneParam}?text=${textParam}`;\n window.open(url, \"_blank\");\n }}\n >\n \n \n \n Enviar lembrete por Whatsapp\n \n \n \n )}\n \n \n setErrorModalVisible(false)}\n >\n \n (\n <>\n \n {item.user}\n \n \n {maskCpf(item.cpf)}\n \n \n ),\n },\n {\n title: \"Linha do excel\",\n align: \"center\",\n render: (_, item) => (\n \n {item.position}\n \n ),\n },\n {\n title: \"Mensagem\",\n render: (_, item) => (\n \n {item.message}\n \n ),\n },\n ]}\n />\n \n \n setOptionsModal(false)}\n >\n \n \n \n Escolha a forma que deseja adicionar o cliente:\n \n \n \n \n \n \n

\n Adicionar clientes manualmente\n

\n
\n
\n \n \n \n \n \n

\n Importar clientes de planilha Excel\n

\n
\n
\n \n
\n \n setCsvModalVisible(false)}\n >\n \n \n {\n window.open(\n isManagerOrOffice\n ? `https://velotax-assets.s3.amazonaws.com/cadastro_cliente_1_xp${env}.xlsx`\n : `https://velotax-assets.s3.amazonaws.com/cadastro_cliente_2_xp${env}.xlsx`\n );\n }}\n >\n Baixar planilha modelo\n

\n \n \n \n
\n \n \n setCreateClientDeleted({ showModal: false })}\n onOk={() => {\n restoreClient(\n (createClientDeleted.cpf || \"\").replace(/[_.-/-]/g, \"\")\n );\n setCreateClientDeleted({ showModal: false });\n }}\n okText=\"Recuperar\"\n cancelText=\"Cancelar\"\n >\n O Cliente {createClientDeleted?.name} (CPF:{\" \"}\n {createClientDeleted?.cpf}) foi excluído pelo escritório\n anteriormente. Gostaria de recuperar suas informações?\n \n \n \n \n \n Não\n \n \n \n \n \n \n \n\n handleUpdatePatrimonio(selectedClient)}\n >\n Atualizar patrimônios\n \n }\n >\n \n \n Deseja atualizar os valores de patrimônio de todos os seus\n clientes? Esse processo pode levar até{\" \"}\n {Math.min(30, totalClients * 2)} minutos. Quando for concluído\n enviaremos um e-mail confirmando.\n \n \n \n {\n setAssessoresListModal(false);\n setUserSelected({});\n }}\n >\n \n \n {professionals.map((professional) => (\n \n
\n {professional.name}\n
\n \n ))}\n \n
\n \n \n {\n setAssessoresListModal(false);\n setUserSelected({});\n }}\n >\n Cancelar\n \n \n \n {\n updateClient(\n {\n ...userSelected,\n assessores: assessoresSelected,\n tableEdit: true,\n },\n currentPage\n );\n setAssessoresListModal(false);\n setUserSelected({});\n }}\n >\n Atualizar\n \n \n \n \n \n {\n setFilters(appliedFilters);\n setShowFilterModal(false);\n }}\n >\n \n \n \n \n Plano\n \n \n {\n setFilters((filters: any) => ({ ...filters, planActive }));\n }}\n >\n \n \n Gratuito\n \n \n \n Plano Basic\n \n \n \n \n Plano Premium\n \n \n \n \n Plano Concierge\n \n \n \n \n \n \n \n \n \n \n Responsável\n \n \n trigger.parentNode}\n onChange={(resp) => {\n setFilters((filters: any) => ({ ...filters, resp }));\n }}\n options={[\n { value: \"Escritório\", label: \"Escritório\" },\n ...professionals.map((item) => ({\n value: item._id,\n label: item.name,\n })),\n ]}\n />\n \n \n \n \n \n \n Bolsa de valores\n \n \n {\n setFilters((filters: any) => ({ ...filters, statusBolsa }));\n }}\n >\n \n \n \n Integração ativa\n \n \n \n \n Integração inativa\n \n \n \n \n \n \n \n \n \n \n Exterior\n \n \n {\n setFilters((filters: any) => ({\n ...filters,\n statusExterior,\n }));\n }}\n >\n \n \n \n Integração ativa\n \n \n \n \n Integração inativa\n \n \n \n \n \n \n \n \n {\n setAppliedFilters(filters);\n getClients({\n searchText,\n page: pagination.current,\n pageSize: pagination.pageSize,\n planActive: (filters.planActive || []) as string[],\n resp: (filters.resp || []) as string[],\n statusBolsa: filters.statusBolsa as CalcStatus[],\n statusExterior: filters.statusExterior as CalcStatus[],\n });\n setTimeout(() => {\n setShowFilterModal(false);\n }, 500);\n }}\n >\n Aplicar\n \n \n \n \n }\n onClick={() => {\n setShowCorretoraFilterModal(false);\n setSelectedCorretoras(checkboxCorretoras);\n setFilterCorretoraAtivo(\n checkboxCorretoras.map((corretora: string) =>\n getNomeCorretora({ shortName: corretora })\n )\n );\n updateFilter()\n }}\n >\n Confirmar\n \n }\n open={showCorretoraFilterModal}\n title=\"Filtrar por corretora\"\n className=\"filter-modal\"\n onCancel={() => {\n setShowCorretoraFilterModal(false);\n }}\n >\n \n \n \n \n Corretoras\n \n \n {\n setCheckboxCorretoras(e.target.checked ? corretoras : []);\n }}\n >\n Todas as corretoras\n \n {\n setCheckboxCorretoras(e);\n }}\n >\n \n {corretoras.map((corretora, i) => (\n \n {corretora}\n \n ))}\n \n \n \n \n \n \n
\n
\n Filtrar por posições\n
\n
\n {\n setCheckboxCorretoras([])\n setPosicoesFilter(e || [])\n }}\n options={Object.keys(carteiraCategorizadaSemFiltros).map((categoria) => ({\n label: categoria,\n options: carteiraCategorizadaSemFiltros[categoria].map((c: any) => ({\n label: c.codigo,\n value: c.codigo,\n }))\n }))}\n />\n \n \n \n setNotificationDrawerOpen(false)}\n />\n \n \n );\n};\n","import { message } from \"antd\";\nimport { useRef, useState } from \"react\";\nimport Upload, { RcFile } from \"antd/lib/upload\";\nimport {\n UploadFile,\n UploadFileStatus,\n UploadProps,\n} from \"antd/lib/upload/interface\";\nimport apiBolsa from \"../../services/bolsa-api\";\nimport api from \"../../services/api\";\n\nexport interface IHistory {\n id: string;\n month: number;\n year: number;\n path: string;\n}\n\nconst isValidFile = (file: UploadFile) => file.type === \"application/pdf\";\nconst sameNameFile = (file: UploadFile, files: UploadFile[]) =>\n files.findIndex((item) => item.name === file.name) >= 0;\n\nexport const useNotasCorretagem = () => {\n const sameNameFiles = useRef([]);\n const [loadingSend, setLoadingSend] = useState(false);\n const [notas, setNotas] = useState[]>([]);\n const [history, setHistory] = useState([]);\n const [showNotasCorretagemModal, setShowNotasCorretagemModal] =\n useState(false);\n\n const beforeUploadNota = (file: RcFile) => {\n if (!isValidFile(file)) {\n message.error(\"Você só pode fazer upload de arquivos pdf\");\n return Upload.LIST_IGNORE;\n }\n if (sameNameFile(file, notas)) {\n sameNameFiles.current.push(file.name);\n message.error(\"Este arquivo já foi adicionado\");\n return Upload.LIST_IGNORE;\n }\n };\n\n const onChangeNotas = ({\n file,\n fileList,\n }: {\n file: UploadFile;\n fileList: UploadFile[];\n }) => {\n if (file && file.status === \"removed\") return;\n if (!isValidFile(file)) return;\n if (sameNameFiles.current.includes(file.name)) {\n sameNameFiles.current = sameNameFiles.current.filter(\n (name) => name !== file.name\n );\n return;\n }\n setNotas(\n fileList\n .filter((file) => file.status !== \"removed\")\n .map((file) => ({ ...file, status: \"done\" as UploadFileStatus }))\n );\n };\n\n const onRemoveNota = (file: UploadFile) => {\n setNotas((notas) => notas.filter((nota) => nota.uid !== file.uid));\n };\n\n const sendNotas = (cpfCnpj: string) => {\n const formData = new FormData();\n notas.forEach((nota) => {\n formData.append(\"files\", nota.originFileObj as File);\n });\n setLoadingSend(true);\n const token = localStorage.getItem(\"@VeloTax:token\");\n apiBolsa\n .post(`/brokerage-notes/readBatch/${cpfCnpj}`, formData, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n .then(() => {\n message.success(\"Informações extraídas com sucesso\");\n getHistory(cpfCnpj);\n })\n .catch((err) => {\n const errorMessage =\n err.reponse?.message?.error || \"Não foi possivel extrair informações\";\n message.error(errorMessage);\n setLoadingSend(false);\n });\n };\n\n const getHistory = async (\n username: string,\n params?: {\n currentPage?: number;\n filters?: {\n day: number[];\n month: number[];\n year: number[];\n };\n }\n ) => {\n const filterDay = params?.filters?.day || null;\n const filterMonth = params?.filters?.month || null;\n const filterYear = params?.filters?.year || null;\n setLoadingSend(true);\n try {\n const { data } = await api.get(`/clients/getNotasHistory/${username}`, {\n params: {\n day: filterDay,\n month: filterMonth,\n year: filterYear,\n },\n });\n if (data?.message) message.error(data.message);\n else\n setHistory(\n data.map((nota: any) => ({\n ...nota,\n id: `${nota.day}${nota.month}${nota.year}`,\n }))\n );\n } catch (error: any) {\n message.error(\"Algo errado aconteceu. Tente novamente mais tarde.\");\n }\n setLoadingSend(false);\n };\n\n const downloadNota = async (path: string, month: number, year: number) => {\n try {\n const token = localStorage.getItem(\"@VeloTax:token\");\n const { data } = await apiBolsa.get(\"/brokerage-notes/download\", {\n headers: { Authorization: `Bearer ${token}` },\n params: { path: path.replace(\"notas/\", \"\"), month, year },\n });\n if (data.url) {\n window.open(data.url, \"_blank\");\n }\n } catch (error) {\n message.error(\"Algo errado aconteceu. Tente novamente mais tarde.\");\n }\n };\n\n const uploadProps: UploadProps = {\n fileList: notas,\n multiple: true,\n listType: \"text\",\n accept: \"application/pdf\",\n onRemove: onRemoveNota,\n onChange: onChangeNotas,\n beforeUpload: beforeUploadNota,\n customRequest: () => {},\n showUploadList: {\n showRemoveIcon: true,\n showPreviewIcon: false,\n showDownloadIcon: false,\n },\n };\n\n return {\n files: notas,\n setFiles: setNotas,\n sendNotas,\n loadingSend,\n uploadProps,\n showNotasCorretagemModal,\n setShowNotasCorretagemModal,\n history,\n getHistory,\n downloadNota,\n };\n};\n","import React from \"react\";\nimport { Navigate, Outlet } from \"react-router-dom\";\nimport { useAuth } from \"../contexts/AuthContext\";\n\ninterface IPrivateRouteProps {}\n\nconst PrivateRoute: React.FC = () => {\n const { signed, loadingSession } = useAuth();\n\n if (loadingSession) {\n return <>;\n }\n\n return signed ? : ;\n};\n\nexport default PrivateRoute;\n","import React from \"react\";\nimport { Navigate, Outlet } from \"react-router-dom\";\nimport { useAuth } from \"../contexts/AuthContext\";\n\nconst OnlyPublicRoute: React.FC = () => {\n const { signed, loadingSession } = useAuth();\n\n if (loadingSession) {\n return <>;\n }\n\n return !signed ? : ;\n};\n\nexport default OnlyPublicRoute;\n","import React from \"react\";\nimport { Outlet } from \"react-router-dom\";\n\nconst OnlyClientAccountPermissionRoute: React.FC = () => {\n return \n};\n\nexport default OnlyClientAccountPermissionRoute;\n","import styled from \"styled-components\";\n\nexport const Content = styled.div`\n padding: 48px;\n max-width: 750px;\n border-radius: 8px;\n margin: 0 auto 54px;\n background-color: var(--white);\n box-shadow: 0px 4px 8px 0px #e0e0e0;\n\n .ant-select {\n min-width: 120px;\n height: 48px !important;\n .ant-select-selector {\n height: 48px !important;\n }\n }\n\n .ant-btn {\n height: 44px;\n font-size: 14px;\n font-weight: 600;\n border-radius: 24px;\n border: 1px solid var(--ghost);\n\n svg {\n fill: none;\n width: 20px;\n height: 20px;\n stroke: var(--ant-primary-color);\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n box-shadow: none;\n border-radius: 0;\n margin: 0 auto 32px;\n padding: 24px 24px 48px;\n border-bottom: 1px solid var(--ghost);\n }\n`;\n\nexport const FaturamentoTable = styled.div`\n width: 100%;\n margin-top: 32px;\n font-weight: 300;\n color: var(--dark-2);\n .row {\n display: flex;\n font-size: 16px;\n border-bottom: 1px solid var(--ghost);\n &.header {\n font-weight: 600;\n }\n & > div {\n width: 20%;\n padding: 12px 16px;\n }\n }\n .empty {\n padding: 16px;\n text-align: center;\n border-bottom: 1px solid var(--ghost);\n }\n .row.column-4 > div {\n width: 25%;\n }\n\n @media only screen and (max-device-width: 812px) {\n margin-left: -24px;\n width: calc(100% + 48px);\n .row {\n font-size: 12px;\n & > div {\n display: flex;\n padding: 12px;\n align-items: center;\n }\n }\n }\n`;\n","import FileSaver from \"file-saver\";\nimport { HiOutlineDownload } from \"react-icons/hi\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { Col, Row, Select, Spin, Typography, message } from \"antd\";\nimport api from \"../../services/api\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { Content, FaturamentoTable } from \"./styles\";\nimport { formatCurrency, monthsExtended } from \"../../utils\";\n\nconst initialYear = 2021;\n\ninterface IInvoice {\n year: number;\n month: number;\n escritorioId: string;\n premiumClients: number;\n value: number;\n clients: any;\n billedClients: number;\n}\n\nexport const Faturamento: React.FC = () => {\n const { user } = useAuth();\n const currentYear = new Date().getFullYear();\n const [buffer, setBuffer] = useState();\n const [year, setYear] = useState(currentYear);\n const [loading, setLoading] = useState(false);\n const [invoices, setInvoices] = useState([]);\n\n const getInvoices = useCallback(() => {\n setLoading(true);\n api\n .get(`/invoice/${year}`)\n .then(({ data }) => {\n setInvoices(\n (data.invoices || []).filter(\n (invoice: IInvoice) => invoice.year === year\n )\n );\n setBuffer(data.buffer?.data);\n })\n .catch(() => {})\n .finally(() => {\n setLoading(false);\n });\n }, [year]);\n\n const handleDownloadSheet = () => {\n try {\n const data = Uint8Array.from(buffer);\n const blob = new Blob([data], { type: \"attach.contentType\" });\n FileSaver.saveAs(blob, \"Faturamento.xlsx\");\n } catch (error: any) {\n message.error(error);\n }\n };\n\n useEffect(() => {\n getInvoices();\n }, [year, getInvoices]);\n\n return (\n \n \n Faturamento\n \n \n Selecione o período\n \n \n \n setYear(value)}\n options={Array.from(Array(currentYear - initialYear + 1))\n .map((y, i) => ({\n label: initialYear + i,\n value: initialYear + i,\n }))\n .reverse()}\n />\n \n \n }\n onClick={handleDownloadSheet}\n >\n Baixar planilha\n \n \n \n\n \n \n \n
Mês
\n
Totais
\n
Premium
\n {user.user.liberadaContratacao &&
Faturados
}\n
Valor
\n
\n {invoices.length > 0 ? (\n invoices.map((item) => (\n \n
{monthsExtended[item.month - 1]}
\n
\n {item?.clients?.length || 0} usuário\n {item?.clients?.length > 1 && \"s\"}\n
\n
\n {item?.premiumClients || 0} usuário\n {item?.premiumClients > 1 && \"s\"}\n
\n {user.user.liberadaContratacao && (\n
\n {item?.billedClients || 0} usuário\n {(item?.billedClients || 0) > 1 && \"s\"}\n
\n )}\n
{formatCurrency(item.value || 0)}
\n \n ))\n ) : (\n
Nenhum dado encontrado
\n )}\n \n \n \n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px;\n min-height: 100%;\n background-color: var(--ghost);\n\n @media only screen and (max-device-width: 812px) {\n padding: 0 0 64px;\n background-color: var(--white);\n }\n`;\n\nexport const Content = styled.div`\n padding: 48px;\n margin: 0 auto;\n max-width: 750px;\n border-radius: 8px;\n background-color: var(--white);\n box-shadow: 0px 4px 8px 0px #e0e0e0;\n\n &.transparent {\n padding: 8px 0;\n box-shadow: none;\n background-color: transparent;\n }\n\n .ant-form-item-label {\n label.ant-form-item-required {\n height: 32px;\n font-weight: 600;\n :before {\n display: none;\n }\n }\n }\n\n .ant-btn {\n font-weight: 500;\n text-transform: uppercase;\n }\n\n .ant-btn-link {\n padding: 0;\n text-transform: none;\n &.signout {\n color: var(--ant-error-color);\n }\n }\n\n .ant-upload {\n font-weight: normal;\n .upload-logo {\n width: 100%;\n display: flex;\n padding: 8px 16px;\n flex-direction: row;\n justify-content: space-between;\n\n .upload-drag-icon {\n width: 140px;\n height: 100%;\n margin: 8px;\n\n .anticon-download {\n font-size: 60px;\n }\n\n img {\n max-height: 70px;\n }\n }\n\n .upload-text {\n display: flex;\n max-width: 380px;\n flex-direction: column;\n .ant-upload-hint {\n font-size: 11px;\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n box-shadow: none;\n border-radius: 0;\n padding: 0 24px 48px;\n border-bottom: 1px solid var(--ghost);\n\n &.transparent {\n border-bottom: none;\n padding: 0 24px;\n }\n }\n`;\n","import { BiLock } from \"react-icons/bi\";\nimport { RcFile } from \"antd/lib/upload\";\nimport { useEffect, useState } from \"react\";\nimport Dragger from \"antd/lib/upload/Dragger\";\nimport { useNavigate } from \"react-router-dom\";\nimport { MdOutlineLogout } from \"react-icons/md\";\nimport { DownloadOutlined } from \"@ant-design/icons\";\nimport {\n Col,\n Form,\n Input,\n message,\n Modal,\n Row,\n Typography,\n UploadFile,\n UploadProps,\n} from \"antd\";\nimport api from \"../../services/api\";\nimport Button from \"../../components/Button\";\nimport { Faturamento } from \"../Faturamento\";\nimport { Container, Content } from \"./styles\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport {\n validationEmail,\n validationFieldRequired,\n validationFullName,\n validationLogo,\n validationPassword,\n} from \"../../utils/formValidations\";\n\nexport const MinhaConta: React.FC = () => {\n const { user, setUser, signOut, updateUserInfo } = useAuth();\n const [form] = Form.useForm();\n const navigate = useNavigate();\n const [loading, setLoading] = useState(false);\n const [showPassword, setShowPassword] = useState(false);\n const [passwordAlreadyExists, setPasswordAlreadyExists] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [previewImage, setPreviewImage] = useState(user.user.fileLink);\n const [previewTitle, setPreviewTitle] = useState(\"\");\n const [fileList, setFileList] = useState(\n user.user.fileLink\n ? [\n {\n uid: \"-1\",\n name: \"Logotipo\",\n status: \"done\",\n url: `${user.user.fileLink}`,\n },\n ]\n : []\n );\n\n useEffect(() => {\n if (user?.user) {\n setPasswordAlreadyExists(user.user.hasPassword);\n form.setFieldsValue({\n username: user.user.username,\n name: user.user.name,\n email: user.user.email,\n });\n }\n }, [user.user, form]);\n\n useEffect(() => {\n if (!fileList || fileList.length === 0) setPreviewImage(\"\");\n }, [fileList]);\n\n const onFinish = (data: any) => {\n const formData = new FormData();\n formData.append(\"email\", data.email);\n formData.append(\"name\", data.name);\n if (fileList && fileList.length > 0 && data?.logo?.file?.originFileObj)\n formData.append(\"files\", data?.logo?.file?.originFileObj as File);\n if (showPassword) {\n if (passwordAlreadyExists) {\n formData.append(\"password\", data.pass);\n formData.append(\"currentPassword\", data.currentPass);\n } else {\n formData.append(\"password\", data.pass);\n }\n }\n\n setLoading(true);\n api\n .post(`/accountants/logo/${data.username}`, formData)\n .then(() => {\n message.config({ top: 90 });\n message.success(\"Dados atualizados com sucesso\");\n setLoading(false);\n updateUserInfo();\n setUser({\n ...user,\n user: {\n ...user.user,\n email: data.email,\n name: data.name,\n ...(showPassword\n ? !passwordAlreadyExists\n ? {\n hasPassword: true,\n }\n : {}\n : {}),\n },\n });\n })\n .catch((err) => {\n message.error(\n err.response?.data?.message ||\n \"Erro ao atualizar dados. Tente novamente mais tarde\"\n );\n setLoading(false);\n });\n };\n\n const onCancel = () => {\n navigate(\"/clients\");\n };\n\n const handlePassword = () => {\n setShowPassword((show) => !show);\n };\n\n const getBase64 = (file: RcFile): Promise =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n\n const handlePreview = async (file: UploadFile) => {\n if (!file.url && !file.preview) {\n file.preview = await getBase64(file.originFileObj as RcFile);\n }\n setPreviewImage(file.url || (file.preview as string));\n setPreviewOpen(true);\n setPreviewTitle(\n file.name || file.url!.substring(file.url!.lastIndexOf(\"/\") + 1)\n );\n };\n\n const handleChange: UploadProps[\"onChange\"] = async ({\n fileList: newFileList,\n }) => {\n const conditions = [\"image/jpeg\", \"image/png\"];\n const file = newFileList[0];\n setFileList(newFileList);\n const preview = await getBase64(file.originFileObj as RcFile);\n setPreviewImage(preview);\n message.config({ top: 40 });\n const { status } = file;\n if (status === \"done\") {\n message.success(`Logotipo ${file.name} carregado com sucesso.`);\n } else if (status === \"error\") {\n if (\n file?.size &&\n file.size > 15000 &&\n conditions.some((el) => file.type?.includes(el))\n )\n message.error(`Tamanho máximo permitido: 15KB.`);\n else if (file.type && !conditions.some((el) => file.type?.includes(el)))\n message.error(`Formato de arquivo inválido.`);\n else\n message.error(`Houve um problema ao carregar o logotipo ${file.name}.`);\n }\n };\n\n const props: UploadProps = {\n name: \"file\",\n multiple: false,\n action: \"https://run.mocky.io/v3/435e224c-44fb-4773-9faf-380c5e6a2188\",\n onDrop(e) {\n console.log(\"Arquivo carregado\", e.dataTransfer.files);\n },\n };\n\n return (\n \n {(user.user.office || user?.user?.admin) && }\n \n \n Dados do usuário\n \n
\n
\n \n \n \n\n \n \n \n\n \n \n \n\n {(user.user.office || user?.user?.admin) && (\n \n \n
\n \n {previewImage ? (\n \"Logo\"\n ) : (\n \n )}\n

\n
\n

\n Clique ou arraste seu logotipo\n

\n

\n Obs: Recomendamos arquivos .PNG com fundo transparente e\n tamanho de no máximo 125x50px até 15KB\n

\n
\n
\n \n \n )}\n\n setPreviewOpen(false)}\n >\n \"Logo\"\n \n\n }\n >\n {showPassword ? \"Não alterar senha\" : \"Alterar senha\"}\n \n\n {showPassword && (\n \n {passwordAlreadyExists && (\n \n \n \n \n \n )}\n \n \n \n \n \n \n )}\n\n
\n\n \n \n \n \n \n \n Salvar\n \n \n \n \n
\n \n }\n >\n Sair\n \n \n
\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.788 39.035h6.343c2.372 0 4.022-1.083 4.022-3.3 0-2.218-1.65-3.3-4.022-3.3h-6.343v6.6zm0 11.5h8.457c4.486 0 6.807-2.321 6.807-6.808v-4.692h-.155c-1.29 3.919-4.641 5.105-8.612 5.105h-6.29c-.155 0-.207.051-.207.206v6.188zm-11.911-14.8l6.497 6.29v-12.58l-6.497 6.29zm-22.07 14.8h28.567V49.09c0-2.527.877-3.97 2.887-4.744v-.154H30.27c-.413 0-.567-.052-.877-.361l-4.177-4.332-4.331 4.383c-.206.206-.361.31-.774.31h-6.445c-.361 0-.361-.207-.155-.413l8.25-7.993-8.405-8.147c-.206-.206-.154-.412.207-.412h6.497c.36 0 .516.051.722.309l4.538 4.538 4.28-4.538c.206-.206.36-.31.67-.31h16.965c3.919 0 7.374 1.29 8.663 5.209h.155V6.807C56.052 2.32 53.732 0 49.245 0H6.807C2.32 0 0 2.32 0 6.807v36.972c0 4.435 2.32 6.755 6.807 6.755z\",\n fill: \"#fff\"\n});\n\nfunction SvgXp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 56,\n height: 51,\n fill: \"none\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgXp);\nexport default __webpack_public_path__ + \"static/media/xp.070672ea.svg\";\nexport { ForwardRef as ReactComponent };","import { Result, Row } from \"antd\";\nimport { useNavigate } from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport Button from \"../../components/Button\";\nimport { ReactComponent as XPLogo } from \"../../assets/xp.svg\";\n\nexport const Container = styled.div`\n height: 100vh;\n background-color: var(--ant-info-color);\n .ant-result-subtitle,\n .ant-result-title {\n color: var(--white);\n }\n svg.error * {\n fill: var(--ant-error-color);\n }\n`;\n\nconst PageNotFound: React.FC = () => {\n const navigate = useNavigate();\n return (\n \n }\n title=\"Página não encontrada\"\n subTitle=\"Esta página que você visitou não existe\"\n extra={\n \n navigate(\"/clients\")}\n >\n Voltar para o app\n \n \n }\n />\n \n );\n};\n\nexport default PageNotFound;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 32px 128px;\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n }\n`;\n\nexport const Content = styled.div`\n padding: 0 48px;\n margin: 0 auto;\n max-width: 920px;\n\n div.ant-typography {\n margin: 0;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n }\n\n h3 {\n color: var(--velotax-font-color);\n }\n\n span.link {\n cursor: pointer;\n color: var(--ant-primary-color);\n }\n\n .ant-typography:not(h1) {\n text-align: justify;\n }\n\n a.ant-typography,\n .ant-typography a {\n color: var(--ant-primary-color);\n }\n\n .ant-typography i strong {\n font-size: 13px;\n letter-spacing: 0.625px;\n word-spacing: 0.625px;\n }\n\n iframe {\n max-width: 100%;\n }\n\n .ant-list {\n margin-bottom: 1em;\n }\n\n .ant-collapse,\n .ant-collapse.ant-collapse-borderless {\n border-radius: 8px;\n background-color: transparent;\n border: 1px solid var(--ghost);\n .ant-collapse-item {\n .ant-collapse-header {\n padding: 16px;\n font-size: 1.125rem;\n color: var(--velotax-font-color);\n .ant-collapse-arrow {\n font-size: 0.875rem;\n }\n }\n .ant-collapse-content {\n color: var(--velotax-font-color);\n border-bottom: 1px solid;\n border-color: var(--ghost);\n }\n }\n\n .ant-collapse-item:last-child {\n .ant-collapse-content {\n border-bottom: none;\n border-radius: 0 0 8px 8px;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 24px 24px 128px;\n border-radius: 0;\n }\n`;\n","import { Divider, Typography } from \"antd\";\n\nexport const CompaniesExemptList = {\n title: \"Lista de empresas isentas\",\n content: (\n
\n \n \n Lista de ações que, se vendidas com lucro até o dia 31/12/2023, são\n isentas de Impostos de Renda com base na lei 13.043, de 13 de novembro\n de 2014:\n \n \n \n - NUTRIPLANT (NUTR3)\n
\n - PETRORIO (PRIO3)*\n
\n - GENERAL SHOPPING (GSHP3)\n
\n - POMIFRUTAS (FRTA3)\n
\n - CR2 EMPREENDIMENTOS IMOBILIÁRIOS (CRDE3)\n
\n - SINQIA (SQIA3)*\n
\n - BRASIL AGRO (AGRO3)\n
- PRINER (PRNR3)\n
\n \n \n * Válido para ações compradas antes do follow-on. A Sinqia e a Petrorio\n fizeram uma oferta de ações em setembro de 2019 e fevereiro de 2021,\n respectivamente. Caso você tenha comprado essas ações antes das datas\n das respectivas ofertas, você tem direito a isenção de imposto de renda\n sobre seus ganhos.\n \n
\n ),\n};\n","import { useState } from \"react\";\nimport { List, Typography, Modal, Collapse, Divider, Row, Col } from \"antd\";\nimport { Container, Content } from \"./styles\";\nimport { CompaniesExemptList } from \"../../constants/regulation\";\n\ninterface RegulationProps {}\n\nexport const Regulation: React.FC = () => {\n const [showListModal, setShowListModal] = useState(false);\n\n const handleListModal = () => {\n setShowListModal((show) => !show);\n };\n return (\n \n \n \n \n \n Regras de IR utilizadas pelo Velotax\n \n \n \n \n Entenda quais são as normativas da Receita Federal que utilizamos\n para calcular automaticamente o seu imposto de renda\n \n \n \n
\n \n \n \n Se você investe na bolsa de valores, é fundamental que você\n entenda as regras de IR aplicáveis para investimentos em renda\n variável.\n \n \n Entendendo o que é renda variável\n \n \n O mercado de renda variável compreende ativos cuja remuneração ou\n retorno de capital não pode ser dimensionado no momento da\n aplicação. São eles as ações, quotas ou quinhões de capital, o\n ouro, ativo financeiro, e os contratos negociados nas bolsas de\n valores, de mercadorias, de futuros e assemelhadas.\n \n \n (Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015, arts.\n 56, 58 e 60 a 62)\n \n \n Qual imposto de renda incide sobre operações de renda variável\n \n \n O ganhos líquidos são constituídos pela diferença positiva entre o\n valor de venda do ativo e o seu custo de aquisição. Os ganhos\n líquidos auferidos em operações realizadas em bolsas de valores,\n de mercadorias, de futuros, e assemelhadas, inclusive day trade,\n serão tributados às seguintes alíquotas:\n \n \n \n a) 15%, nas operações realizadas nos mercados à vista, a termo,\n de opções e de futuros;\n \n b) 20%, no caso de operação day trade;\n \n c) 20%, no caso de operação com fundos imobiliários (FIIs).\n \n \n \n (Lei nº 11.033, de 21 de dezembro de 2004, art. 2º, caput, incisos\n I e II, e §§ 1º e 2º; e Instrução Normativa RFB nº 1.585, de 31 de\n agosto de 2015, arts. 57, 63 e 65)\n \n \n Quando o imposto deve ser pago\n \n \n O imposto sobre a renda deve ser pago até o último dia útil do mês\n subsequente àquele em que os ganhos houverem sido apurados.\n
\n
O código a ser utilizado no Documento de Arrecadação das\n Receitas Federais (Darf) para pagamento desse tributo é 6015.\n
\n \n (Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015, art.\n 56, § 5º)\n \n \n Operações isentas de imposto de renda\n \n \n A isenção de imposto de renda aplica-se para transações realizadas\n em mercados comuns e que se encaixem nas situações abaixo:\n \n \n \n a) com ações, no mercado à vista de bolsas de valores ou mercado\n de balcão, se o total das alienações desse ativo, realizadas no\n mês, não exceder a R$ 20.000,00 (vinte mil reais);\n \n \n b) com ações de pequenas e médias empresas a que se refere o\n art. 16 da Lei nº 13.043, de 13 de novembro de 2014;\n
\n \n Clique aqui para ver a lista de empresas isentas\n \n
\n \n c) com ouro, ativo financeiro, se o total das alienações desse\n ativo, realizadas no mês, não exceder a R$ 20.000,00 (vinte mil\n reais);\n \n
\n \n A isenção acima não se aplica, entre outras, às operações de day\n trade, às negociações de cotas de fundos de investimentos\n imobiliários (FIIs) e fundos de investimento em índice de ações,\n aos resgates de cotas de fundos ou clubes de investimento em ações\n e à alienação de ações efetivada em operações de exercício de\n opções e no vencimento ou liquidação antecipada de contratos a\n termo.\n \n \n (Lei nº 11.033, de 21 de dezembro de 2004, art.3º, inciso I; Lei\n nº 13.043, de 13 de novembro de 2014, art. 16; e Instrução\n Normativa RFB nº 1.585 , de 31 de agosto de 2015, art. 59, incisos\n I e II e § 2º)\n \n \n O que é operação day trade\n \n \n Considera-se day trade a operação ou a conjugação de operações\n iniciadas e encerradas em um mesmo dia, com o mesmo ativo,{\" \"}\n em uma mesma instituição intermediadora (isto é, corretora)\n , em que a quantidade negociada tenha sido liquidada, total ou\n parcialmente. Na apuração do resultado da operação day trade são\n considerados, pela ordem, o primeiro negócio de compra com o\n primeiro de venda ou o primeiro negócio de venda com o primeiro de\n compra, sucessivamente.\n \n \n (Lei nº 9.959, de 27 de janeiro de 2000, art. 8º; Lei nº 12.350,\n de 20 de dezembro de 2010, art. 45; e Instrução Normativa RFB nº\n 1.585, de 31 de agosto de 2015, art. 65)\n \n \n Compensação de perdas passadas\n \n \n As perdas incorridas nas operações de renda variável nos mercados\n à vista, de opções, futuros, a termo e assemelhados, poderão ser\n compensadas com os ganhos líquidos auferidos, no próprio mês ou\n nos meses subsequentes, em outras operações realizadas em qualquer\n das modalidades operacionais previstas nesses mercados.\n \n \n Atenção: as perdas incorridas em operações\n comuns, somente poderão ser compensadas com ganhos líquidos\n auferidos em operações da mesma espécie (comuns), realizadas no\n mês ou meses subsequentes. Do mesmo modo, as perdas incorridas em\n operações day trade somente são compensáveis com os ganhos\n líquidos auferidos nessas operações, e perdas incorridas em FIIs\n são compensáveis com os ganhos líquidos auferidos em FIIs.\n \n \n (Regulamento do Imposto sobre a Renda – RIR/2018, art. 841, §§ 1º\n e 2º, aprovado pelo Decreto nº 9.580, de 22 de novembro de 2018; e\n Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015, art.\n 64)\n \n \n Dedução de despesas operacionais\n \n \n As despesas efetivamente pagas destacadas na nota de corretagem ou\n no extrato da conta-corrente para a realização de operações de\n compra ou venda (corretagens, emolumentos etc.) podem ser\n consideradas na apuração do ganho líquido, sendo acrescidas ao\n preço de compra e deduzidas do preço de venda dos ativos ou\n contratos negociados.\n \n \n (Lei nº 8.383, de 30 de dezembro de 1991, art. 27; e Regulamento\n do Imposto sobre a Renda - RIR/2018, art. 841, caput e § 2º,\n aprovado pelo Decreto nº 9.580, de 22 de novembro de 2018; e\n Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015, art.\n 56, § 3º)\n \n \n O que é o Portal da B3\n \n \n O Portal da B3 armazena os saldos e os históricos de transação de\n forma consolidada para os investidores da bolsa de valores.\n
\n
\n Caso você nunca tenha se cadastrado no Portal da B3, faça o seu{\" \"}\n \n cadastro aqui\n \n . Só precisa ter o seu CPF e a data de nascimento em mãos.\n
\n
\n Para facilitar nos seus cálculos, o Velotax está completamente\n integrado com a B3. Para garantir sua segurança e privacidade,\n nunca armazenaremos a sua senha do CEI.\n
\n {/*Remover os vídeos do passo a posso pois são baseados na calculadora antiga*/}\n {/* \n Ajustando manualmente o Velotax\n \n \n Apesar do sistema do Velotax ser o mais automático possível, algumas\n informações não estão disponíveis na B3. Portanto os investidores\n devem ter atenção para ajustar manualmente na{\" \"}\n Calculadora os pontos\n abaixo.\n */}\n {/* \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n */}\n \n Ainda tem dúvidas? Acesse:\n \n \n Central de Ajuda\n \n , onde nosso time de suporte responde suas dúvidas\n
\n\n \n \n Se você investe em moedas virtuais ou tokens, é fundamental que\n você entenda as regras de IR aplicáveis para criptoativos.\n \n \n Entendendo o que são criptoativos\n \n \n Os criptoativos são a representação digital de valor denominada em\n sua própria unidade de conta, cujo preço pode ser expresso em\n moeda soberana local ou estrangeira, transacionado eletronicamente\n com a utilização de criptografia e de tecnologias de registros\n distribuídos, que pode ser utilizado como forma de investimento,\n instrumento de transferência de valores ou acesso a serviços, e\n que não constitui moeda de curso legal.\n \n \n Alguns exemplos de criptoativos são Bitcoins, Altcoins (Ether,\n Ripple, Litecoin, entre outros) e Payment Tokens (Chiliz, Binance\n Coin, Chainlink, entre outros). Eles podem ser equiparados a\n ativos financeiros sujeitos a ganho de capital e devem ser\n declarados pelo seu valor de aquisição.\n \n \n (Instrução Normativa RFB nº 1.888, de 3 de maio de 2019)\n \n \n Qual imposto de renda incide sobre ganhos com criptoativos\n \n \n Os ganhos obtidos com a alienação de criptoativos cujo total\n alienado no mês seja superior a R$ 35.000,00 são tributados, a\n título de ganho de capital, segundo alíquotas progressivas\n estabelecidas em função do lucro:\n \n \n \n a) 15% sobre a parcela dos ganhos que não ultrapassar R$\n 5.000.000,00;\n \n \n b) 17,5% sobre a parcela dos ganhos que exceder R$ 5.000.000,00\n e não ultrapassar R$ 10.000.000,00;\n \n \n c) 20% sobre a parcela dos ganhos que exceder R$ 10.000.000,00 e\n não ultrapassar R$ 30.000.000,00; e\n \n \n d) 22,5% sobre a parcela dos ganhos que ultrapassar R$\n 30.000.000,00.\n \n \n \n (Lei nº 5.172, de 25 de outubro de 1966 - Código Tributário\n Nacional - CTN, art. 118; Lei nº 8.981, de 20 de janeiro de 1995,\n art. 21; Instrução Normativa SRF nº 84, de 11 de outubro de 2001;\n Instrução Normativa SRF nº 599, de 28 de dezembro de 2005; e Ato\n Declaratório Interpretativo RFB nº 3, de 27 de abril de 2016)\n \n \n Quando o imposto deve ser pago\n \n \n O recolhimento do imposto sobre a renda deve ser feito até o\n último dia útil do mês seguinte ao da transação de venda.\n \n \n O código a ser utilizado no Documento de Arrecadação das Receitas\n Federais (Darf) para pagamento desse tributo é 4600.\n \n \n (Lei nº 5.172, de 25 de outubro de 1966 - Código Tributário\n Nacional - CTN, art. 118; Lei nº 8.981, de 20 de janeiro de 1995,\n art. 21; Instrução Normativa SRF nº 84, de 11 de outubro de 2001;\n Instrução Normativa SRF nº 599, de 28 de dezembro de 2005; e Ato\n Declaratório Interpretativo RFB nº 3, de 27 de abril de 2016)\n \n \n Operações isentas de imposto de renda\n \n \n A isenção relativa às alienações de até R$ 35.000,00 mensais deve\n observar o conjunto de criptoativos ou moedas virtuais alienados\n no Brasil ou no exterior, independente de seu nome (bitcoin,\n ethereum, litecoin, tether ...). Caso o total alienado no mês\n ultrapasse esse valor, o ganho de capital relativo a todas as\n alienações estará sujeito à tributação.\n \n \n (Lei nº 5.172, de 25 de outubro de 1966 - Código Tributário\n Nacional - CTN, art. 118; Lei nº 8.981, de 20 de janeiro de 1995,\n art. 21; Instrução Normativa SRF nº 84, de 11 de outubro de 2001;\n Instrução Normativa SRF nº 599, de 28 de dezembro de 2005; e Ato\n Declaratório Interpretativo RFB nº 3, de 27 de abril de 2016)\n \n \n Como converter de dólares (US$) para reais (R$)\n \n \n Para a conversão de valores em reais, o valor expresso em moeda\n estrangeira deve ser convertido em dólar dos Estados Unidos da\n América e convertido em moeda nacional pela cotação do dólar dos\n Estados Unidos da América fixada, para venda, pelo Banco Central\n do Brasil (BCB) para a data da operação ou saldo, extraída do\n boletim de fechamento PTAX divulgado pelo BCB.\n \n \n (Instrução Normativa RFB nº 1.888, de 3 de maio de 2019)\n \n \n Compensação de perdas passadas\n \n \n Como os ganhos em criptoativos estão sujeitos as regulações de\n ganho de capital, as perdas passadas em criptoativos não podem ser\n compensadas dos ganhos futuros. As operações em criptoativos são\n tratadas de maneira singular, não sendo possível compensar os\n prejuízos de algumas operações com lucros de outras.\n \n \n Mesmo para operações no mesmo mês, de forma conservadora, valem as\n disposições acima: informar cada operação de venda, sem compensar\n lucros com perdas.\n \n \n (Instrução Normativa SRF nº 84, de 11 de outubro de 2001, art. 2º,\n parágrafo único)\n \n \n Dedução de despesas operacionais\n \n \n As despesas com corretagem na venda de criptoativos podem ser\n abatidas do ganho de capital a ser tributado.\n \n Mineração de bitcoins\n \n Apesar de ainda existirem diversos entedimentos a respeito de como\n a mineração deve ser tributada, acreditamos que a mineração deve\n ser tratada como renda auferida - isto é, uma retribuição por\n serviço prestado. Assim sendo, o recebimento de bitcoin por\n mineração deveria ser tributado conforme as regras de IRPF, com\n alíquotas de até 27,5%. Não existe, entretanto, consenso formado\n ainda sobre as regras em mineração.\n \n \n Utilizando o Velotax em criptoativos\n \n \n A{\" \"}\n navigate(`/${currentBroker.path}/cripto-darf`)}\n >\n Calculadora\n {\" \"}\n do Velotax para cálculo e pagamento de IR sobre ganhos em\n criptoativos permite a inclusão manual de operações, e realiza os\n cálculos automaticamente seguindo as regras da Receita Federal.\n \n \n Após inserir as informações de suas operações de venda, o Velotax\n calculará os seus impostos devidos de acordo com as regras acima e\n emitirá a sua DARF para pagamento.\n \n \n Caso você esteja pagando em atraso, o Velotax incluirá\n automaticamente os juros e multa devidos na sua DARF.\n \n \n Ainda tem dúvidas? Acesse:\n \n -{\" \"}\n \n Central de Ajuda\n \n , onde nosso time de suporte responde suas dúvidas\n \n\n \n \n Se você investe em ações no exterior, é fundamental que você\n entenda as regras de IR aplicáveis para ativos no exterior.\n \n \n Entendendo quais ativos no exterior estão sujeitos a tributação\n \n \n A alienação de bens ou direitos e liquidação ou resgate de\n aplicações financeiras, de propriedade de pessoa física,\n adquiridos em moeda estrangeira estarão sujeitos as regras de\n tributação sobre ganho de capital.\n \n \n Caso você tenha realizado operações que importem na alienação\n (venda) de bens ou direitos adquiridos em moeda estrangeira, como\n ações e outros ativos financeiros em bolsa de valores, de\n mercadorias, de futuros ou assemelhadas, você deverá efetuar o\n cálculo de ganho de capital tributável e o recolhimento do imposto\n devido segundo as alíquotas progressivas estabelecidas em função\n do lucro.\n \n \n (Lei nº 13.254, de 13 de janeiro de 2016; Lei nº 13.428, de 30 de\n março de 2017; Instrução Normativa SRF nº 118, de 27 de dezembro\n de 2000; Instrução Normativa SRF nº 84, de 11 de outubro de 2001,\n art. 3º; Instrução Normativa RFB nº 1.627, de 11 de março de 2016;\n e Instrução Normativa RFB nº 1.704, de 31 de março de 2017)\n \n \n Qual imposto de renda incide sobre ganhos na venda de ativos no\n exterior\n \n \n Os ganhos obtidos com a alienação de investimentos no exterior\n cujo total alienado no mês seja superior a R$ 35.000,00 são\n tributados, a título de ganho de capital, segundo alíquotas\n progressivas estabelecidas em função do lucro:\n \n \n \n a) 15% sobre a parcela dos ganhos que não ultrapassar R$\n 5.000.000,00;\n \n \n b) 17,5% sobre a parcela dos ganhos que exceder R$ 5.000.000,00\n e não ultrapassar R$ 10.000.000,00;\n \n \n c) 20% sobre a parcela dos ganhos que exceder R$ 10.000.000,00 e\n não ultrapassar R$ 30.000.000,00;\n \n \n d) 22,5% sobre a parcela dos ganhos que ultrapassar R$\n 30.000.000,00.\n \n \n \n (Lei nº 8.981, de 20 de janeiro de 1995, art. 21; Lei nº 13.259,\n de 16 de março de 2016; e Ato Declaratório Interpretativo RFB nº\n 3, de 27 de abril de 2016)\n \n \n Quando o imposto deve ser pago\n \n \n O recolhimento do imposto sobre a renda deve ser feito até o\n último dia útil do mês seguinte ao da transação de venda.\n \n \n O código a ser utilizado no Documento de Arrecadação das Receitas\n Federais (Darf) para pagamento desse tributo é 8523.\n \n \n (Lei nº 5.172, de 25 de outubro de 1966 - Código Tributário\n Nacional - CTN, art. 118; Lei nº 8.981, de 20 de janeiro de 1995,\n art. 21; Instrução Normativa SRF nº 84, de 11 de outubro de 2001;\n Instrução Normativa SRF nº 599, de 28 de dezembro de 2005; e Ato\n Declaratório Interpretativo RFB nº 3, de 27 de abril de 2016)\n \n \n Operações isentas de imposto de renda\n \n \n A isenção relativa às alienações de até R$ 35.000,00 mensais deve\n observar o conjunto de instrumentos financeiros negociados em\n bolsa de valores no exterior, como ETFs (Exchange Traded Funds),\n REITs (Real Estate Investment Trust), ADRs (American Depositary\n Receipt) e Stocks (ações). Caso o total alienado no mês ultrapasse\n esse valor, o ganho de capital relativo a todas as alienações\n estará sujeito à tributação.\n \n \n (Lei nº 9.250, de 26 de dezembro de 1995, art. 22, I e II; Lei nº\n 10.406, de 10 de janeiro de 2002, art. 1.725; Instrução Normativa\n SRF nº 599, de 28 de dezembro de 2005, art. 1º; Solução de\n Consulta Cosit nº 320, de 20 de junho de 2017; e Solução de\n Consulta Cosit nº 264, de 24 de junho de 2019)\n \n \n Como funciona o cálculo do imposto de renda no exterior\n \n \n Na hipótese de bens ou direitos adquiridos e aplicações\n financeiras realizadas em moeda estrangeira com rendimentos\n auferidos originariamente em reais, o ganho de capital corresponde\n à diferença positiva, em reais, entre o valor de venda e o custo\n de aquisição da aplicação financeira.\n \n \n Neste caso, o valor de venda deve ser convertido para reais pela\n cotação do dólar fixada para compra, pelo Banco Central do Brasil,\n para a data do recebimento. Já o custo de aquisição deve ser\n convertido em reais pela cotação do dólar fixada para venda para a\n data do pagamento.\n \n \n Caso os rendimentos auferidos utilizados na aquisição sejam\n originariamente em moeda estrangeira, o ganho de capital\n corresponde à diferença positiva, em dólares dos Estados Unidos da\n América, entre o valor de venda e o custo de aquisição da\n aplicação, convertida em moeda nacional mediante a utilização da\n cotação do dólar fixada, para compra, pelo Banco Central do\n Brasil, para a data do recebimento\n \n \n (Medida Provisória nº 2.158-35, de 24 de agosto de 2001, art. 24;\n Lei nº 8.981, de 20 de janeiro de 1995, art. 21; Instrução\n Normativa SRF nº 208, de 27 de setembro de 2002; Instrução\n Normativa SRF nº 118, de 27 de dezembro de 2000; Solução de\n Consulta Interna Cosit nº 5, de 15 de fevereiro de 2013; e Solução\n de Consulta Cosit nº 33, de 26 de fevereiro de 2015)\n \n \n Como converter de dólares (US$) para reais (R$)\n \n \n Para a conversão de valores em reais, o valor expresso em moeda\n estrangeira deve ser convertido em dólar dos Estados Unidos da\n América e convertido em moeda nacional pela cotação do dólar dos\n Estados Unidos da América fixada, para compra ou venda, pelo Banco\n Central do Brasil (BCB) para a data da operação ou saldo, extraída\n do boletim de fechamento PTAX divulgado pelo BCB.\n \n \n (Instrução Normativa RFB nº 1.888, de 3 de maio de 2019)\n \n \n Compensação de perdas passadas\n \n \n Como os ganhos na venda de ativos no exterior estão sujeitos as\n regulações de ganho de capital, as perdas passadas em ativos no\n exterior não podem ser compensadas dos ganhos futuros. As\n operações com ativos no exterior são tratadas de maneira singular,\n não sendo possível compensar os prejuízos de algumas operações com\n lucros de outras.\n \n \n Mesmo para operações no mesmo mês, de forma conservadora, valem as\n disposições acima: informar cada operação de venda, sem compensar\n lucros com perdas.\n \n \n (Instrução Normativa SRF nº 84, de 11 de outubro de 2001, art. 2º,\n parágrafo único)\n \n \n Dedução de despesas operacionais\n \n \n As despesas com corretagem na venda de ativos no exterior podem\n ser abatidas do ganho de capital a ser tributado.\n \n \n Utilizando o Velotax em investimentos no exterior\n \n \n A{\" \"}\n navigate(`/${currentBroker.path}/exterior-darf`)}\n >\n Calculadora\n {\" \"}\n do Velotax para cálculo e pagamento de IR sobre ganhos em\n investimentos no exterior permite a inclusão manual de operações,\n e realiza os cálculos automaticamente seguindo as regras da\n Receita Federal.\n \n \n Após inserir as informações de suas operações de venda, o Velotax\n calculará os seus impostos devidos de acordo com as regras acima e\n emitirá a sua DARF para pagamento.\n \n \n Caso você esteja pagando em atraso, o Velotax incluirá\n automaticamente os juros e multa devidos na sua DARF.\n \n \n Ainda tem dúvidas? Acesse:\n \n -{\" \"}\n \n Central de Ajuda\n \n , onde nosso time de suporte responde suas dúvidas\n \n\n \n \n Imposto de Renda sobre Rendimentos\n \n \n Os rendimentos recebidos de outras pessoas físicas ou de fontes no\n exterior que ultrapassem o valor isento de R$1.903,98 por mês\n estarão sujeitos ao recolhimento mensal do imposto de renda.\n \n \n Nessa categoria, os principais rendimentos tributados incluem,\n entre outros:\n \n \n \n a) Autônomos, incluindo trabalhos sem vínculo empregatício;\n \n \n b) Aluguéis, incluindo a locação e sublocação de bens móveis e\n imóveis;\n \n \n c) Pensão, incluindo pensão alimentícia e alimentos\n provisionais;\n \n \n d) Exterior, incluindo quaisquer valores recebidos de fontes do\n exterior.\n \n \n \n (Regulamento do Imposto sobre a Renda - RIR/2018, arts. 118 a 121\n e art. 123, aprovado pelo Decreto nº 9.580, de 22 de novembro de\n 2018; Instrução Normativa RFB nº 1.500, de 29 de outubro de 2014,\n arts. 24, § 4º, 53 e 54; Instrução Normativa RFB nº 1.531, de 19\n de dezembro de 2014)\n \n Autônomos\n \n Inclui os profissionais não-assalariados que recebem de outras\n pessoas físicas, e que possuem rendimentos advindos da prestação\n de serviços de representante comercial autônomo, intermediação na\n realização de negócios por conta de terceiros, prestação de\n serviços de transporte de passageiros, prestação de serviços de\n transporte de cargas, entre outros trabalhos sem vínculo\n empregatício.\n \n Aluguéis\n \n Inclui proprietários de imóveis que possuem rendimentos de\n aluguéis, considerando que:\n \n \n \n (a) Apenas o valor líquido do aluguel é tributado. As despesas\n de IPTU, condomínio, cobrança/recebimento e aluguel no caso de\n imóvel sublocado podem ser descontadas do rendimento;\n \n \n (b) Se você tiver mais de um imóvel e receber mais de um aluguel\n por mês, será necessário considerar a quantia total dos aluguéis\n recebidos.\n \n \n \n A data do pagamento, para efeito de incidência do imposto, será\n considerada aquela em que o locatário pagar o aluguel ao\n proprietário do bem ou à administradora.\n \n Pensão Alimentícia\n \n Inclui os alimentandos que recebem pensão alimentícia. A pensão\n alimentícia pode ser recebida não apenas pelos filhos, mas por\n qualquer pessoa que tenha recebido esse benefício por decisão\n judicial, acordo homologado judicialmente ou por escritura\n pública. O contribuinte é o beneficiário da pensão, ainda que\n tenha sido paga a seu representante legal.\n \n Exterior\n \n Inclui pessoas físicas com rendimentos ou quaisquer outros valores\n recebidos de fontes do exterior. Neste caso, é importante observar\n a possível existência de{\" \"}\n \n acordos, convenções e tratados internacionais\n {\" \"}\n firmados entre o Brasil e o país de origem dos rendimentos para\n evitar a bitributação.\n \n \n Qual imposto de renda incide\n \n \n O imposto sobre rendimentos é calculado sobre o total recebido no\n mês, mediante a aplicação da seguinte tabela progressiva mensal:\n \n \n \n a) Até R$ 1.903,98 não há impostos a pagar;\n \n \n b) De R$ 1.903,99 até R$ 2.826,65, a alíquota é de 7,5% sobre os\n rendimentos, com parcela a deduzir de R$ 142,80;\n \n \n c) De R$ 2.826,66 até R$ 3.751,05, a alíquota é de 15% sobre os\n rendimentos, com parcela a deduzir de R$ 354,80;\n \n \n d) De R$ 3.751,06 até R$ 4.664,68, a alíquota é de 22,5% sobre\n os rendimentos, com parcela a deduzir de R$ 636,13;\n \n \n e) Acima de R$ 4.664,68, a alíquota é de 27,5% sobre os\n rendimentos, com parcela a deduzir de R$ 869,36.\n \n \n \n (Lei nº 11.482, de 31 de maio de 2007, arts. 1º e 3º; Lei nº\n 12.024, de 27 de agosto de 2009, art. 3º; Regulamento do Imposto\n sobre a Renda - RIR/2018, art. 121, aprovado pelo Decreto nº\n 9.580, de 22 de novembro de 2018; Instrução Normativa RFB nº\n 1.500, de 29 de outubro de 2014, arts. 53 a 57 e 65; Solução de\n Consulta Interna Cosit nº 3, de 8 de fevereiro de 2012; e Solução\n de Consulta Interna Cosit nº 6, de 25 de maio de 2015)\n \n \n Quando o imposto deve ser pago\n \n \n O recolhimento do imposto de renda deve ser feito até o último dia\n útil do mês seguinte ao recebimento dos rendimentos.\n \n \n O código a ser utilizado no Documento de Arrecadação das Receitas\n Federais (Darf) para pagamento desse tributo é 0190.\n \n \n (Lei nº 8.383, de 30 de dezembro de 1991, art. 7º; e Instrução\n Normativa RFB nº 1.500, de 29 de outubro de 2014, arts. 53 a 57 e\n 67)\n \n \n \n \n \n Deduções no imposto de renda\n \n \n São admitidas as seguintes deduções na base de cálculo do imposto\n sobre rendimentos:\n \n \n \n a) Contribuição previdenciária oficial, o INSS;\n \n \n b) Dependentes, sendo R$ 189,59 por dependente a partir do ano\n 2021;\n \n \n c) Pensão alimentícia, quando paga em cumprimento de decisão\n judicial, inclusive os alimentos provisionais, de acordo\n homologado judicialmente ou de escritura pública; e\n \n \n d) Despesas relacionadas à atividade do profissional autônomo\n \n \n \n No caso de autônomos, somente as seguintes categorias de despesas\n podem ser deduzidas da base tributária:\n \n \n \n i) Despesas trabalhistas;\n \n \n ii) Serviços de terceiros;\n \n \n iii) Despesas com custeio e funcionamento;\n \n \n iv) Propaganda, assinatura de jornais e revistas;\n \n v) Roupas especiais;\n \n vi) Contribuições a sindicatos, associações ou conselhos;\n \n \n vii) Despesas com congressos e seminários;\n \n \n viii) Honorários profissionais;\n \n \n ix) Imóvel residencial ou profissional;\n \n \n x) Manutenção e conservação;\n \n \n xi) Correios e transporte;\n \n \n xii) Instalações, máquinas e equipamentos;\n \n \n xii) Despesas Comuns como rateio sob forma de Condomínio;\n \n \n xiv) Outras despesas necessárias à atividade específica e\n individual de cada contribuinte não contempladas anteriormente.\n \n \n \n (Lei nº 7.290, de 19 de dezembro de 1984; Lei nº 7.713, de 22 de\n dezembro de 1988, art. 9º; Regulamento do Imposto sobre a Renda -\n RIR/2018, arts. 39 e 158, § 1º, aprovado pelo Decreto nº 9.580, de\n 22 de novembro de 2018; e Parecer Normativo CST nº 122, de 8 de\n junho de 1974)\n \n \n Utilizando o Velotax para IR em Rendimentos\n \n \n A{\" \"}\n navigate(`/${currentBroker.path}/autonomos`)}\n >\n Calculadora\n {\" \"}\n do Velotax para cálculo e pagamento de IR sobre rendimentos de\n pessoas físicas ou fontes no exterior permite a inclusão manual de\n operações, e realiza os cálculos automaticamente seguindo as\n regras da Receita Federal.\n \n \n Após inserir os seus rendimentos do mês, o Velotax calculará os\n seus impostos devidos de acordo com as regras acima e emitirá a\n sua DARF para pagamento.\n \n \n Caso você esteja pagando em atraso, o Velotax também incluirá\n automaticamente os juros e multa devidos na sua DARF.\n \n \n Ainda tem dúvidas? Acesse:\n \n \n -{\" \"}\n \n Fórum\n {\" \"}\n , onde nossa comunidade de usuários responde suas dúvidas\n \n \n
\n
\n\n \n {CompaniesExemptList?.content}\n \n
\n );\n};\n","import { Layout } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const LayoutHeader = styled(Layout.Header)`\n height: 64px;\n padding: 0 32px;\n background: var(--white);\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n\n span {\n display: flex;\n }\n\n .ant-btn.menu-button {\n border-radius: 4px;\n background-color: var(--ant-primary-color) !important;\n svg {\n width: 24px;\n height: 24px;\n margin: 0 0 1px 2px;\n fill: var(--white);\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n z-index: 2;\n padding: 0 24px;\n column-gap: 8px;\n justify-content: space-between;\n box-shadow: rgba(0, 0, 102, 0.16) 0px 0px 16px 0px;\n }\n`;\n","import React from \"react\";\nimport { Col, Row } from \"antd\";\nimport { HiOutlineMenu } from \"react-icons/hi\";\nimport Button from \"../Button\";\nimport { isMobile } from \"../../utils\";\nimport { LayoutHeader } from \"./styles\";\nimport { useAuth } from \"../../contexts/AuthContext\";\n\ninterface IHeaderProps {}\n\nconst Header: React.FC = () => {\n const { setShowDrawer } = useAuth();\n\n const theme = {\n isMobile: isMobile(),\n };\n\n return (\n <>\n \n {isMobile() && (\n \n \n }\n onClick={() => setShowDrawer(true)}\n />\n \n \n )}\n \n \n );\n};\n\nexport default Header;\n","import styled from \"styled-components\";\n\nexport const LogoStyled = styled.div`\n height: 64px;\n background-color: transparent;\n .ant-image {\n height: 64px;\n margin: 0 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n .ant-image-img {\n max-width: 32px;\n }\n }\n\n &.mobile {\n background-color: var(--white);\n .ant-image {\n margin: 0 8px;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .ant-image {\n .ant-image-img {\n margin: 0px;\n max-width: 40px;\n }\n }\n }\n`;\n","import { Image } from \"antd\";\nimport { LogoStyled } from \"./styles\";\nimport XPLogo from \"../../assets/xp.svg\";\n\ninterface LogoProps {\n className?: string;\n src?: string;\n}\n\nexport const Logo: React.FC = ({ src, className }) => {\n return (\n \n \n \"XP\n \n \n );\n};\n","import styled from \"styled-components\";\nimport { Drawer, Layout, Menu } from \"antd\";\n\nexport const DrawerSider = styled(Drawer)`\n z-index: 99999999999;\n .ant-drawer-wrapper-body {\n position: relative;\n .ant-drawer-header {\n right: 16px;\n top: 24px;\n padding: 0;\n position: absolute;\n }\n .ant-drawer-body {\n padding: 0;\n background: var(--dark-3);\n }\n }\n`;\n\nexport const LayoutSider = styled(Layout.Sider)`\n top: 0;\n left: 0;\n z-index: 11;\n height: 100%;\n position: fixed;\n box-shadow: 0px 0px 48px rgba(0, 0, 102, 0.08);\n\n &.expandedSidebar {\n width: 192px !important;\n min-width: 192px !important;\n max-width: 192px !important;\n }\n\n .ant-layout-sider-children {\n background-color: var(--dark-3);\n }\n`;\n\nexport const Modules = styled(Menu)`\n overflow-y: auto;\n overflow-x: hidden;\n border-right: none;\n height: calc(100% - 64px);\n background-color: var(--dark-3) !important;\n\n @media only screen and (max-device-width: 812px) {\n height: calc(100% - 66px);\n }\n`;\n\nexport const Module = styled(Menu.Item)`\n color: var(--white) !important;\n margin: 0 !important;\n height: 64px !important;\n padding-left: 20px !important;\n background-color: var(--dark-3);\n transition: color 500ms ease-in-out;\n\n &:first-of-type {\n border-top: 1px solid var(--dark-1);\n }\n\n * {\n z-index: 1;\n }\n\n &.conta {\n bottom: 0;\n left: -1px;\n position: absolute;\n border-top: 1px solid var(--dark-1);\n }\n\n svg {\n margin-right: 4px;\n &.no-fill {\n stroke: var(--ghost);\n transition: stroke 0.3s ease-in-out;\n }\n }\n\n &.ant-menu-item:active {\n background-color: var(--dark-3) !important;\n }\n &.ant-menu-item-selected {\n background-color: var(--dark-3) !important;\n &::after {\n border-right: none;\n opacity: 0;\n }\n &::before {\n opacity: 1;\n }\n }\n\n &::before {\n content: \"\";\n top: 8px;\n left: 10px;\n z-index: 0;\n opacity: 0;\n position: absolute;\n border-radius: 4px;\n width: calc(100% - 20px);\n height: calc(100% - 16px);\n background-color: var(--dark-1);\n transition: opacity 500ms ease-in-out;\n }\n\n &:hover {\n color: var(--ant-primary-color) !important;\n svg {\n color: var(--ant-primary-color) !important;\n }\n svg:not(.no-fill) {\n fill: var(--ant-primary-color) !important;\n }\n svg.no-fill {\n stroke: var(--ant-primary-color) !important;\n }\n }\n\n &.ant-menu-item-selected {\n color: var(--ant-primary-color) !important;\n svg {\n color: var(--ant-primary-color);\n }\n svg:not(.no-fill) {\n fill: var(--ant-primary-color);\n }\n svg.no-fill {\n stroke: var(--ant-primary-color);\n }\n }\n`;\n\nexport const SessionContainer = styled.div`\n height: 64px;\n display: flex;\n flex-direction: column;\n background-color: var(--dark-3);\n`;\n\nexport const ActionContainer = styled.div`\n width: 100%;\n height: 64px;\n padding: 8px;\n border-top: 1px solid var(--dark-1);\n\n .active {\n color: var(--ant-primary-color);\n }\n`;\n\nexport const ActionButton = styled.button`\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: space-around;\n width: 100%;\n height: 100%;\n font-size: 12px;\n transition: 0.3s;\n\n &:hover {\n color: var(--ant-primary-color);\n transition: 0.3s;\n &.logout {\n color: var(--ant-error-color);\n }\n }\n\n svg {\n width: 20px;\n height: 20px;\n }\n`;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.75 17H17.75C18.855 17 19.75 16.105 19.75 15V5C19.75 3.895 18.855 3 17.75 3H9.75C8.645 3 7.75 3.895 7.75 5V7M7.75 12H11.75M7.75 16H11.75M13.75 21H5.75C4.645 21 3.75 20.105 3.75 19V9C3.75 7.895 4.645 7 5.75 7H13.75C14.855 7 15.75 7.895 15.75 9V19C15.75 20.105 14.855 21 13.75 21Z\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgDarfs(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDarfs);\nexport default __webpack_public_path__ + \"static/media/darfs.33b52582.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.307 19.257C16.923 17.417 14.705 16 12 16C9.29499 16 7.07699 17.417 6.69299 19.257M18.3639 5.63604C21.8787 9.15076 21.8787 14.8492 18.3639 18.3639C14.8492 21.8787 9.15074 21.8787 5.63604 18.3639C2.12132 14.8492 2.12132 9.15074 5.63604 5.63604C9.15076 2.12132 14.8492 2.12132 18.3639 5.63604ZM14.1213 7.87868C15.2929 9.05025 15.2929 10.9497 14.1213 12.1213C12.9497 13.2929 11.0502 13.2929 9.87868 12.1213C8.70711 10.9497 8.70711 9.05025 9.87868 7.87868C11.0502 6.70711 12.9497 6.70711 14.1213 7.87868Z\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgConta(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgConta);\nexport default __webpack_public_path__ + \"static/media/conta.532d26e3.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23 19V17.904C23 16.523 21.881 15.404 20.5 15.404H19.699M1 19V17.904C1 16.523 2.119 15.404 3.5 15.404H4.301M17.339 19V17.399C17.339 15.466 15.772 13.899 13.839 13.899H10.16C8.227 13.899 6.66 15.466 6.66 17.399V19M20.7925 9.52352C21.5825 10.3136 21.5825 11.5944 20.7925 12.3845C20.0025 13.1745 18.7216 13.1745 17.9316 12.3845C17.1415 11.5944 17.1415 10.3135 17.9316 9.52352C18.7216 8.73349 20.0025 8.73349 20.7925 9.52352ZM14.2026 5.91236C15.4191 7.12884 15.4191 9.10115 14.2026 10.3176C12.9861 11.5341 11.0138 11.5341 9.79732 10.3176C8.58084 9.10116 8.58084 7.12885 9.79732 5.91236C11.0138 4.69588 12.9861 4.69588 14.2026 5.91236ZM6.06848 9.52352C6.85851 10.3136 6.85851 11.5944 6.06848 12.3845C5.27845 13.1745 3.99756 13.1745 3.20753 12.3845C2.4175 11.5944 2.4175 10.3135 3.20753 9.52352C3.99756 8.73349 5.27845 8.73349 6.06848 9.52352Z\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgClientes(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClientes);\nexport default __webpack_public_path__ + \"static/media/clientes.50c0ab33.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 9.5H19M17.4 13.5H15M12.095 16.5C11.92 16.061 11.65 15.667 11.303 15.346C10.716 14.802 9.946 14.5 9.146 14.5H7.854C7.054 14.5 6.284 14.802 5.697 15.346C5.35 15.667 5.08 16.061 4.905 16.5M10.091 8.15901C10.9697 9.03769 10.9697 10.4623 10.091 11.341C9.21232 12.2197 7.7877 12.2197 6.90902 11.341C6.03034 10.4623 6.03034 9.03769 6.90902 8.15901C7.7877 7.28033 9.21232 7.28033 10.091 8.15901ZM2 18.5V5.541C2 4.414 2.914 3.5 4.041 3.5H20C21.105 3.5 22 4.395 22 5.5V18.5C22 19.605 21.105 20.5 20 20.5H4C2.895 20.5 2 19.605 2 18.5Z\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgAssessores(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAssessores);\nexport default __webpack_public_path__ + \"static/media/assessores.ebef8d7b.svg\";\nexport { ForwardRef as ReactComponent };","import clsx from \"clsx\";\nimport { useNavigate } from \"react-router-dom\";\nimport React, { Dispatch, SetStateAction, useState } from \"react\";\nimport { Logo } from \"../Logo\";\nimport { isMobile } from \"../../utils\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { DrawerSider, LayoutSider, Module, Modules } from \"./styles\";\nimport { ReactComponent as DarfsIcon } from \"../../assets/icons/sidebar/darfs.svg\";\nimport { ReactComponent as ContaIcon } from \"../../assets/icons/sidebar/conta.svg\";\nimport { ReactComponent as ClientesIcon } from \"../../assets/icons/sidebar/clientes.svg\";\nimport { ReactComponent as AssessoresIcon } from \"../../assets/icons/sidebar/assessores.svg\";\nimport { RiFileDownloadLine } from \"react-icons/ri\";\n\ninterface ISideBarProps {\n pagePath: string;\n}\n\ninterface ISideBarContainerProps {\n visible: boolean;\n setVisible: Function;\n expandedSidebar: boolean;\n setExpandedSidebar: Dispatch>;\n}\n\nconst SideBarContainer: React.FC = ({\n children,\n visible,\n setVisible,\n expandedSidebar,\n setExpandedSidebar,\n}) =>\n isMobile() ? (\n setVisible(false)}\n >\n {children}\n \n ) : (\n {\n setExpandedSidebar(true);\n }}\n onMouseLeave={() => {\n setExpandedSidebar(false);\n }}\n >\n {children}\n \n );\n\nconst Sidebar: React.FC = ({ pagePath }) => {\n const navigate = useNavigate();\n const {\n user,\n showDrawer,\n setShowDrawer,\n expandedSidebar,\n setExpandedSidebar,\n } = useAuth();\n\n const [openKeys] = useState([\"\"]);\n\n const handleNavigate = (path: string) => {\n if (path.includes(\"http\")) {\n window.open(path, \"_blank\")?.focus();\n } else {\n setShowDrawer(false);\n navigate(path);\n }\n };\n\n return (\n \n \n \n {user.user && (\n handleNavigate(\"/clients\")}\n icon={}\n >\n Clientes\n \n )}\n {user.user && (user.user.office || user?.user?.admin) && (\n handleNavigate(\"/professionals\")}\n icon={}\n >\n Assessores\n \n )}\n {user.user && (\n handleNavigate(\"/darf\")}\n icon={}\n >\n DARFs\n \n )}\n {user.user && (\n handleNavigate(\"/report\")}\n icon={}\n >\n Relatórios\n \n )}\n {user.user && (\n }\n onClick={() => handleNavigate(\"/conta\")}\n >\n Minha conta\n \n )}\n \n \n );\n};\n\nexport default Sidebar;\n","import { Layout as AntLayout } from \"antd\";\nimport { BiX } from \"react-icons/bi\";\nimport styled from \"styled-components\";\n\nexport const MainLayout = styled(AntLayout)`\n height: 100%;\n background-color: var(--white);\n position: relative;\n`;\n\nexport const Layout = styled(AntLayout)`\n height: 100%;\n margin-left: 64px;\n position: relative;\n background-color: var(--white);\n &:after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n transition: background-color 0.2s;\n }\n &.expandedSidebar {\n &:after {\n width: 100%;\n height: 100%;\n background-color: rgb(0, 0, 0, 0.2);\n }\n }\n & > .content {\n height: 100%;\n &.overflow {\n overflow-y: auto;\n }\n }\n @media only screen and (max-device-width: 812px) {\n margin-left: 0;\n }\n`;\n\nexport const BannerContainer = styled.div`\n width: 100%;\n height: 42px;\n display: flex;\n position: relative;\n align-items: center;\n justify-content: center;\n padding: 8px 32px 8px 24px;\n background-color: var(--ant-primary-color-hover);\n\n @media only screen and (max-device-width: 812px) {\n font-size: 12px;\n line-height: 16px;\n }\n`;\n\nexport const BannerAnchor = styled.a`\n color: black;\n min-width: 80px;\n font-weight: 600;\n margin-left: 16px;\n text-align: center;\n text-decoration: underline;\n\n &:hover {\n color: var(--ant-primary-9);\n text-decoration: underline;\n }\n\n @media only screen and (max-device-width: 812px) {\n margin-left: 12px;\n }\n`;\n\nexport const CloseIcon = styled(BiX)`\n position: absolute;\n right: 8px;\n width: 20px;\n height: 20px;\n color: black;\n cursor: pointer;\n transition: 0.3s;\n\n &:hover {\n color: var(--ant-primary-9);\n transition: 0.3s;\n }\n`;\n","import clsx from \"clsx\";\nimport { Typography } from \"antd\";\nimport { useLocation } from \"react-router-dom\";\nimport React, { useMemo, useState } from \"react\";\nimport Header from \"../Header\";\nimport Sidebar from \"../Sidebar\";\nimport { isMobile } from \"../../utils\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport {\n BannerAnchor,\n BannerContainer,\n CloseIcon,\n Layout,\n MainLayout,\n} from \"./styles\";\n\ninterface IPageWrapperProps {\n header?: boolean;\n sideBar?: boolean;\n overflow?: boolean;\n page?: string;\n}\n\nconst PageWrapper: React.FC = ({\n children,\n sideBar,\n header,\n overflow,\n}) => {\n const { pathname } = useLocation();\n const { user, expandedSidebar } = useAuth();\n const [bannerClosed, setBannerClosed] = useState(false);\n\n const currentPage = useMemo(\n () =>\n [\n {\n sidebar: true,\n header: true,\n path: \"/\",\n name: \"Instruções\",\n title: \"\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/conta\",\n name: \"Minha conta\",\n title: \"Minha conta\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/clients\",\n name: \"Clientes\",\n title: \"Clientes\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/darf\",\n name: \"Envio de DARF\",\n title: \"Envio de DARF\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/professionals\",\n name: \"Profissionais\",\n title: \"Profissionais\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/earnings\",\n name: \"Faturamento\",\n title: \"\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/regulacao\",\n name: \"Regulação\",\n title: \"\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/p/cadastrar\",\n name: \"Cadastre-se\",\n title: \"Cadastre-se\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/p/login\",\n name: \"Entrar\",\n title: \"Entrar\",\n },\n ].find(\n (page) =>\n pathname ===\n (page.path.substring(0, 1) === \"/\" ? page.path : `/${page.path}`)\n ),\n [pathname]\n );\n\n return (\n \n {(sideBar ||\n (typeof currentPage?.sidebar === \"boolean\" &&\n currentPage?.sidebar)) && (\n \n )}\n \n {isMobile() &&\n (header ||\n (typeof currentPage?.header === \"boolean\" &&\n currentPage?.header)) &&
}\n
\n {children}\n
\n \n \n );\n};\n\nexport default PageWrapper;\n","import React, { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport api from '../../services/api';\nimport { Spin } from 'antd';\nimport Button from \"../../components/Button\";\nimport { useNavigate } from \"react-router-dom\";\n\nexport const Authorization: React.FC = () => {\n const { token } = useParams();\n const { user } = useAuth();\n const [isSucess, setIsSucess] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const navigate = useNavigate();\n\n useEffect(() => {\n setLoading(true);\n api.post(`/auth/client/${token}`, {}).then(() => {\n setIsSucess(true);\n })\n .catch(() => setIsSucess(false))\n .finally(() => setLoading(false));\n }, [token]);\n\n return (\n \n
\n {loading ? (\n \n ) :\n isSucess ?

Permissão Concedida.

:

Houve algum erro.

\n }\n {\n user?.user\n ?\n navigate(\"/clients\")}\n >\n Voltar para o APP\n \n :\n null\n }\n
\n
\n );\n};\n","import React, { useState } from \"react\";\nimport { Form, Input, message } from \"antd\";\nimport { useNavigate } from \"react-router-dom\";\nimport api from \"../../services/api\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { validationMaxLength20 } from \"../../utils/formValidations\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\n\ninterface IData {\n username: string;\n}\n\nexport const ForgotPassword: React.FC = () => {\n const navigate = useNavigate();\n const [form] = Form.useForm();\n const [loading, setLoading] = useState(false);\n const { setApiError } = useAuth();\n\n const onFinish = async (data: IData) => {\n try {\n setLoading(true);\n\n const res = await api.post(\"/accountants/forgot-password\", {\n username: data.username.replace(/[_.-/-]/g, \"\"),\n });\n message.success(\n `O link de recuperação de senha foi enviado para o email ${res.data?.email}`,\n 5\n );\n\n setTimeout(() => {\n setLoading(false);\n setApiError(\"\");\n navigate(\"/p/login\");\n }, 500);\n } catch (err: any) {\n if (err?.response?.status === 400 || err?.response?.status === 500) {\n message.error(err.response?.data?.message || \"Ocorreu um erro\");\n }\n setLoading(false);\n return;\n }\n };\n\n const handleNavigateCreateAccount = () => {\n navigate(\"/p/cadastrar\");\n };\n\n const handleNavigateLogin = () => {\n navigate(\"/p/login\");\n };\n\n return (\n \n
\n
\n

Recupere sua senha

\n
\n \n \n \n\n
\n \n Recuperar\n \n
\n
\n \n Voltar para o login\n \n
\n
\n\n
\n Ainda não possui uma conta?\n \n Cadastrar\n \n
\n
\n
\n
\n );\n};\n","import React, { useState } from \"react\";\nimport { Form, Input, message } from \"antd\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport Button from \"../../components/Button\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport {\n validationPassConfirmation, validationPassword,\n} from \"../../utils/formValidations\";\nimport api from '../../services/api';\n\ninterface IData {\n pass: string;\n passwordConfirmation: string;\n}\n\nexport const ChangePassword: React.FC = () => {\n const navigate = useNavigate();\n const { token } = useParams();\n const [form] = Form.useForm();\n const [loading, setLoading] = useState(false);\n\n const onFinish = async (data: IData) => {\n try {\n setLoading(true);\n\n await api.post(`/accountants/change-password/${token}`, { password: data.pass, passwordConfirmation: data.passwordConfirmation });\n message.success('Senha alterada com sucesso', 5);\n\n setTimeout(() => {\n setLoading(false);\n navigate('/p/login');\n }, 500)\n } catch (err: any) {\n if(err?.response?.status === 400) {\n message.error(err.response?.data?.message || 'Ocorreu um erro')\n }\n setLoading(false);\n return;\n }\n };\n\n return (\n \n
\n
\n

Cadastrar senha

\n \n \n \n \n\n \n \n \n\n
\n \n Enviar\n \n
\n \n
\n
\n
\n );\n};\n","import styled from \"styled-components\";\n\nexport const HeaderContainer = styled.header`\n z-index: 1;\n display: flex;\n column-gap: 32px;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 80px;\n padding: 26px 48px;\n top: 0;\n position: fixed;\n border-bottom: 1px solid transparent;\n background-color: var(--dark-2);\n box-shadow: 0px 8px 24px rgba(0, 0, 88, 0.08);\n\n img {\n @media only screen and (max-device-width: 390px) {\n margin: 0px;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n column-gap: 2px;\n padding: 13px 12px;\n }\n\n .buttons {\n display: flex;\n column-gap: 16px;\n\n @media only screen and (max-device-width: 812px) {\n column-gap: 2px;\n }\n\n button {\n height: 40px;\n font-weight: 500;\n color: var(--white);\n &.ant-btn-primary {\n border-color: var(--ant-primary-color);\n background-color: var(--ant-primary-color);\n }\n }\n }\n`;\n","import { useNavigate, useLocation } from \"react-router-dom\";\nimport Button from \"../../Button\";\nimport { HeaderContainer } from \"./styles\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\nimport { Logo } from \"../../Logo\";\n\nexport const Header = () => {\n const { user } = useAuth();\n const navigate = useNavigate();\n const { pathname } = useLocation();\n\n return (\n \n \n {!user.user && !pathname.includes(\"/p/authorize-accountant\") && (\n
\n navigate(\"/p/login\")}\n >\n ENTRAR\n \n navigate(\"/p/cadastrar\")}\n >\n COMEÇAR\n \n
\n )}\n
\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n height: 100%;\n`;\n","import { Header } from \"./Header\";\nimport { Container } from \"./styles\";\n\nexport const PublicWrapper: React.FC = ({ children }) => {\n return (\n \n
\n {children}\n \n );\n};\n","import React, { useEffect } from \"react\";\nimport { Form, message } from \"antd\";\nimport { useParams } from \"react-router-dom\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport api from '../../services/api';\n\nexport const AuthorizeAccountant: React.FC = () => {\n const { token } = useParams();\n\n useEffect(() => {\n api.post(`/clients/authorize-accountant/${token}`).then(() => {\n message.success('Usuário autorizado com sucesso', 5);\n }).catch((err: any) => {\n if(err?.response?.status === 400) {\n message.error(err.response?.data?.message || 'Ocorreu um erro')\n }\n\n return;\n })\n }, [token]);\n\n return (\n \n
\n
\n

Autorização de usuário

\n \n \n
\n
\n
\n );\n};\n","import { ConfigProvider } from \"antd\";\nimport { Navigate, Route, Routes as Switch } from \"react-router-dom\";\nimport SSO from \"../pages/SSO\";\nimport { Login } from \"../pages/Login\";\nimport { Darfs } from \"../pages/Darfs\";\nimport { Reports } from \"../pages/Reports\";\nimport Cadastro from \"../pages/Cadastro\";\nimport { Clients } from \"../pages/Clients\";\nimport PrivateRoute from \"./PrivateRoutes\";\nimport OnlyPublicRoute from \"./OnlyPublicRoute\";\nimport OnlyClientAccountPermissionRoute from \"./OnlyClientAccountPermissionRoute\";\nimport { MinhaConta } from \"../pages/MinhaConta\";\nimport PageNotFound from \"../pages/PageNotFound\";\nimport { Regulation } from \"../pages/Regulation\";\nimport PageWrapper from \"../components/PageWrapper\";\nimport { Professionals } from \"../pages/Professionals\";\nimport { Authorization } from \"../pages/Authorization\";\nimport { ForgotPassword } from \"../pages/ForgotPassword\";\nimport { ChangePassword } from \"../pages/ChangePassword\";\nimport { PublicWrapper } from \"../components/PublicWrapper\";\nimport { AuthorizeAccountant } from \"../pages/AuthorizeAccountant\";\n\nfunction Routes() {\n ConfigProvider.config({\n theme: {\n primaryColor: \"#FBC105\",\n infoColor: \"#181818\",\n errorColor: \"#DD2244\",\n successColor: \"#00BC75\",\n },\n });\n return (\n <>\n \n\n \n \n \n }\n >\n } />\n \n\n \n \n \n }\n >\n } />\n } />\n } />\n } />\n } />\n }\n />\n } />\n } />\n \n\n \n \n \n }\n >\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n \n\n } />\n } />\n \n \n );\n}\n\nexport default Routes;\n","import { createGlobalStyle } from \"styled-components\";\n\nexport default createGlobalStyle`\n body {\n --red: #DD2244;\n --green: #0A9E5A;\n --green-1: #0A9E5A;\n --yellow: #FBC105;\n --white: #ffffff;\n --black: #000000;\n --ghost: #E8E8E8;\n --gray-1: #ABAAA8;\n --gray-2: #808080;\n --gray-3: #3D3D3D;\n --dark-1: #242424;\n --dark-2: #1f1f1f;\n --dark-3: #181818;\n --velotax-ghost: #f4f6f8;\n --velotax-ghost-white: #f4f6f8;\n --velotax-disabled: #626368;\n --velotax-font-color: var(--dark-1);\n --velotax-font-color-ghost: #9099aa;\n --velotax-background-color: #ffffff;\n --velotax-background-color-ghost: #eaecee;\n --velotax-shadow-primary: rgba(0, 0, 88, 0.24);\n --velotax-shadow-default: rgba(144, 153, 170, 0.16);\n --velotax-orange: #ff8400;\n --light-gray: #ECF0F6;\n &.dark {\n --velotax-ghost: #101112;\n --velotax-ghost-white: #848688;\n --velotax-disabled: #525358;\n --velotax-font-color: #cacbcc;\n --velotax-font-color-ghost: #9099aa;\n --velotax-background-color: #1a1b1c;\n --velotax-background-color-ghost: #222222;\n --velotax-shadow-primary: rgba(0, 0, 88, 0.24);\n --velotax-shadow-default: rgba(144, 153, 170, 0.16);\n }\n }\n\n * {\n margin: 0;\n padding: 0;\n outline: 0;\n box-sizing: border-box;\n }\n\n *:focus {\n outline: 0;\n }\n\n html, body, #root {\n height: 100%;\n overflow: hidden;\n color: var(--light-gray);\n }\n\n body {\n -webkit-font-smoothing: antialiased;\n position: relative;\n width: 100% !important;\n background: var(--velotax-background-color);\n }\n\n body, input, button {\n font: 14px 'Poppins', sans-serif;\n }\n\n a {\n text-decoration: none;\n }\n\n ul {\n list-style: none;\n }\n\n button {\n cursor: pointer;\n background: transparent;\n border: 0;\n outline: 0;\n color: var(--white);\n letter-spacing: 0.4px;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n color: var(--velotax-font-color);\n }\n\n body > iframe {\n display: none;\n }\n\n .full-width {\n width: 100%;\n }\n\n .column-center {\n text-align: center;\n }\n\n .beauty-scrollbar.zero-scrollbar {\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n width: 0;\n }\n }\n\n .beauty-scrollbar.slim-scrollbar {\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n width: 4px;\n }\n }\n\n .ant-modal-wrap,\n .beauty-scrollbar {\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n width: 8px;\n }\n\n &::-webkit-scrollbar-thumb,\n ::-webkit-scrollbar-thumb {\n border-radius: 0;\n background-color: var(--ant-primary-color);\n }\n\n &::-webkit-scrollbar-track,\n ::-webkit-scrollbar-track {\n background-color: var(--velotax-background-color-ghost);\n }\n }\n\n .input {\n\n .label {\n margin-bottom: 6px;\n }\n\n & + div {\n margin-top: 12px;\n }\n }\n\n .ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .error {\n margin: 12px auto -12px auto;\n color: var(--ant-error-color);\n }\n\n .success {\n color: var(--ant-success-color);\n }\n\n .loading-session {\n background: var(--ant-info-color);\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 12;\n display: flex;\n align-items: center;\n justify-content: center;\n\n img {\n width: 250px;\n padding: 20px;\n }\n\n .anticon {\n color: var(--white);\n\n svg {\n\n height: 40px;\n width: 40px;\n }\n }\n }\n\n .hiring-modal {\n .ant-typography {\n color: var(--velotax-font-color);\n }\n .ant-modal-title::before {\n display: none;\n }\n .hiring-modal-title {\n font-size: 32px;\n font-weight: bold;\n margin: 32px auto;\n text-align: center;\n color: var(--ant-primary-color);\n }\n }\n\n .ant-modal .malha-fina-button {\n width: 100% !important;\n }\n\n ::placeholder {\n color: var(--velotax-font-color-ghost) !important;\n }\n .ant-upload {\n color: var(--yellow);\n background-color: transparent !important;\n /* border-color: var(--yellow) !important; */\n }\n\n .ant-btn-text:focus,\n .ant-btn-text:hover {\n color: var(--velotax-font-color-ghost);\n }\n .ant-layout-sider-light,\n .ant-menu {\n background-color: var(--dark-2);\n }\n\n .ant-table-filter-dropdown {\n min-width: 150px;\n }\n\n .ant-table-filter-dropdown-btns {\n .ant-btn-sm {\n width: 50%\n }\n }\n\n .ant-card {\n box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\n cursor: pointer;\n }\n .ant-card.lembretes {\n height: 150px;\n }\n\n @media screen and (max-width: 575px) {\n .ant-card {\n height: auto;\n }\n }\n\n /* .anticon, */\n .ant-btn-text,\n .ant-checkbox + span,\n .ant-divider-inner-text,\n /* .ant-dropdown-menu, */\n /* .ant-dropdown-menu-item, */\n .ant-empty,\n .ant-form,\n .ant-form-item-label > label,\n .ant-input,\n .ant-input-number-input,\n .ant-list,\n .ant-list-item,\n .ant-radio-wrapper,\n .ant-select,\n /* .ant-select-dropdown,\n .ant-select-item, */\n .ant-upload-list-item-name,\n .ant-typography {\n color: var(--velotax-font-color);\n }\n .ant-input[disabled],\n .ant-select-disabled .ant-select-selector {\n color: var(--velotax-disabled) !important;\n background-color: var(--light-gray);\n }\n /* .ant-select-item:hover,\n .ant-dropdown-menu-item:hover,\n .ant-select-item-option-active {\n }*/\n .ant-select-item-option-selected {\n color: var(--black) !important;\n background-color: var(--gray-1) !important;\n border: none;\n }\n .ant-modal-footer,\n .ant-divider {\n border-color: var(--velotax-ghost-white);\n }\n .ant-btn.ant-btn-icon-only.ant-btn-primary {\n background: transparent;\n svg {\n fill: var(--white);\n }\n }\n .ant-btn.ant-btn-icon-only {\n svg {\n fill: var(--velotax-font-color);\n }\n }\n\n .success-icon {\n svg {\n fill: var(--ant-success-color) !important;\n }\n }\n .error-icon {\n svg {\n fill: var(--ant-error-color) !important;\n }\n }\n\n .footer-secure {\n position: fixed;\n background: var(--white);\n height: 56px;\n bottom: 24px;\n right: 104px;\n z-index: 10;\n display: flex;\n justify-content: flex-end;\n padding: 0 10px;\n max-height: 64px;\n border-radius: 6px;\n box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.1);\n\n &.goleft {\n left: 32px;\n right: auto;\n }\n\n img {\n width: 70px;\n }\n }\n\n .footer-velotax {\n left: 0;\n right: auto;\n row-gap: 5px;\n display: flex;\n box-shadow: none;\n align-items: center;\n flex-direction: column;\n background-color: transparent;\n transform: scale(0.75) translateY(16px);\n opacity: 0.625;\n color: var(--velotax-font-color);\n :hover {\n color: var(--velotax-font-color);\n i {\n opacity: 0.8;\n }\n }\n\n img {\n width: 128px;\n }\n\n i {\n font-size: 12px;\n font-weight: 600;\n }\n }\n\n .poweredby-velotax {\n height: 64px;\n padding: 6px 10px;\n max-height: 64px;\n row-gap: 5px;\n display: flex;\n align-items: center;\n flex-direction: column;\n color: var(--velotax-font-color);\n :hover {\n color: var(--velotax-font-color);\n i {\n opacity: 0.8;\n }\n }\n \n &.sidebar {\n border-top: 1px solid var(--dark-1);\n img {\n height: 20px;\n }\n i {\n font-size: 12px;\n font-weight: 600;\n }\n }\n }\n\n /**\n * ANT-RADIO\n */\n .ant-radio-group {\n display: flex;\n row-gap: 8px;\n flex-direction: column;\n\n .ant-radio-wrapper {\n font-size: 18px;\n\n .ant-radio {\n width: 20px;\n height: 20px;\n margin-right: 8px;\n }\n\n .ant-radio-inner {\n width: 22px;\n height: 22px;\n border-width: 2px;\n\n &:after {\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 8px;\n }\n }\n }\n }\n\n /**\n * ANT-INPUT\n */\n .ant-input {\n font-weight: 500;\n border-radius: 8px;\n border-radius: 4px;\n border: 2px solid var(--ghost);\n background-color: var(--ghost);\n\n &:hover, &:focus {\n border-right-width: 2px !important;\n }\n\n &:focus {\n box-shadow: none;\n /* box-shadow: 0 0 0 4px var(--ant-primary-color-outline); */\n }\n\n &[disabled] {\n cursor: default;\n /* background-color: var(--ghost);\n border-color: var(--ghost); */\n }\n\n &.ant-input-lg {\n height: 56px;\n }\n }\n\n .ant-form-item-has-error {\n .ant-input:not(.ant-input-disabled):not(.ant-input-borderless) {\n background-color: var(--ghost) !important;\n }\n\n .ant-input:not(.ant-input-disabled):not(.ant-input-borderless):focus {\n border-right-width: 2px !important;\n box-shadow: none;\n /* box-shadow: 0 0 0 4px var(--ant-error-color-outline) !important; */\n }\n }\n\n .ant-input-affix-wrapper {\n padding: 0;\n height: 48px;\n border-radius: 24px;\n border: 2px solid var(--ghost);\n background-color: var(--ghost);\n\n :not(.ant-input-affix-wrapper-disabled):hover,\n :not(.ant-input-affix-wrapper-disabled).ant-input-affix-wrapper-focused {\n border: 2px solid var(--ant-primary-color);\n border-right-width: 2px !important;\n }\n\n :not(.ant-input-affix-wrapper-disabled).ant-input-affix-wrapper-focused {\n box-shadow: none;\n /* box-shadow: 0 0 0 4px var(--ant-primary-color-outline); */\n\n .ant-input-prefix {\n svg {\n fill: var(--ant-primary-color);\n }\n }\n }\n\n .ant-input-prefix {\n padding: 0 8px 0 12px;\n\n svg {\n fill: var(--velotax-font-color-ghost);\n }\n }\n\n .ant-input {\n height: 44px;\n font-weight: 300;\n color: var(--black);\n border-radius: 24px;\n background-color: var(--ghost);\n }\n }\n\n /**\n * ANT-INPUT-NUMBER\n */\n .ant-input-number {\n font-weight: 500;\n border-radius: 8px;\n border: 2px solid var(--darl-1);\n background-color: var(--dark-1);\n display: flex;\n align-items: center;\n\n &:hover {\n border-right-width: 2px !important;\n }\n\n &.ant-input-number-focused {\n border-right-width: 2px !important;\n border-color: var(--ant-primary-color);\n box-shadow: 0 0 0 4px var(--ant-primary-color-outline);\n }\n\n &.ant-input-number-lg {\n height: 48px;\n }\n\n &.ant-input-number-disabled,\n &.ant-input-number-disabled .ant-input-number-input {\n cursor: default;\n }\n\n .ant-input-number-handler-wrap {\n display: none;\n }\n\n .ant-input-number-input-wrap {\n .ant-input-number-input {\n font-size: 18px;\n font-weight: 500;\n }\n }\n }\n\n .ant-form-item-has-error {\n .ant-input-number:not([disabled]):hover,\n .ant-input-number-focused:not([disabled]) {\n background-color: var(--velotax-ghost-white) !important;\n border-right-width: 2px !important;\n border-color: var(--ant-error-color);\n box-shadow: 0 0 0 4px var(--ant-error-color-outline) !important;\n }\n }\n\n /**\n * ANT-SELECT\n */\n .ant-select-focused .ant-select-selector {\n box-shadow: none !important;\n border: none !important;\n }\n .ant-select-arrow {\n color: black;\n }\n\n .ant-select-single:not(.ant-select-customize-input) .ant-select-selector {\n width: 100%;\n height: 40px;\n}\n\n .ant-select .ant-select-selector {\n border-radius: 4px !important;\n border: 1px solid var(--ghost) !important;\n background-color: var(--ghost) !important;\n .ant-select-selection-search, .ant-select-selection-item {\n display: flex;\n align-items: center;\n font-weight: 600 !important;\n font-size: 14px;\n }\n }\n /* .ant-select {\n border-radius: 8px !important;\n\n &[disabled],\n &.ant-select-disabled,\n &.ant-select-disabled input,\n &.ant-select-disabled .ant-select-selector {\n cursor: default !important;\n }\n }\n\n .ant-select .ant-select-selector {\n border-radius: 8px !important;\n border: 2px solid var(--dark-1) !important;\n background-color: var(--dark-1) !important;\n .ant-select-selection-search, .ant-select-selection-item {\n display: flex;\n align-items: center;\n font-weight: 500 !important;\n }\n }\n\n .ant-select-focused.ant-select-open {\n box-shadow: none !important;\n\n .ant-select-selector {\n border-color: var(--ant-primary-color) !important;\n }\n }\n\n .ant-select:not(.ant-select-disabled):hover .ant-select-selector,\n .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector {\n border-right-width: 2px !important;\n box-shadow: 0 0 0 4px var(--ant-primary-color-outline) !important;\n }\n\n .ant-form-item-has-error {\n .ant-select:not(.ant-select-disabled):hover .ant-select-selector,\n .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector {\n border-right-width: 2px !important;\n box-shadow: 0 0 0 4px var(--ant-error-color-outline) !important;\n }\n }\n\n .ant-select-lg, .ant-select-lg .ant-select-selector {\n height: 48px !important;\n\n .ant-select-selection-placeholder {\n display: flex;\n align-items: center;\n }\n } */\n\n .ant-select-lg, .ant-select-lg .ant-select-selector {\n height: 56px !important;\n\n .ant-select-selection-placeholder {\n display: flex;\n font-size: 16px;\n align-items: center;\n }\n }\n\n .ant-select-lg.ant-select-multiple {\n min-height: 56px !important;\n .ant-select-selector {\n min-height: 56px !important;\n overflow-y: auto;\n }\n }\n .ant-select-multiple {\n max-height: 128px;\n height: auto !important;\n .ant-select-selector {\n max-height: 128px;\n height: auto !important;\n }\n }\n\n /**\n * ANT-DROPDOWN\n */\n .ant-dropdown,\n .ant-select-dropdown {\n /* border-radius: 2px; */\n border: none;\n\n z-index:1000;\n\n .ant-select-item,\n .ant-dropdown-menu-item {\n font-size: 16px\n }\n\n .ant-dropdown-menu {\n border-radius: 8px;\n }\n }\n\n /**\n * ANT-MODAL\n */\n .ant-modal-root {\n .ant-modal {\n top: 32px;\n\n .ant-modal-content {\n border-radius: 4px;\n background-color: var(--white);\n\n .description {\n background-color: rgba(10, 158, 90, 0.10);\n padding: 9px 15px;\n color: rgb(10, 158, 90);\n }\n\n .modal-row {\n margin-top: 10px;\n }\n .ant-upload.ant-upload-select-picture-card {\n border: 1px solid #d9d9d9;\n }\n .ant-modal-close {\n top: 16px;\n right: 16px;\n\n .ant-modal-close-x {\n .anticon.anticon-close.ant-modal-close-icon {\n color: var(--yellow);\n font-size: 20px;\n }\n }\n }\n\n .ant-modal-header {\n border-bottom: none;\n padding: 48px 96px 0 48px;\n border-radius: 4px 4px 0 0;\n background-color: var(--white);\n\n .ant-modal-title {\n font-size: 20px;\n line-height: 28px;\n font-weight: 600;\n padding-bottom: 16px;\n position: relative;\n\n &::before {\n content: '';\n bottom: 0;\n width: 80px;\n left: 0;\n height: 2px;\n position: absolute;\n background-color: var(--ant-primary-color);\n }\n }\n }\n\n .ant-modal-body {\n .icon-card {\n color: var(--yellow);\n }\n padding: 32px 48px 48px;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100% !important;\n max-width: calc(100% - 32px);\n margin: 0 16px;\n padding-bottom: 54px;\n\n .ant-modal-content {\n .ant-modal-header {\n padding: 32px 64px 0 24px;\n }\n .ant-modal-body {\n padding: 24px 24px 32px;\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .envio-darf-modal {\n .ant-btn {\n font-size: 13px;\n }\n }\n }\n\n .filter-modal {\n .month-select {\n width: 100%;\n height: auto !important;\n min-height: 56px;\n max-height: auto;\n .ant-select-selector {\n height: auto !important;\n min-height: 56px;\n max-height: auto;\n }\n }\n .ant-radio-group .ant-radio-wrapper {\n font-size: 14px;\n .ant-radio {\n margin-right: 0;\n padding-top: 1px;\n .ant-radio-inner {\n width: 20px;\n height: 20px;\n :after {\n top: 50%;\n left: 50%;\n width: 16px;\n height: 16px;\n }\n }\n }\n }\n .ant-checkbox-wrapper {\n align-items: center;\n .ant-checkbox {\n top: 0;\n }\n .ant-checkbox-checked {\n .ant-checkbox-inner {\n border-color: var(--ant-primary-color);\n background-color: var(--ant-primary-color);\n }\n }\n .ant-checkbox-inner {\n width: 20px;\n height: 20px;\n border-color: var(--ghost);\n background-color: var(--ghost);\n :after {\n width: 7px;\n height: 13px;\n top: calc(50% - 2px);\n }\n }\n }\n }\n\n\n /**\n * ANT-TABLE\n */\n .ant-table-wrapper {\n .ant-table-content,\n .ant-table-container {\n font-weight: 100;\n color: var(--gray-3);\n border-color: var(--dark-1);\n }\n\n .ant-checkbox-checked {\n .ant-checkbox-inner {\n border-color: var(--ant-primary-color);\n background-color: var(--ant-primary-color);\n }\n }\n .ant-checkbox-inner {\n border-color: var(--ghost);\n background-color: var(--ghost);\n }\n\n .ant-tag {\n align-items: center;\n display: inline-flex;\n justify-content: center;\n height: 24px;\n padding: 0 10px;\n font-weight: 500;\n border-radius: 12px;\n text-transform: uppercase;\n }\n\n .ant-table-thead > tr > th {\n font-size: 14px;\n font-weight: 300;\n color: var(--gray-2);\n background-color: var(--white);\n border-bottom: 1px solid var(--ghost);\n }\n\n table tr td.ant-table-selection-column,\n table tr th.ant-table-selection-column {\n padding-left: 16px;\n }\n\n .ant-table-tbody > tr > td {\n cursor: pointer;\n border-bottom: 1px solid var(--ghost);\n }\n .ant-table-row-selected > td {\n background-color: #f5f5f5 !important;\n border-bottom: 1px solid var(--dark-3);\n }\n .ant-table-row:hover > td,\n .ant-table-cell-row-hover {\n /* background-color: var(--dark-1) !important; */\n }\n\n .ant-pagination {\n .ant-icon {\n /* color: var(--black); */\n }\n }\n\n .ant-pagination-item {\n min-width: 28px;\n }\n\n .ant-pagination-next, .ant-pagination-prev {\n min-width: 28px;\n }\n\n .ant-pagination-item-link,\n .ant-pagination-disabled:hover .ant-pagination-item-link {\n /* border-color: var(--dark-1); */\n }\n\n .ant-pagination-item a {\n /* color: var(--black); */\n }\n\n .ant-pagination-item-active {\n /* border-color: var(--ant-primary-color); */\n a {\n /* color: var(--ant-primary-color); */\n }\n }\n\n .ant-pagination-item,\n .ant-pagination-item-link,\n .ant-pagination-item-active {\n /* background-color: var(--white); */\n }\n }\n /* .ant-table-title + .ant-table-container {\n border-radius: 12px;\n }\n .ant-table,\n .ant-table-title,\n .ant-table-footer {\n color: var(--velotax-font-color);\n background-color: var(--velotax-background-color);\n }\n .ant-table-tbody > tr.ant-table-row:hover > td,\n .ant-table-tbody > tr > td.ant-table-cell-row-hover,\n .ant-table-tbody > tr.ant-table-placeholder:hover > td {\n background-color: var(--velotax-background-color-ghost);\n }\n\n .ant-table-title {\n font-weight: 600;\n padding: 16px 0;\n }\n\n .ant-table-container {\n border-radius: 12px;\n border: 1px solid var(--velotax-ghost-white);\n background-color: var(--velotax-background-color);\n\n .ant-table-content {\n border-radius: 8px;\n\n overflow-x: auto;\n @media only screen and (min-device-width: 813px) {\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n height: 4px;\n }\n\n &::-webkit-scrollbar-thumb,\n ::-webkit-scrollbar-thumb {\n border-radius: 0;\n background-color: var(--ant-primary-color);\n }\n\n &::-webkit-scrollbar-track,\n ::-webkit-scrollbar-track {\n background-color: var(--velotax-background-color-ghost);\n }\n }\n\n .ant-table-thead {\n .ant-table-cell {\n color: var(--velotax-font-color);\n border-bottom-color: var(--velotax-ghost-white);\n background-color: var(--dark-1);\n &::before {\n display: none;\n }\n\n &:first-child {\n border-radius: 12px 0 0 0;\n }\n\n &:last-child {\n border-radius: 0 12px 0 0;\n }\n }\n }\n\n .ant-table-tbody {\n .ant-table-cell {\n border-bottom-color: var(--velotax-ghost-white);\n }\n .ant-table-row:last-child {\n .ant-table-cell {\n border-bottom: none;\n\n &:first-child {\n border-radius: 0 0 0 12px;\n }\n\n &:last-child {\n border-radius: 0 0 12px 0;\n }\n }\n }\n }\n\n .ant-table-placeholder {\n .ant-table-cell {\n border-bottom: none;\n }\n }\n }\n\n .ant-table-row-error {\n .ant-table-cell {\n border-top: 1px solid;\n border-bottom: 1px solid !important;\n border-color: var(--ant-error-color) !important;\n\n &:first-of-type {\n border-left: 1px solid;\n }\n\n &:last-child {\n border-right: 1px solid;\n }\n }\n\n svg.error-icon {\n display: block;\n margin: 0 auto;\n fill: var(--ant-error-color);\n }\n }\n\n .ant-table-row-error + .ant-table-row-error {\n .ant-table-cell {\n border-top: none;\n }\n }\n } */\n\n body.dark {\n .ant-table-container {\n .ant-table-content {\n .ant-table-thead {\n .ant-table-cell {\n background-color: var(--velotax-background-color-ghost);\n }\n }\n }\n }\n }\n\n /**\n * ANT-DESCRIPTIONS\n */\n .ant-descriptions.ant-descriptions-bordered {\n .ant-descriptions-view {\n border-radius: 8px;\n border-color: var(--velotax-background-color-ghost);\n\n tbody {\n .ant-descriptions-row {\n border-color: var(--velotax-background-color-ghost);\n .ant-descriptions-item-label {\n color: var(--velotax-font-color);\n background-color: var(--light-gray);\n border-color: var(--velotax-background-color-ghost);\n }\n .ant-descriptions-item-content {\n background-color: var(--velotax-background-color);\n color: var(--velotax-font-color) !important;\n }\n }\n }\n }\n }\n\n /**\n * ANT-COLLAPSE\n */\n .ant-collapse,\n .ant-collapse.ant-collapse-borderless {\n background-color: transparent;\n /* background-color: var(--white); verificar */\n .ant-collapse-item {\n border-bottom: none;\n .ant-collapse-header {\n color: var(--velotax-font-color);\n }\n }\n }\n\n /**\n * ANT-LIST\n */\n .ant-list {\n &.ant-list-vertical {\n .ant-list-item {\n .ant-list-item-extra {\n text-align: right;\n }\n }\n }\n }\n .ant-list.ant-list-split {\n .ant-list-item {\n border-bottom-color: var(--velotax-background-color-ghost);\n }\n }\n .ant-list-empty-text {\n opacity: 0.75;\n color: var(--velotax-font-color);\n }\n\n .ant-list-loading {\n .ant-spin-blur:after {\n opacity: 0;\n }\n }\n\n /**\n * ANT-STEPS\n */\n .ant-steps {\n .ant-steps-item {\n &.ant-steps-item-active .ant-steps-item-title {\n color: var(--ant-primary-color) !important;\n }\n &.ant-steps-item-disabled .ant-steps-item-title {\n color: var(--velotax-font-color-ghost) !important;\n }\n .ant-steps-item-title {\n color: var(--velotax-font-color) !important;\n }\n }\n .ant-steps-item-process\n > .ant-steps-item-container\n > .ant-steps-item-tail::after,\n .ant-steps-item-wait\n > .ant-steps-item-container\n > .ant-steps-item-tail::after {\n background: var(--velotax-background-color-ghost);\n }\n }\n\n /**\n * ANTICON-LOADING\n */\n .anticon.anticon-loading.anticon-spin {\n width: 24px;\n height: 24px;\n svg {\n width: 24px;\n height: 24px;\n }\n }\n\n /**\n * ANT-MESSAGE\n */\n .ant-message {\n .ant-message-notice {\n text-align: right;\n max-width: calc(100% - 8px);\n }\n }\n\n /**\n * ANT-PICKER\n */\n .ant-picker {\n display: flex;\n align-items: center;\n border: 2px solid var(--gray-2);\n &:hover {\n border-right-width: 2px !important;\n }\n &.ant-picker-large {\n height: 48px;\n border-radius: 8px;\n }\n &.ant-picker-focused {\n border-right-width: 2px !important;\n border-color: var(--ant-primary-color);\n box-shadow: 0 0 0 4px var(--ant-primary-color-outline);\n }\n &.ant-picker-disabled {\n background-color: var(--light-gray);\n .ant-picker-input input {\n opacity: 0.75;\n }\n }\n .ant-picker-input input {\n color: var(--velotax-font-color);\n }\n }\n .ant-picker-suffix {\n svg {\n fill: var(--velotax-font-color);\n }\n }\n .ant-picker-dropdown {\n .ant-picker-panel {\n border-bottom: none;\n }\n .ant-picker-panel-container {\n * {\n color: var(--velotax-font-color);\n }\n border-radius: 8px;\n background-color: var(--velotax-background-color);\n border: 2px solid var(--velotax-background-color-ghost);\n .ant-picker-header {\n border-bottom-color: var(--velotax-background-color-ghost);\n }\n .ant-picker-body {\n padding: 8px 0;\n .ant-picker-content {\n height: 240px;\n width: 100%;\n .ant-picker-cell-inner {\n height: 25px;\n line-height: 25px;\n border-radius: 6px;\n border: 1px solid var(--velotax-background-color-ghost);\n }\n }\n }\n .ant-picker-footer {\n border-top-color: var(--velotax-background-color-ghost);\n }\n }\n .ant-picker-cell:hover:not(.ant-picker-cell-selected) .ant-picker-cell-inner {\n opacity: 0.45;\n background-color: var(--ghost) !important;\n }\n }\n\n .ant-tooltip {\n padding-left: 40px;\n }\n\n body.dark .ant-picker-dropdown .ant-picker-panel-container {\n box-shadow: 0 3px 6px -4px #6666661E, 0 6px 16px 0 #66666614, 0 9px 28px 8px #6666660C;\n }\n\n .ant-picker-cell-disabled {\n opacity: 0.2;\n }\n\n .sample-payed::after,\n .sample-regular::after,\n .sample-pending::after,\n .sample-not-payed::after,\n .ant-picker-cell-inner.payed::after,\n .ant-picker-cell-inner.regular::after,\n .ant-picker-cell-inner.pending::after,\n .ant-picker-cell-inner.not-payed::after {\n content: \"\";\n top: -4px;\n right: -4px;\n position: absolute;\n width: 16px;\n height: 16px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--ant-primary-color);\n }\n .sample-payed::after,\n .sample-regular::after,\n .ant-picker-cell-inner.payed::after,\n .ant-picker-cell-inner.regular::after {\n background-color: var(--ant-success-color);\n }\n .sample-pending::after,\n .ant-picker-cell-inner.pending::after {\n background-color: var(--ant-error-color);\n }\n .sample-not-payed::after,\n .ant-picker-cell-inner.not-payed::after {\n background-color: var(--ant-warning-color);\n }\n .sample-payed,\n .sample-regular,\n .sample-pending,\n .sample-not-payed {\n position: relative;\n &::after {\n top: 11px;\n left: 0px;\n }\n span {\n margin-left: 24px;\n }\n }\n\n /**\n * ANT-UPLOAD\n */\n .ant-upload-text-icon {\n svg {\n fill: var(--ant-primary-color);\n }\n }\n\n .anticon.anticon-delete {\n svg {\n fill: var(--ant-error-color);\n }\n }\n\n .ant-upload-list-item .ant-upload-list-item-info {\n padding: 8px;\n height: 32px;\n border-radius: 8px;\n }\n .ant-upload-list-item:hover .ant-upload-list-item-info {\n background-color: var(--light-gray);\n }\n\n .progress {\n height: 5px;\n z-index: 1;\n background: var(--ant-primary-color);\n position: fixed;\n -webkit-transition: width 0.6s ease-in-out;\n -moz-transition: width 0.6s ease-in-out;\n -o-transition: width 0.6s ease-in-out;\n transition: width 0.6s ease-in-out;\n }\n\n .xmovel-content.ant-collapse-item {\n border-top: none;\n margin-bottom: 16px;\n .ant-collapse-header {\n margin-bottom: 4px;\n border-radius: 8px !important;\n color: var(--velotax-font-color);\n background-color: var(--velotax-ghost-white) !important;\n }\n .ant-collapse-content > .ant-collapse-content-box {\n padding: 0;\n }\n .ant-descriptions-view {\n table {\n tbody {\n .ant-descriptions-row {\n .ant-descriptions-item-label {\n border-color: var(--velotax-background-color-ghost) !important;\n }\n .ant-descriptions-item-content {\n border-color: var(--velotax-background-color-ghost);\n padding: 8px 16px !important;\n }\n }\n }\n }\n }\n }\n body.dark {\n .xmovel-content.ant-collapse-item {\n .ant-collapse-header {\n background-color: var(--velotax-background-color-ghost) !important;\n }\n .ant-descriptions-view {\n border-color: var(--velotax-background-color-ghost) !important;\n table {\n tbody {\n .ant-descriptions-row {\n border-color: var(--velotax-disabled) !important;\n .ant-descriptions-item-label {\n border-color: var(--velotax-background-color-ghost) !important;\n background-color: var(--velotax-background-color-ghost) !important;\n }\n .ant-descriptions-item-content {\n border-color: var(--velotax-background-color-ghost);\n }\n }\n }\n }\n }\n }\n }\n\n h1.app-title {\n margin: 0;\n padding-bottom: 12px;\n font-weight: 500;\n font-size: 1.5rem;\n line-height: 2rem;\n position: relative;\n letter-spacing: -0.01em;\n color: var(--black);\n\n :before {\n content: \"\";\n position: absolute;\n bottom: 0;\n left: 0;\n width: 80px;\n height: 2px;\n background-color: var(--ant-primary-color);\n }\n }\n\n .add-card {\n height: 150px;\n border-radius: 8px;\n box-shadow: rgb(0 0 0 / 7%) 0px 3px 8px;\n }\n\n .user-menu {\n .icon-card {\n color: var(--yellow);\n }\n ul {\n margin: 0;\n display: flex;\n flex-direction: column;\n background-color: var(--white);\n box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;\n\n > li {\n display: flex;\n column-gap: 8px;\n cursor: pointer;\n align-items: center;\n white-space: nowrap;\n height: 56px;\n font-weight: 600;\n border-radius: 4px;\n color: var(--dark-2);\n padding: 6px 32px 6px 16px;\n transition: color var(--transition-duration-default)\n var(--transition-timing-function-default);\n transition: background-color var(--transition-duration-default)\n var(--transition-timing-function-default);\n\n :last-of-type {\n border-bottom: none;\n }\n\n :hover {\n color: var(--ant-primary-color);\n background-color: rgba(22, 52, 255, 0.06);\n }\n\n &.logout {\n :hover {\n color: var(--ant-error-color);\n }\n }\n\n svg {\n cursor: pointer;\n width: 1.25rem;\n height: 1.25rem;\n margin-right: 2px;\n\n :not(.stroke-color) path {\n transition: fill var(--transition-duration-default)\n var(--transition-timing-function-default);\n }\n\n &.stroke-color path {\n stroke-width: 1.6px;\n transition: stroke var(--transition-duration-default)\n var(--transition-timing-function-default);\n }\n }\n }\n }\n }\n\n .tableFilter {\n border: none !important;\n box-shadow: none !important;\n font-weight: 500 !important;\n color: #8b8b8b !important;\n transition: .3s !important;\n }\n .tableFilter:hover{\n color: var(--ant-primary-color) !important;\n transition: .3s !important;\n }\n .tableFilter svg {\n color: #8b8b8b !important;\n fill: #8b8b8b !important;\n transition: .3s !important;\n }\n .tableFilter svg:hover {\n color: var(--ant-primary-color) !important;\n fill: var(--ant-primary-color) !important;\n transition: .3s !important;\n }\n\n .updatePatrimonioIcon {\n color: #8b8b8b !important;\n transition: .3s !important;\n }\n\n .updatePatrimonioIcon:hover {\n color: var(--ant-primary-color) !important;\n transition: .3s !important;\n }\n\n .defaultIconSize {\n width: 18px;\n height: 18px;\n }\n .actionColumn {\n width: 70px;\n }\n\n .modalNotasCorretagem .ant-modal-body {\n padding-top: 1rem !important;\n }\n \n .assinaturasModal > .ant-modal-content > .ant-modal-body {\n padding-top: 0 !important;\n }\n .userPlanModal {\n width: 100%;\n max-width: 600px;\n }\n\n .last-update {\n display: flex;\n margin-top: 32px;\n align-items: center;\n font-size: 0.75rem;\n line-height: 1.5rem;\n color: var(--ant-primary-color);\n .button-refresh-wallet {\n width: 20px;\n height: 20px;\n padding: 4px;\n box-shadow: none;\n margin-right: 8px;\n border-radius: 4px;\n border: none !important;\n background-color: #FBC1051F !important;\n color: var(--ant-primary-color) !important;\n svg {\n width: 10px !important;\n height: 10px !important;\n min-width: 10px !important;\n min-height: 10px !important;\n * {\n stroke: var(--ant-primary-color) !important;\n }\n }\n }\n .button-refresh-wallet:hover {\n background-color: #c0d4f9;\n transition: .3s;\n }\n }\n\n .MuiTextField-root {\n width: 100%;\n }\n .MuiInput-root {\n width: 100%;\n }\n\n .modalProventos {\n width: calc(100% - 128px) !important;\n }\n\n @media only screen and (max-device-width: 812px) {\n .modalProventos {\n width: 100% !important;\n }\n }\n\n .paymentModal > .ant-modal-content > .ant-modal-header {\n padding: 64px 88px 32px !important;\n }\n\n @media (max-width: 768px) {\n .paymentModal > .ant-modal-content > .ant-modal-header {\n padding: 64px 32px 32px !important;\n }\n }\n\n .recharts-default-legend {\n display: flex !important;\n flex-direction: column !important;\n transform: translateY(1.5rem) !important;\n }\n \n .recharts-layer > text {\n font-weight: 600;\n font-size: 15px;\n }\n\n .check {\n width: 24px;\n height: 24px;\n fill: var(--ant-primary-color);\n }\n .cross {\n width: 24px;\n height: 24px;\n fill: var(--gray-1);\n }\n\n .patrimonio-collapse {\n padding: 48px;\n margin-top: 2rem;\n margin-left: -48px;\n width: calc(100% + 96px);\n border-radius: 0 0 8px 8px;\n background-color: var(--white);\n & > .ant-collapse {\n border: none;\n }\n & > .ant-collapse > .ant-collapse-item.ativos-categoria {\n margin-bottom: 48px;\n &:last-of-type {\n margin-bottom: 0;\n }\n & > .ant-collapse-header {\n padding: 0;\n align-items: center;\n & > .ant-collapse-header-text {\n display: flex;\n align-items: center;\n }\n .ant-collapse-arrow {\n right: 0;\n }\n h2 {\n margin: 0 16px 0 0;\n font-weight: 700;\n font-size: 1.125rem;\n line-height: 1.5rem;\n color: var(--ant-primary-color);\n }\n .collapse-title-divider {\n flex-grow: 1;\n display: block;\n margin: 0;\n border-bottom: 1px solid var(--ghost);\n width: 20px;\n padding: 0 2rem;\n }\n .collapse-title-hidden {\n width: 32px;\n height: 24px;\n display: block;\n visibility: hidden;\n }\n }\n & > .ant-collapse-content {\n border: none;\n background-color: transparent;\n & > .ant-collapse-content-box {\n padding: 1rem 0 0 0;\n & > .ant-collapse {\n border: none;\n }\n & > div {\n font-size: 13px;\n }\n }\n }\n }\n\n .progress_container {\n width: 100%;\n background-color: #ffffff;\n height: 15px;\n position: relative;\n border-radius: 50px;\n }\n\n .loading_bar {\n height: 100%;\n background-color: var(--yellow);\n border-top-left-radius: 50px;\n border-bottom-left-radius: 50px;\n display: flex; /* Para que os elementos dentro da barra de progresso se alinhem corretamente */\n align-items: center; /* Para centralizar verticalmente o texto */\n justify-content: center; /* Para alinhar o texto à esquerda dentro da barra de progresso */\n padding-left: 10px; /* Adicione o padding necessário para dar espaço ao texto na barra */\n }\n\n .progress_container_text_align_center {\n /* Estilos para o texto (se necessário) */\n font-size: 11px;\n font-weight: 700;\n white-space: nowrap;\n position: absolute;\n top: -1px;\n left: 0;\n width: 100%;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .patrimonio-collapse {\n padding: 24px;\n margin-top: 2rem;\n border-radius: 0;\n margin-left: -24px;\n width: calc(100% + 48px);\n & > .ant-collapse > .ant-collapse-item.ativos-categoria {\n margin-bottom: 48px;\n & > .ant-collapse-header {\n & > .ant-collapse-header-text {\n display: flex;\n align-items: center;\n h2 {\n font-size: 1rem;\n line-height: 1.25rem;\n letter-spacing: -1px;\n }\n }\n }\n }\n .progress_container_text_align_center {\n top: -2px;\n }\n }\n }\n\n .patrimonioMessages {\n margin-top: 16px;\n font-weight: 400;\n padding-top: 16px;\n line-height: 1rem;\n font-size: 0.75rem;\n color: var(--gray-2);\n border-top: 1px solid var(--ghost);\n li {\n padding-left: 16px;\n margin-bottom: 6px;\n position: relative;\n .anticon-info-circle {\n left: 0;\n top: 1px;\n position: absolute;\n color: var(--gray-2);\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n iframe[title^=\"Botão para abrir a janela\"] {\n display: none;\n }\n }\n\n .operationsModal .ant-modal-header, .operationsModal .ant-modal-body {\n @media only screen and (max-device-width: 670px) {\n padding: 2rem 1rem 1rem 1rem !important;\n }\n }\n\n .operationsCollapse{\n .ant-collapse-header{\n padding: 2rem 0 1rem 0 !important;\n }\n .ant-collapse-content {\n padding: 0 !important;\n }\n .ant-collapse-content-box {\n padding: 0 !important;\n }\n }\n\n .corretoras-allcheck > .ant-checkbox > .ant-checkbox-inner::after {\n width: 8px;\n height: 8px;\n top: 50%;\n }\n\n .corretoras-allcheck > .ant-checkbox-checked > .ant-checkbox-inner::after {\n width: 7px;\n height: 13px;\n top: calc(50% - 2px);\n }\n`;\n","import axios from \"axios\";\n\nexport const chatApi = axios.create({\n baseURL:\n process.env.REACT_APP_AI_DASHBOARD_API_URL || \"http://localhost:4000\",\n});\n","import styled from \"styled-components\";\n\nexport const ChatButton = styled.div`\n position: fixed;\n width: 3.75rem;\n height: 3.75rem;\n right: 0.625rem;\n bottom: 0.625rem;\n z-index: 100;\n display: flex;\n cursor: pointer;\n user-select: none;\n border-radius: 2rem;\n align-items: center;\n justify-content: center;\n transition: 0.3s filter;\n background-color: #1634ff;\n :hover {\n filter: contrast(1.2);\n }\n :active {\n filter: contrast(1.5);\n }\n\n svg {\n width: 2rem;\n height: 2rem;\n stroke: white;\n margin-top: -0.25rem;\n }\n\n &.hide {\n display: none;\n }\n\n @media (max-device-width: 812px) {\n display: none;\n }\n`;\n\nexport const ChatWindow = styled.div`\n left: unset;\n right: 0.875rem;\n border: none;\n bottom: 80px;\n width: 458px;\n height: 85dvh;\n display: flex;\n position: fixed;\n user-select: none;\n max-height: 824px;\n border-radius: 8px;\n z-index: 2147483647;\n flex-direction: column;\n background-color: white;\n box-shadow: rgba(150, 150, 150, 0.2) 0 10px 30px 0,\n rgba(150, 150, 150, 0.2) 0 0 0 1px;\n\n &.hide,\n &.hidden {\n display: none;\n }\n\n .chat-header {\n height: 80px;\n padding: 1rem;\n display: flex;\n align-items: center;\n border-bottom: 1px solid #f0f0f0;\n\n h1 {\n color: #212121;\n }\n .chat-icon {\n display: flex;\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 1.25rem;\n align-items: center;\n justify-content: center;\n background-color: #000058;\n\n svg {\n width: 1rem;\n height: 1.5rem;\n margin-left: 2px;\n }\n }\n\n .reset-icon,\n .close-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .reset-icon {\n cursor: pointer;\n margin-left: auto;\n margin-right: 0.5rem;\n transition: 0.3s opacity, 0.3s transform;\n :hover {\n opacity: 0.5;\n }\n svg {\n width: 1.25rem;\n height: 1.25rem;\n path {\n stroke: #212121;\n }\n }\n }\n .close-icon {\n cursor: pointer;\n transition: 0.3s opacity, 0.3s transform;\n :hover {\n opacity: 0.5;\n }\n svg {\n width: 2rem;\n height: 2rem;\n fill: #212121;\n }\n }\n\n h1 {\n font-size: 1.125rem;\n margin: 0 0 0 0.75rem;\n }\n }\n\n .chat-body {\n display: flex;\n flex: 1 1 100%;\n overflow-y: auto;\n scroll-behavior: smooth;\n\n .chat-body-conversation {\n width: 100%;\n flex: 1 1 0%;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n padding: 1rem 1rem 0 1rem;\n\n .chat-body-white-space {\n width: 100%;\n min-height: 1rem;\n }\n\n .chat-msg {\n :first-of-type {\n margin-top: 0;\n }\n &.chat-msg-user {\n padding-right: 0;\n padding-left: 2.5rem;\n justify-content: flex-end;\n .chat-mgs-text {\n color: white;\n background-color: #2573e2;\n border-radius: 1.25rem 1.25rem 0.25rem 1.25rem;\n }\n }\n display: flex;\n margin-top: 1.25rem;\n padding-right: 2rem;\n align-items: flex-end;\n .chat-msg-icon {\n display: flex;\n width: 2rem;\n height: 2rem;\n min-width: 2rem;\n min-height: 2rem;\n border-radius: 1rem;\n align-items: center;\n margin-right: 0.5rem;\n justify-content: center;\n background-color: #000058;\n &.error {\n margin: 0 0.5rem 0 0;\n background-color: #ff4d4f;\n svg {\n margin: 0;\n fill: white;\n width: 1.5rem;\n }\n }\n svg {\n width: 0.75rem;\n height: 1.125rem;\n margin-left: 0.125rem;\n }\n }\n .chat-mgs-text {\n color: #212121;\n text-align: left;\n user-select: text;\n font-size: 0.875rem;\n line-height: 1.25rem;\n padding: 0.875rem 1rem;\n background-color: #f0f0f0;\n border-radius: 1.25rem 1.25rem 1.25rem 0.25rem;\n\n ol,\n ul {\n list-style-position: inside;\n }\n\n .anticon-loading,\n .anticon-loading svg {\n width: 1rem;\n height: 1rem;\n color: #1634ff;\n }\n }\n }\n }\n }\n\n .chat-footer {\n display: flex;\n margin-top: auto;\n flex-direction: column;\n justify-content: flex-end;\n border-top: 1px solid #f0f0f0;\n .chat-input-container {\n display: flex;\n align-items: flex-end;\n textarea {\n flex-grow: 1;\n padding: 0.75rem;\n min-height: 2rem;\n max-height: 10rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n margin: 0;\n border: none;\n resize: none;\n overflow-y: auto;\n border-radius: 0;\n pointer-events: auto;\n background-color: white;\n overflow-wrap: break-word;\n tab-size: 4;\n text-align: start;\n border-bottom-left-radius: 0.5rem;\n display: flex;\n color: #212121;\n }\n button {\n cursor: pointer;\n white-space: nowrap;\n align-items: center;\n display: inline-flex;\n justify-content: center;\n background-color: transparent;\n width: 2.25rem;\n height: 2.25rem;\n border-radius: 0.375rem;\n margin: 0.75rem 0.75rem 1rem;\n background-color: hsla(240, 5%, 96%, 0.9);\n :hover {\n filter: opacity(0.8);\n }\n :disabled {\n cursor: default;\n filter: grayscale(1) opacity(0.8);\n background-color: hsla(240, 5%, 96%, 0.9);\n }\n svg {\n fill: #1634ff;\n }\n }\n }\n }\n @media (max-device-width: 812px) {\n display: none;\n }\n`;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M137.21 68.556L0.0999756 0V66.1133C0.0999756 75.9813 5.58003 84.8533 14.41 89.2653L49.74 106.935L74.09 96.1226L23.6 70.8773C21.79 69.9693 20.66 68.144 20.66 66.1133V33.2666L128.02 86.9453C130.75 88.3106 130.98 90.828 130.96 91.8466C130.93 92.864 130.57 95.3626 127.77 96.588L68.55 122.499L68.53 122.504L51.34 130.025V130.024L32.5 138.268C23.08 142.389 16.99 151.697 16.99 161.983V226.865L115.29 182.187C124.51 177.997 130.46 168.748 130.46 158.621V141.609L109.9 150.739V158.621C109.9 160.704 108.68 162.608 106.78 163.469L37.55 194.937V161.983C37.55 159.867 38.8 157.952 40.74 157.103L136.01 115.423C145.31 111.355 151.25 102.523 151.51 92.372C151.77 82.2226 146.29 73.0973 137.21 68.556Z\",\n fill: \"#FFFFFD\"\n});\n\nfunction SvgVeloicon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 152,\n height: 227,\n viewBox: \"0 0 152 227\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgVeloicon);\nexport default __webpack_public_path__ + \"static/media/veloicon.2ac5c010.svg\";\nexport { ForwardRef as ReactComponent };","import clsx from \"clsx\";\nimport DOMPurify from \"dompurify\";\nimport { BsX } from \"react-icons/bs\";\nimport { FaPaperPlane } from \"react-icons/fa\";\nimport { GrPowerReset } from \"react-icons/gr\";\nimport { MdErrorOutline } from \"react-icons/md\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { IoChatbubblesOutline } from \"react-icons/io5\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { chatApi } from \"../../services/chatApi\";\nimport { ChatButton, ChatWindow } from \"./styles\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { ReactComponent as VelotaxIcon } from \"../../assets/velotax/veloicon.svg\";\n\ninterface Msg {\n user: \"velotax\" | \"user\";\n text: string;\n error?: boolean;\n}\n\ninterface APIChatMessage {\n userMessage: string;\n botResponse: string;\n formattedGptAnswer: string;\n createdAt: Date;\n}\n\nconst KEY = \"velochat.thread_id\";\nconst KEY_TIMESTAMP = \"velochat.timestamp\";\nconst USER_MESSAGE_MAX_LENGTH = 200;\nconst defaultMsg: Msg = {\n user: \"velotax\",\n text: \"Olá! Eu sou o assistente virtual da Velotax. Como posso te ajudar?\",\n};\n\nexport const ChatGPT = () => {\n const storage = localStorage;\n const { signed, user } = useAuth();\n const chatBodyRef = useRef(null);\n const textareaRef = useRef(null);\n\n const [msg, setMsg] = useState(\"\");\n const [show, setShow] = useState(false);\n const [loading, setLoading] = useState(false);\n const [scrolled, setScrolled] = useState(false);\n const [firstLoading, setFirstLoading] = useState(false);\n const [msgs, setMsgs] = useState([defaultMsg]);\n\n chatApi.defaults.headers.common[\"Authorization\"] = `Bearer ${user?.token}`;\n\n const hide =\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n\n const disabled =\n !msg.replace(/\\s/g, \"\").length || msg.length > USER_MESSAGE_MAX_LENGTH;\n\n const resetChat = () => {\n setMsg(\"\");\n setMsgs([defaultMsg]);\n storage.removeItem(KEY);\n storage.removeItem(KEY_TIMESTAMP);\n };\n\n const scrollToBottom = useCallback(() => {\n setTimeout(() => {\n chatBodyRef.current?.scrollTo({\n top: chatBodyRef.current?.scrollHeight,\n });\n }, 50);\n }, []);\n\n const after24H = useCallback(() => {\n try {\n const timestamp = storage.getItem(KEY_TIMESTAMP);\n if (\n timestamp &&\n new Date().getTime() >\n new Date(Number(timestamp)).getTime() + 24 * 60 * 60 * 1000\n ) {\n storage.removeItem(KEY);\n return true;\n }\n return false;\n } catch (err) {\n console.log(err);\n return true;\n }\n }, [storage]);\n\n const loadMsgs = useCallback(async () => {\n const threadId = storage.getItem(KEY);\n if (!threadId) return;\n if (after24H()) return;\n try {\n setFirstLoading(true);\n const { data } = await chatApi.get(\"/chat/user\", {\n params: { threadId },\n });\n if (data?.length > 0) {\n setMsgs([\n defaultMsg,\n ...data.reduce(\n (acc, cur) => [\n ...acc,\n { user: \"user\", text: cur.userMessage } as Msg,\n {\n user: \"velotax\",\n text: cur.formattedGptAnswer\n ? DOMPurify.sanitize(cur.formattedGptAnswer)\n : cur.botResponse,\n } as Msg,\n ],\n [] as Msg[]\n ),\n ]);\n }\n } catch {\n } finally {\n setFirstLoading(false);\n scrollToBottom();\n }\n }, [scrollToBottom, storage, after24H]);\n\n const sendMsg = async (text: string) => {\n setMsgs((msgs) => [...msgs, { user: \"user\", text }]);\n setLoading(true);\n scrollToBottom();\n setTimeout(() => setMsg(\"\"), 100);\n try {\n const threadId = storage.getItem(KEY);\n const { data } = await chatApi.post(\"/chat/user\", {\n userMessage: text,\n threadId,\n });\n setLoading(false);\n const now = new Date();\n storage.setItem(KEY, data.threadId);\n storage.setItem(\n KEY_TIMESTAMP,\n String(\n new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime()\n )\n );\n setMsgs((msgs) => [\n ...msgs,\n {\n user: \"velotax\",\n text: data.formattedGptAnswer\n ? DOMPurify.sanitize(data.formattedGptAnswer)\n : data.botResponse,\n },\n ]);\n } catch {\n setLoading(false);\n setMsgs((msgs) => [\n ...msgs,\n {\n error: true,\n user: \"velotax\",\n text: \"Não conseguimos responder sua mensagem. Tente novamente mais tarde!\",\n },\n ]);\n } finally {\n scrollToBottom();\n }\n };\n\n useEffect(() => {\n if (signed) {\n loadMsgs();\n }\n }, [signed, loadMsgs]);\n\n return signed ? (\n <>\n {\n setShow((show) => {\n if (!show && !scrolled) {\n setScrolled(true);\n scrollToBottom();\n }\n return !show;\n });\n }}\n >\n \n \n \n
\n
\n \n
\n

Assistente Velotax

\n
\n \n
\n
setShow(false)}>\n \n
\n
\n
\n
\n {firstLoading ? (\n <>\n ) : (\n msgs.map(({ user, text, error }, i) =>\n user === \"velotax\" ? (\n
\n \n {error ? : }\n \n \n
\n ) : (\n
\n {text}\n
\n )\n )\n )}\n {(loading || firstLoading) && (\n
\n
\n \n \n \n \n \n \n
\n
\n )}\n
\n
\n
\n
\n
\n {\n setMsg(e.target.value || \"\");\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = \"auto\";\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n }}\n onKeyDown={(e) => {\n if (e.code === \"Enter\" && !disabled) {\n sendMsg(msg);\n }\n }}\n />\n {\n if (!disabled) {\n sendMsg(msg);\n }\n }}\n >\n \n \n
\n
\n \n \n ) : (\n <>\n );\n};\n","import { createGlobalStyle } from \"styled-components\";\n\nexport default createGlobalStyle`\n .ant-drawer.modal-drawer.drawer-closable {\n .ant-drawer-header-title {\n flex-direction: row-reverse;\n }\n }\n .ant-drawer.operationsModal {\n .ant-drawer-body {\n padding: 16px;\n }\n .ant-drawer-title {\n :after {\n display: none;\n }\n }\n }\n .ant-drawer.modal-drawer.permissoes-acesso-modal {\n .ant-drawer-body {\n padding: 0;\n table {\n .ant-table-cell {\n width: 20%;\n font-size: 11px;\n }\n .ant-table-cell:first-of-type {\n width: 40%;\n font-size: 12px;\n padding: 8px 0 8px 8px;\n }\n .ant-table-cell:not(:first-of-type) {\n padding: 8px 4px;\n }\n }\n }\n }\n .ant-drawer.modal-drawer {\n color: var(--velotax-font-color);\n .ant-drawer-content-wrapper {\n .ant-drawer-content {\n .ant-drawer-wrapper-body {\n .ant-drawer-header {\n .ant-drawer-header-title {\n height: 32px;\n .ant-drawer-close {\n margin: 0;\n }\n .ant-drawer-title {\n padding: 8px 0;\n font-size: 18px;\n font-weight: 600;\n position: relative;\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n width: 80px;\n height: 2px;\n background-color: var(--ant-primary-color);\n }\n }\n }\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { AuthProvider } from \"./AuthContext\";\nimport { ClientsProvider } from \"./ClientsContext\";\n\nconst ContextWrapper: React.FC = ({ children }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default ContextWrapper;\n","import React from \"react\";\nimport { Result, Row } from \"antd\";\nimport { ErrorBoundary } from \"@rollbar/react\";\nimport Button from \"../Button\";\nimport { Container } from \"../../pages/PageNotFound\";\nimport { ReactComponent as XPLogo } from \"../../assets/xp.svg\";\n\nconst FallbackUI = () => (\n \n }\n title=\"Erro inesperado\"\n subTitle=\"Um erro inesperado ocorreu\"\n extra={\n \n (window.location.href = \"/\")}\n >\n Volte para o app\n \n \n }\n />\n \n);\n\nconst ErrorBoundaryRollbar: React.FC = ({ children }) => (\n {children}\n);\n\nexport default ErrorBoundaryRollbar;\n","import { ConfigProvider } from \"antd\";\nimport { Provider } from \"@rollbar/react\";\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport Routes from \"./routes\";\nimport GlobalStyles from \"./styles/global\";\nimport { ChatGPT } from \"./components/ChatGPT\";\nimport DrawerModalStyles from \"./styles/drawer-modal\";\nimport ContextWrapper from \"./contexts/ContextWrapper\";\nimport ErrorBoundaryRollbar from \"./components/ErrorBoundary\";\nimport ptBR from \"antd/lib/locale/pt_BR\";\n\nfunction App() {\n const { host } = window.location;\n const isDev = host.includes(\"localhost\") || host.includes(\"dev\");\n const rollbarConfig = {\n accessToken: \"30ca0272bd6e40e0bd69c225fa9e2c64\",\n captureUncaught: true,\n captureUnhandledRejections: true,\n payload: {\n environment: isDev ? \"development\" : \"production\",\n },\n };\n\n return (\n \n \n \"Nenhum dado encontrado\"}\n >\n \n \n \n \n \n \n {/* */}\n \n \n \n \n \n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport \"antd/dist/antd.variable.min.css\";\nimport \"react-credit-cards/es/styles-compiled.css\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}