@credithub/harlan-components 1.69.4 → 1.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,3 +17,4 @@ export type { PefinRefinSerasaResponse, RefinSerasaState } from '@/@types/domain
17
17
  export type { ScoreResponse, ScoreState } from '@/@types/domain/scoreTypes';
18
18
  export type { RegistroVeiculo, VeiculosState } from '@/@types/domain/veiculosTypes';
19
19
  export type { SCRState } from '@/@types/domain/scrTypes';
20
+ export type { ScoreSerasaState } from '@/@types/domain/scoreTypes';
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ interface GaugeScoreProps {
3
+ score: number;
4
+ }
5
+ declare const GaugeScore: React.FC<GaugeScoreProps>;
6
+ export default GaugeScore;
@@ -0,0 +1,17 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ import React, { useMemo } from "react";
6
+ import styled, { css } from "styled-components";
7
+ import GaugeChart from 'react-gauge-chart';
8
+ import { uniqueId } from "underscore";
9
+ var Wrapper = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (props) { return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n #gauge-chart-", " .needle {\n display: none;\n }\n "], ["\n #gauge-chart-", " .needle {\n display: none;\n }\n "])), props._id); });
10
+ var GaugeScore = function (_a) {
11
+ var score = _a.score;
12
+ var id = useMemo(function () { return uniqueId(); }, []);
13
+ return (React.createElement(Wrapper, { _id: id },
14
+ React.createElement(GaugeChart, { id: "gauge-chart-".concat(id), nrOfLevels: 4, colors: ["#FF5F6D", "#FFC371", "#5fff64"], textColor: "#000000", percent: score / 1000, formatTextValue: function (_value) { return score + ' / 1000'; }, fontSize: "48px" })));
15
+ };
16
+ export default GaugeScore;
17
+ var templateObject_1, templateObject_2;
@@ -1,6 +1,7 @@
1
1
  import { ImoveisConsultaResponse, PefinRefinSerasaResponse, RefinBoaVistaResponse, ScoreResponse } from '../@types/domain';
2
2
  import React, { PropsWithChildren } from 'react';
3
3
  import { ParsedResponse } from './webservice';
4
+ import { ScoreSerasaResponse } from '@/@types/domain/scoreTypes';
4
5
  type QueryType<DataType = any> = {
5
6
  consultaRealizada: boolean;
6
7
  data?: ParsedResponse<DataType> | null;
@@ -12,6 +13,7 @@ type ConsultasComplementaresProps = {
12
13
  refinSerasa: QueryType<PefinRefinSerasaResponse>;
13
14
  refinBoaVista: QueryType<RefinBoaVistaResponse>;
14
15
  scoreBoaVista: QueryType<ScoreResponse>;
16
+ scoreSerasa: QueryType<ScoreSerasaResponse>;
15
17
  imoveis: QueryType<ImoveisConsultaResponse>;
16
18
  };
17
19
  export type ConsultasComplementaresContextProps = {
@@ -22,6 +22,9 @@ export var ConsultasComplementaresProvider = function (_a) {
22
22
  consultaRealizada: false,
23
23
  dataBase: undefined
24
24
  },
25
+ scoreSerasa: {
26
+ consultaRealizada: false
27
+ },
25
28
  hasCredits: hasCredits
26
29
  }), consultasComplementares = _e[0], setConsultasComplementares = _e[1];
27
30
  return (React.createElement(ConsultasComplementaresContext.Provider, { value: {
@@ -46,6 +46,11 @@ declare const useCardsAndProducts: ({ finderResponse }: {
46
46
  data?: import("../../webservice").ParsedResponse<import("@/@types/domain/scoreTypes").ScoreResponse> | null | undefined;
47
47
  dataBase?: string;
48
48
  };
49
+ scoreSerasa: {
50
+ consultaRealizada: boolean;
51
+ data?: import("../../webservice").ParsedResponse<import("@/@types/domain/scoreTypes").ScoreSerasaResponse> | null | undefined;
52
+ dataBase?: string;
53
+ };
49
54
  imoveis: {
50
55
  consultaRealizada: boolean;
51
56
  data?: import("../../webservice").ParsedResponse<import("@/@types/domain/imoveisTypes").ImoveisConsultaResponse> | null | undefined;
@@ -1,11 +1,5 @@
1
+ import { ConsultasComplementaresContextProps } from '../../../components/consultasComplementares';
1
2
  export declare const getField: (path: string, response?: Document, formatter?: (value: string | number) => string) => string;
2
3
  export declare const getFieldRfb: (path: string, response?: Document | null, formatter?: (value: string | number) => string) => string;
3
4
  export declare const getAtividadesEconomicasSecundarias: (response?: Document | null) => string[];
4
- export declare const getProductsPrices: (isPF: boolean) => {
5
- refinBoaVista: number;
6
- scoreBoaVista: number;
7
- refinSerasa: number;
8
- veiculos: number;
9
- scr: number;
10
- imoveis: number;
11
- };
5
+ export declare const getProductsPrices: (isPF: boolean) => Record<keyof ConsultasComplementaresContextProps["consultasComplementares"], number>;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ interface ConsultaScoreSerasaProps {
3
+ documento: string;
4
+ }
5
+ declare const ConsultaScoreSerasa: React.FC<ConsultaScoreSerasaProps>;
6
+ export default ConsultaScoreSerasa;
@@ -0,0 +1,81 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import ScoreBoaVistaIcon from '../../assets/icones/scoreBoaVista';
13
+ import { useGlobalData } from '../../contexts/globalDataContext';
14
+ import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
15
+ import AddItemField from '../common/addItem';
16
+ import { ConsultasComplementaresContext } from '../consultasComplementares';
17
+ import { Result, ResultContent } from '../interface/result';
18
+ import StatusMessage from '../interface/statusMessage';
19
+ import Section from '../section';
20
+ import { RequestStatus, useQuery } from '../webservice';
21
+ import { isDocumentoPF } from '../../utils/string';
22
+ var ConsultaScoreSerasa = function (_a) {
23
+ var _b, _c, _d, _e, _f, _g, _h;
24
+ var documento = _a.documento;
25
+ var consultasComplementaresContext = useContext(ConsultasComplementaresContext);
26
+ var setData = useGlobalData().setData;
27
+ var _j = useState(false), dataUpdated = _j[0], setDataUpdated = _j[1];
28
+ var _k = useQuery("SELECT FROM 'ScoreSerasa'.'Consulta'", { documento: documento }, (_c = (_b = consultasComplementaresContext === null || consultasComplementaresContext === void 0 ? void 0 : consultasComplementaresContext.consultasComplementares) === null || _b === void 0 ? void 0 : _b.scoreSerasa) === null || _c === void 0 ? void 0 : _c.consultaRealizada), response = _k.response, isLoading = _k.isLoading, error = _k.error, loadingProgress = _k.loadingProgress;
29
+ var scoreData = (_d = response === null || response === void 0 ? void 0 : response.document) === null || _d === void 0 ? void 0 : _d.dados;
30
+ var scoreRef = useRef(null);
31
+ var consultaRealizada = useMemo(function () {
32
+ var _a, _b;
33
+ return (_b = (_a = consultasComplementaresContext === null || consultasComplementaresContext === void 0 ? void 0 : consultasComplementaresContext.consultasComplementares) === null || _a === void 0 ? void 0 : _a.scoreSerasa) === null || _b === void 0 ? void 0 : _b.consultaRealizada;
34
+ }, [
35
+ (_f = (_e = consultasComplementaresContext === null || consultasComplementaresContext === void 0 ? void 0 : consultasComplementaresContext.consultasComplementares) === null || _e === void 0 ? void 0 : _e.scoreSerasa) === null || _f === void 0 ? void 0 : _f.consultaRealizada
36
+ ]);
37
+ var description = ((_g = scoreData === null || scoreData === void 0 ? void 0 : scoreData.score) === null || _g === void 0 ? void 0 : _g.score_calculado) == 'S'
38
+ ? "Score: ".concat((_h = scoreData === null || scoreData === void 0 ? void 0 : scoreData.score) === null || _h === void 0 ? void 0 : _h.pontuacao)
39
+ : 'Não há informação de score disponível para este documento.';
40
+ useEffect(function () {
41
+ var _a;
42
+ var topOffset = ((_a = scoreRef.current) === null || _a === void 0 ? void 0 : _a.offsetTop) || 0;
43
+ window.scrollTo({
44
+ top: topOffset,
45
+ behavior: 'smooth'
46
+ });
47
+ }, [consultaRealizada]);
48
+ useEffect(function () {
49
+ if (!consultaRealizada && !dataUpdated && response && response.document) {
50
+ var scoreData_1 = { scoreSerasa: response.document };
51
+ setData(function (prevState) { return (__assign(__assign({}, prevState), { scoreSerasa: scoreData_1 })); });
52
+ setDataUpdated(true);
53
+ }
54
+ }, [response, consultaRealizada, dataUpdated, setData]);
55
+ return consultaRealizada ? (React.createElement(Section, { ref: scoreRef, ctx: {
56
+ type: isLoading
57
+ ? RequestStatus.Loading
58
+ : error
59
+ ? RequestStatus.Error
60
+ : RequestStatus.Success,
61
+ error: error || null,
62
+ response: undefined,
63
+ document: response === null || response === void 0 ? void 0 : response.document,
64
+ refetch: function () { },
65
+ Section: Section,
66
+ progress: loadingProgress
67
+ }, title: "Score Serasa", subtitle: "Consulta de Score", icon: ScoreBoaVistaIcon, description: !error && (React.createElement(StatusMessage, { type: scoreData ? 'success' : 'default' }, description)), onSuccess: function () {
68
+ var _a, _b, _c;
69
+ return (React.createElement(Result, null, scoreData && (React.createElement(ResultContent, { desktop: "repeat(4, 1fr)", tablet: "repeat(3, 1fr)", mobile: "1fr 1fr" },
70
+ React.createElement(AddItemField, { name: "Score", value: String((_a = scoreData.score) === null || _a === void 0 ? void 0 : _a.pontuacao) }),
71
+ React.createElement(AddItemField, { name: "Probabilidade de Inadimpl\u00EAncia", value: "".concat((_b = scoreData.score) === null || _b === void 0 ? void 0 : _b.probabilidade_inadimplencia, "%") }),
72
+ React.createElement(AddItemField, { name: "An\u00E1lise", value: "DE CADA 100 ".concat(isDocumentoPF(documento) ? 'PESSOAS' : 'EMPRESAS', " CLASSIFICADAS NESTA CLASSE DE SCORE, \u00C9 PROV\u00C1VEL QUE ").concat(Math.floor(Number((_c = scoreData.score) === null || _c === void 0 ? void 0 : _c.probabilidade_inadimplencia)), " APRESENTEM D\u00C9BITOS NO MERCADO NOS PR\u00D3XIMOS 6 MESES.") })))));
73
+ }, isError: function (err) { return ({
74
+ children: React.createElement(React.Fragment, null),
75
+ description: (React.createElement(StatusMessage, { type: "error" },
76
+ "Erro ao realizar a consulta: ",
77
+ err.message)),
78
+ variant: 'error'
79
+ }); } })) : null;
80
+ };
81
+ export default ConsultaScoreSerasa;
@@ -17,6 +17,7 @@ import ConsultaSCR from './components/scr/scr';
17
17
  import { GlobalDataProvider } from './contexts/globalDataContext';
18
18
  import GlobalStyle from './styles/globalStyle';
19
19
  import theme from './styles/theme';
20
+ import ConsultaScoreSerasa from './components/scoreSerasa/scoreSerasa';
20
21
  Chart.register.apply(Chart, registerables);
21
22
  var Wrapper = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n font-family: 'Open Sans Condensed';\n display: flex;\n flex-direction: column;\n gap: 20px;\n margin-bottom: 20px;\n\n * {\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n }\n\n @media print {\n @page {\n size: auto;\n margin: 5mm;\n }\n }\n"], ["\n font-family: 'Open Sans Condensed';\n display: flex;\n flex-direction: column;\n gap: 20px;\n margin-bottom: 20px;\n\n * {\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n }\n\n @media print {\n @page {\n size: auto;\n margin: 5mm;\n }\n }\n"])));
22
23
  var FinderDependency = function (_a) {
@@ -54,6 +55,7 @@ var ConsultaSimples = function (_a) {
54
55
  React.createElement(RefinBoaVista, { documento: documento }),
55
56
  React.createElement(RefinSerasa, { documento: documento }),
56
57
  React.createElement(ConsultaScore, { documento: documento }),
58
+ React.createElement(ConsultaScoreSerasa, { documento: documento }),
57
59
  React.createElement(ConsultaImoveis, { documento: documento }),
58
60
  React.createElement(Veiculos, { documento: documento })),
59
61
  React.createElement(Protestos, null),