@credithub/harlan-components 1.8.0 → 1.9.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.
Files changed (35) hide show
  1. package/lib/cjs/components/common/addItem.d.ts +1 -1
  2. package/lib/cjs/components/common/addItem.js +2 -2
  3. package/lib/cjs/components/consultasComplementares.d.ts +1 -0
  4. package/lib/cjs/components/consultasComplementares.js +3 -0
  5. package/lib/cjs/components/scr/getResumoDeCreditos.d.ts +6 -0
  6. package/lib/cjs/components/scr/getResumoDeCreditos.js +93 -0
  7. package/lib/cjs/components/scr/getResumoDeModalidades.d.ts +8 -0
  8. package/lib/cjs/components/scr/getResumoDeModalidades.js +95 -0
  9. package/lib/cjs/components/scr/scr.d.ts +5 -0
  10. package/lib/cjs/components/scr/scr.js +159 -0
  11. package/lib/cjs/components/scr/types.d.ts +86 -0
  12. package/lib/cjs/components/scr/types.js +2 -0
  13. package/lib/cjs/consultaSimples.js +2 -0
  14. package/lib/cjs/index.d.ts +1 -0
  15. package/lib/cjs/index.js +3 -1
  16. package/lib/cjs/utils/number.d.ts +1 -0
  17. package/lib/cjs/utils/number.js +5 -1
  18. package/lib/esm/components/common/addItem.d.ts +1 -1
  19. package/lib/esm/components/common/addItem.js +2 -2
  20. package/lib/esm/components/consultasComplementares.d.ts +1 -0
  21. package/lib/esm/components/consultasComplementares.js +3 -0
  22. package/lib/esm/components/scr/getResumoDeCreditos.d.ts +6 -0
  23. package/lib/esm/components/scr/getResumoDeCreditos.js +91 -0
  24. package/lib/esm/components/scr/getResumoDeModalidades.d.ts +8 -0
  25. package/lib/esm/components/scr/getResumoDeModalidades.js +93 -0
  26. package/lib/esm/components/scr/scr.d.ts +5 -0
  27. package/lib/esm/components/scr/scr.js +131 -0
  28. package/lib/esm/components/scr/types.d.ts +86 -0
  29. package/lib/esm/components/scr/types.js +1 -0
  30. package/lib/esm/consultaSimples.js +2 -0
  31. package/lib/esm/index.d.ts +1 -0
  32. package/lib/esm/index.js +1 -0
  33. package/lib/esm/utils/number.d.ts +1 -0
  34. package/lib/esm/utils/number.js +3 -0
  35. package/package.json +1 -1
@@ -7,5 +7,5 @@ export interface AddItemProps extends React.PropsWithChildren<{
7
7
  styleName?: CSSProperties;
8
8
  } & DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>> {
9
9
  }
10
- declare function AddItemField({ name, value, children, className, valueClassName, nameClassName, styleName, ...props }: AddItemProps): React.JSX.Element;
10
+ declare function AddItemField({ name, value, children, className, valueClassName, nameClassName, styleName, defaultValue, ...props }: AddItemProps): React.JSX.Element;
11
11
  export default AddItemField;
@@ -28,12 +28,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
28
28
  var react_1 = __importDefault(require("react"));
29
29
  var classnames_1 = __importDefault(require("classnames"));
30
30
  function AddItemField(_a) {
31
- var name = _a.name, value = _a.value, children = _a.children, className = _a.className, valueClassName = _a.valueClassName, nameClassName = _a.nameClassName, styleName = _a.styleName, props = __rest(_a, ["name", "value", "children", "className", "valueClassName", "nameClassName", "styleName"]);
31
+ var name = _a.name, value = _a.value, children = _a.children, className = _a.className, valueClassName = _a.valueClassName, nameClassName = _a.nameClassName, styleName = _a.styleName, _b = _a.defaultValue, defaultValue = _b === void 0 ? '----' : _b, props = __rest(_a, ["name", "value", "children", "className", "valueClassName", "nameClassName", "styleName", "defaultValue"]);
32
32
  var fieldClassName = (0, classnames_1.default)("field", className);
33
33
  var valueClass = (0, classnames_1.default)("value", valueClassName);
34
34
  var nameClass = (0, classnames_1.default)("name", nameClassName);
35
35
  return (react_1.default.createElement("div", __assign({}, props, { className: fieldClassName }),
36
- react_1.default.createElement("div", { className: valueClass }, value),
36
+ react_1.default.createElement("div", { className: valueClass }, value || defaultValue),
37
37
  react_1.default.createElement("div", { className: nameClass, style: styleName }, name),
38
38
  children));
39
39
  }
@@ -9,6 +9,7 @@ type QueryType<DataType = any> = {
9
9
  data?: ParsedResponse<DataType> | null;
10
10
  };
11
11
  type ConsultasComplementaresProps = {
12
+ scr: QueryType;
12
13
  veiculos: QueryType;
13
14
  refinSerasa: QueryType<PefinRefinSerasaResponse>;
14
15
  refinBoaVista: QueryType<RefinBoaVistaResponse>;
@@ -45,6 +45,9 @@ var ConsultasComplementaresProvider = function (_a) {
45
45
  veiculos: {
46
46
  consultaRealizada: false,
47
47
  },
48
+ scr: {
49
+ consultaRealizada: false,
50
+ },
48
51
  hasCredits: hasCredits,
49
52
  }), consultasComplementares = _b[0], setConsultasComplementares = _b[1];
50
53
  return (react_1.default.createElement(exports.ConsultasComplementaresContext.Provider, { value: {
@@ -0,0 +1,6 @@
1
+ import { SCRQuery } from "./types";
2
+ declare const getResumoDeCreditos: (scr: SCRQuery) => {
3
+ descricao: string;
4
+ valor: string;
5
+ }[];
6
+ export default getResumoDeCreditos;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ var underscore_1 = require("underscore");
13
+ var number_1 = require("../../utils/number");
14
+ var agruparPorCategoriaDeVencimento = function (detalhamento) {
15
+ var _a = (0, underscore_1.groupBy)(detalhamento.map(function (item) { return item.vencimentos; }, []).flat(), function (_a) {
16
+ var categoria = _a.categoria;
17
+ return categoria;
18
+ }), _b = _a.avencer, avencer = _b === void 0 ? [] : _b, _c = _a.vencido, vencido = _c === void 0 ? [] : _c;
19
+ return { avencer: avencer, vencido: vencido };
20
+ };
21
+ var agruparPorDescricao = function (_a) {
22
+ var avencer = _a.avencer, vencido = _a.vencido;
23
+ return ({
24
+ avencer: (0, underscore_1.groupBy)(avencer, function (_a) {
25
+ var descricao = _a.descricao;
26
+ return descricao;
27
+ }),
28
+ vencido: (0, underscore_1.groupBy)(vencido, function (_a) {
29
+ var descricao = _a.descricao;
30
+ return descricao;
31
+ })
32
+ });
33
+ };
34
+ var adicionarCreditosADescricao = function (description, valor) {
35
+ var isAvencerVencido = /(A Vencer|Vencido)$/i.test(description.trim());
36
+ return [
37
+ !isAvencerVencido
38
+ ? "Cr\u00E9ditos ".concat(description.toLowerCase())
39
+ : description,
40
+ valor ? (0, number_1.formatMoney)(valor) : ''
41
+ ];
42
+ };
43
+ var somarDadosAgrupadosPorDescricao = function (_a) {
44
+ var avencer = _a.avencer, vencido = _a.vencido;
45
+ return ({
46
+ avencer: Object.entries(avencer).map(function (_a) {
47
+ var descricao = _a[0], values = _a[1];
48
+ return ({
49
+ descricao: descricao,
50
+ valor: values.reduce(function (a, b) { return a + Number(b.valor); }, 0)
51
+ });
52
+ }).filter(function (_a) {
53
+ var descricao = _a.descricao;
54
+ return !/Limite/.test(descricao.trim());
55
+ })
56
+ .map(function (_a) {
57
+ var descricao = _a.descricao, valor = _a.valor;
58
+ return adicionarCreditosADescricao(descricao, valor);
59
+ }),
60
+ vencido: Object.entries(vencido).map(function (_a) {
61
+ var descricao = _a[0], values = _a[1];
62
+ return ({
63
+ descricao: descricao,
64
+ valor: values.reduce(function (a, b) { return a + Number(b.valor); }, 0)
65
+ });
66
+ }).filter(function (_a) {
67
+ var descricao = _a.descricao;
68
+ return !/Limite/.test(descricao.trim());
69
+ })
70
+ .map(function (_a) {
71
+ var descricao = _a.descricao, valor = _a.valor;
72
+ return adicionarCreditosADescricao(descricao, valor);
73
+ }),
74
+ });
75
+ };
76
+ var getVencidosEAvencer = underscore_1.compose.apply(void 0, [
77
+ agruparPorCategoriaDeVencimento,
78
+ agruparPorDescricao,
79
+ somarDadosAgrupadosPorDescricao
80
+ ].reverse());
81
+ var getResumoDeCreditos = function (scr) {
82
+ var _a, _b, _c, _d, _e;
83
+ var _f = getVencidosEAvencer((_a = scr === null || scr === void 0 ? void 0 : scr.analise) === null || _a === void 0 ? void 0 : _a.detalhamento), avencer = _f.avencer, vencido = _f.vencido;
84
+ return __spreadArray(__spreadArray(__spreadArray([
85
+ ['A Vencer', (0, number_1.formatMoney)(((_c = (_b = scr === null || scr === void 0 ? void 0 : scr.analise) === null || _b === void 0 ? void 0 : _b.total) === null || _c === void 0 ? void 0 : _c.aVencer) || 0)]
86
+ ], avencer, true), [
87
+ ['Vencido', (0, number_1.formatMoney)(((_e = (_d = scr === null || scr === void 0 ? void 0 : scr.analise) === null || _d === void 0 ? void 0 : _d.total) === null || _e === void 0 ? void 0 : _e.vencido) || 0)]
88
+ ], false), vencido, true).map(function (_a) {
89
+ var descricao = _a[0], valor = _a[1];
90
+ return ({ descricao: descricao, valor: valor });
91
+ });
92
+ };
93
+ exports.default = getResumoDeCreditos;
@@ -0,0 +1,8 @@
1
+ import { SCRQuery } from "./types";
2
+ declare function getResumoDeModalidades(scr: SCRQuery): {
3
+ modalidade: string;
4
+ vencido: number;
5
+ aVencer: number;
6
+ valor: number;
7
+ }[];
8
+ export default getResumoDeModalidades;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ var underscore_1 = require("underscore");
13
+ var number_1 = require("../../utils/number");
14
+ function getResumoDeModalidades(scr) {
15
+ var _a;
16
+ var agruparPorTitulo = function (detalhamento) { return (0, underscore_1.groupBy)(detalhamento, function (_a) {
17
+ var modalidade = _a.modalidade;
18
+ return modalidade.titulo;
19
+ }); };
20
+ var agruparPorTituloESubtitulo = function (detalhamento) { return Object.fromEntries(Object.entries(detalhamento).map(function (_a) {
21
+ var key = _a[0], values = _a[1];
22
+ return [
23
+ key,
24
+ Object.entries((0, underscore_1.groupBy)(values, function (_a) {
25
+ var modalidade = _a.modalidade;
26
+ return modalidade.subtitulo;
27
+ })).map(function (_a) {
28
+ var _b;
29
+ var subtitulo = _a[0], detalhes = _a[1];
30
+ return ({
31
+ subtitulo: subtitulo,
32
+ variacaoCambial: (_b = detalhes.find(function (e) { return e.variacaoCambial; })) === null || _b === void 0 ? void 0 : _b.variacaoCambial,
33
+ valor: detalhes.map(function (detalhe) { return detalhe.vencimentos; }).flat().reduce(function (a, b) { return a + Number(b.valor); }, 0),
34
+ vencimentos: detalhes.map(function (detalhe) { return detalhe.vencimentos; }).flat()
35
+ });
36
+ })
37
+ ];
38
+ })); };
39
+ var getModalidades = underscore_1.compose.apply(void 0, [agruparPorTitulo, agruparPorTituloESubtitulo].reverse());
40
+ var modalidades = getModalidades(scr.analise.detalhamento);
41
+ var resumoDeOperacoes = (_a = (scr.listaDeResumoDasOperacoes || [])) === null || _a === void 0 ? void 0 : _a.filter(function (_a) {
42
+ var modalidade = _a.modalidade;
43
+ return /^(19)/.test(modalidade);
44
+ });
45
+ var COD_LIMIT = {
46
+ 1901: 'Limite global',
47
+ 1902: 'Cheque especial',
48
+ 1903: 'Conta garantida',
49
+ 1904: 'Cartão de Crédito',
50
+ 1905: 'Capital de giro',
51
+ 1906: 'Crédito pessoal',
52
+ 1907: 'Vendor',
53
+ 1908: 'Compror',
54
+ 1909: 'Descontos',
55
+ 1910: 'Aquisição de bens',
56
+ 1999: 'Outros',
57
+ };
58
+ var limite = resumoDeOperacoes.map(function (item) {
59
+ var modalidade = item.modalidade, listaDeVencimentos = item.listaDeVencimentos, variacaoCambial = item.variacaoCambial;
60
+ var sumSalaries = (0, number_1.sum)(listaDeVencimentos.map(function (e) { return Number(e.valorVencimento); }));
61
+ return modalidades.Limite.filter(function (r) { return sumSalaries === r.valor; })
62
+ .map(function (r) {
63
+ var _a;
64
+ return ({
65
+ subtitulo: r.subtitulo ? r.subtitulo : COD_LIMIT[modalidade] || '',
66
+ vencimentos: r.vencimentos,
67
+ variacaoCambial: (_a = r.variacaoCambial) !== null && _a !== void 0 ? _a : variacaoCambial,
68
+ valor: r.valor,
69
+ });
70
+ });
71
+ }).flat();
72
+ modalidades.Limite = limite;
73
+ var sumVencimentos = function (vencimentos, tipo) { return (0, number_1.sum)(vencimentos.filter(function (e) { return tipo ? e.categoria === tipo : e.categoria; })
74
+ .map(function (e) { return Number(e.valor); })); };
75
+ return Object.entries(modalidades).map(function (_a) {
76
+ var _b;
77
+ var modalidade = _a[0], subcategorias = _a[1];
78
+ return __spreadArray([{
79
+ modalidade: "".concat(modalidade, " (Cambial: ").concat(((_b = subcategorias[0]) === null || _b === void 0 ? void 0 : _b.variacaoCambial) || 'Não', ")"),
80
+ vencido: sumVencimentos(subcategorias.map(function (subcategoria) { return subcategoria.vencimentos; }).flat(), 'vencido'),
81
+ aVencer: sumVencimentos(subcategorias.map(function (subcategoria) { return subcategoria.vencimentos; }).flat(), 'avencer'),
82
+ valor: (0, number_1.sum)(subcategorias.map(function (e) { return e.valor; }))
83
+ }], subcategorias.map(function (subcategoria) { return __spreadArray([{
84
+ modalidade: subcategoria.subtitulo,
85
+ valor: subcategoria.valor,
86
+ }], subcategoria.vencimentos.map(function (vencimento) {
87
+ var _a;
88
+ return ({
89
+ modalidade: !/^Limite/.test(modalidade) ? "Cr\u00E9ditos ".concat((_a = vencimento.descricao) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase()) : vencimento.descricao,
90
+ valor: vencimento.valor
91
+ });
92
+ }), true); }).flat(), true);
93
+ }).flat();
94
+ }
95
+ exports.default = getResumoDeModalidades;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ declare function ConsultaSCR({ documento }: {
3
+ documento: string;
4
+ }): React.JSX.Element | null;
5
+ export default ConsultaSCR;
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __rest = (this && this.__rest) || function (s, e) {
37
+ var t = {};
38
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
39
+ t[p] = s[p];
40
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
41
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
42
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
43
+ t[p[i]] = s[p[i]];
44
+ }
45
+ return t;
46
+ };
47
+ var __importDefault = (this && this.__importDefault) || function (mod) {
48
+ return (mod && mod.__esModule) ? mod : { "default": mod };
49
+ };
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ /* eslint-disable react-hooks/exhaustive-deps */
52
+ /* eslint-disable @typescript-eslint/no-unused-vars */
53
+ var react_1 = __importStar(require("react"));
54
+ var header_1 = __importDefault(require("../interface/header"));
55
+ var addItem_1 = __importDefault(require("../common/addItem"));
56
+ var result_1 = require("../interface/result");
57
+ var consultasComplementares_1 = require("../consultasComplementares");
58
+ var webservice_1 = require("../webservice");
59
+ var classnames_1 = __importDefault(require("classnames"));
60
+ var getResumoDeCreditos_1 = __importDefault(require("./getResumoDeCreditos"));
61
+ var getResumoDeModalidades_1 = __importDefault(require("./getResumoDeModalidades"));
62
+ var number_1 = require("../../utils/number");
63
+ function ConsultaSCR(_a) {
64
+ var _b, _c, _d, _e;
65
+ var documento = _a.documento;
66
+ var consultasComplementaresContext = (0, react_1.useContext)(consultasComplementares_1.ConsultasComplementaresContext);
67
+ var _f = consultasComplementaresContext !== null && consultasComplementaresContext !== void 0 ? consultasComplementaresContext : {}, consultasComplementares = _f.consultasComplementares, setConsultasComplementares = _f.setConsultasComplementares;
68
+ var _g = (0, webservice_1.useQuery)("SELECT FROM 'SCR'.'CONSULTA'", { documento: documento }, !!((_b = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.scr) === null || _b === void 0 ? void 0 : _b.consultaRealizada)), response = _g.response, isLoading = _g.isLoading, error = _g.error;
69
+ var scr = (_d = (_c = response === null || response === void 0 ? void 0 : response.document) === null || _c === void 0 ? void 0 : _c.ns2getResumoDoClienteResponse) === null || _d === void 0 ? void 0 : _d.return;
70
+ var scrRef = (0, react_1.useRef)(null);
71
+ var consultaSCRRealizada = (0, react_1.useMemo)(function () { var _a; return (_a = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.scr) === null || _a === void 0 ? void 0 : _a.consultaRealizada; }, [(_e = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.scr) === null || _e === void 0 ? void 0 : _e.consultaRealizada
72
+ ]);
73
+ var resumoDeCreditos = (scr && (0, getResumoDeCreditos_1.default)(scr)) || [];
74
+ (0, react_1.useEffect)(function () {
75
+ var _a;
76
+ (_a = scrRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView();
77
+ }, [consultaSCRRealizada]);
78
+ (0, react_1.useEffect)(function () {
79
+ response && setConsultasComplementares && setConsultasComplementares(function (prev) { return (__assign(__assign({}, prev), { scr: __assign(__assign({}, prev.scr), { data: response }) })); });
80
+ }, [response]);
81
+ return consultaSCRRealizada ? (react_1.default.createElement(react_1.default.Fragment, null,
82
+ react_1.default.createElement(ResumoDoCliente, { scrRef: scrRef, isLoading: isLoading, scr: scr, error: error }),
83
+ react_1.default.createElement(FluxosDeVencimentosConsolidados, { isLoading: isLoading, scr: scr, error: error }),
84
+ react_1.default.createElement(ResumoList, { title: "SCR", subtitle: "Cr\u00E9dito", resumos: resumoDeCreditos, isLoading: isLoading, error: error }),
85
+ react_1.default.createElement(ResumoModalidades, { isLoading: isLoading, scr: scr, error: error }))) : null;
86
+ }
87
+ var ResumoDoCliente = function (_a) {
88
+ var _b;
89
+ var scr = _a.scr, scrRef = _a.scrRef, isLoading = _a.isLoading, error = _a.error;
90
+ return (react_1.default.createElement(react_1.default.Fragment, null,
91
+ react_1.default.createElement(header_1.default, { innerRef: scrRef, title: 'SCR', subtitle: 'Resumo do Cliente', className: (0, classnames_1.default)((_b = {},
92
+ _b[webservice_1.headerStatus[webservice_1.RequestStatus.Loading]] = isLoading,
93
+ _b[webservice_1.headerStatus[webservice_1.RequestStatus.Error]] = error,
94
+ _b)) }),
95
+ !isLoading && (react_1.default.createElement(result_1.Result, null,
96
+ react_1.default.createElement("div", { className: "container" },
97
+ react_1.default.createElement("div", { className: "content" },
98
+ react_1.default.createElement(addItem_1.default, { name: "CNPJ da IF Solicitante", value: scr === null || scr === void 0 ? void 0 : scr.cnpjDaIFSolicitante }),
99
+ react_1.default.createElement(addItem_1.default, { name: "C\u00F3digo do Cliente", value: scr === null || scr === void 0 ? void 0 : scr.codigoDoCliente }),
100
+ react_1.default.createElement(addItem_1.default, { name: "Coobriga\u00E7\u00E3o Assumida", value: scr === null || scr === void 0 ? void 0 : scr.coobrigacaoAssumida }),
101
+ react_1.default.createElement(addItem_1.default, { name: "Coobriga\u00E7\u00E3o Recebida", value: scr === null || scr === void 0 ? void 0 : scr.coobrigacaoRecebida })))))));
102
+ };
103
+ var FluxosDeVencimentosConsolidados = function (_a) {
104
+ var _b;
105
+ var _c;
106
+ var scr = _a.scr, isLoading = _a.isLoading, error = _a.error;
107
+ return (react_1.default.createElement(react_1.default.Fragment, null,
108
+ react_1.default.createElement(header_1.default, { title: 'SCR', subtitle: 'Fluxo De Vencimentos Consolidados', className: (0, classnames_1.default)((_b = {},
109
+ _b[webservice_1.headerStatus[webservice_1.RequestStatus.Loading]] = isLoading,
110
+ _b[webservice_1.headerStatus[webservice_1.RequestStatus.Error]] = error,
111
+ _b)) }),
112
+ scr && !isLoading && (react_1.default.createElement(result_1.Result, null,
113
+ react_1.default.createElement("div", { className: "container" },
114
+ react_1.default.createElement("div", { className: "content" },
115
+ react_1.default.createElement(addItem_1.default, { name: "Data-base", value: scr.dataBaseConsultada }),
116
+ react_1.default.createElement(addItem_1.default, { name: "Situa\u00E7\u00E3o de processamento IF's", value: scr.percentualDocumentosProcessados }),
117
+ react_1.default.createElement(addItem_1.default, { name: "Situa\u00E7\u00E3o de processamento Valor", value: scr.percentualVolumeProcessado }),
118
+ react_1.default.createElement(addItem_1.default, { name: "Quantidade de Opera\u00E7\u00F5es", value: scr.quantidadeDeOperacoes }),
119
+ react_1.default.createElement(addItem_1.default, { name: "Quantidade de Institui\u00E7\u00F5es ", value: scr.quantidadeDeInstituicoes }),
120
+ react_1.default.createElement(addItem_1.default, { name: "Quantidade de opera\u00E7\u00F5es amparadas por sub-judice", value: scr.quantidadeOperacoesSubJudice }),
121
+ react_1.default.createElement(addItem_1.default, { name: "Quantidade de opera\u00E7\u00F5es com manifesta\u00E7\u00E3o por discord\u00E2ncia", value: scr.quantidadeOperacoesDiscordancia }),
122
+ react_1.default.createElement(addItem_1.default, { name: "Opera\u00E7\u00F5es com manifesta\u00E7\u00E3o de discord\u00E2ncia", value: scr.responsabilidadeTotalDiscordancia }),
123
+ react_1.default.createElement(addItem_1.default, { name: "Opera\u00E7\u00F5es amparadas por sub-judice", value: scr.responsabilidadeTotalSubJudice }),
124
+ react_1.default.createElement(addItem_1.default, { name: "Risco indireto fornecedor", value: scr.riscoIndiretoVendor }),
125
+ react_1.default.createElement(addItem_1.default, { name: "Data de in\u00EDcio do relacionamento com a IF", value: scr.dataInicioRelacionamento && ((_c = new Date(scr.dataInicioRelacionamento)) === null || _c === void 0 ? void 0 : _c.toLocaleDateString()) }),
126
+ react_1.default.createElement(addItem_1.default, { name: "Tipo cliente", value: scr.tipoDoCliente })))))));
127
+ };
128
+ var ResumoList = function (_a) {
129
+ var _b;
130
+ var isLoading = _a.isLoading, className = _a.className, error = _a.error, resumos = _a.resumos, props = __rest(_a, ["isLoading", "className", "error", "resumos"]);
131
+ return (react_1.default.createElement(react_1.default.Fragment, null,
132
+ react_1.default.createElement(header_1.default, __assign({}, props, { className: (0, classnames_1.default)((_b = {},
133
+ _b[webservice_1.headerStatus[webservice_1.RequestStatus.Loading]] = isLoading,
134
+ _b[webservice_1.headerStatus[webservice_1.RequestStatus.Error]] = error,
135
+ _b), className) })),
136
+ !isLoading && (react_1.default.createElement(result_1.Result, null,
137
+ react_1.default.createElement("div", { className: "container" },
138
+ react_1.default.createElement("div", { className: "content" }, resumos.map(function (_a, key) {
139
+ var descricao = _a.descricao, valor = _a.valor;
140
+ return react_1.default.createElement(addItem_1.default, { key: key, name: descricao, value: valor });
141
+ })))))));
142
+ };
143
+ var ResumoModalidades = function (_a) {
144
+ var _b;
145
+ var scr = _a.scr, isLoading = _a.isLoading, error = _a.error;
146
+ var resumoModalidades = scr && (0, getResumoDeModalidades_1.default)(scr) || [];
147
+ return (react_1.default.createElement(react_1.default.Fragment, null,
148
+ react_1.default.createElement(header_1.default, { title: "SCR", subtitle: "Modalidade x Data Base", className: (0, classnames_1.default)((_b = {},
149
+ _b[webservice_1.headerStatus[webservice_1.RequestStatus.Loading]] = isLoading,
150
+ _b[webservice_1.headerStatus[webservice_1.RequestStatus.Error]] = error,
151
+ _b)) }),
152
+ !isLoading && !error && (react_1.default.createElement(result_1.Result, null, resumoModalidades.map(function (resumo, key) { return (react_1.default.createElement("div", { key: key, className: "container" },
153
+ react_1.default.createElement("div", { className: "content" },
154
+ react_1.default.createElement(addItem_1.default, { name: "Modalidade", value: resumo.modalidade }),
155
+ react_1.default.createElement(addItem_1.default, { name: "Vencido", value: resumo.vencido && (0, number_1.formatMoney)(resumo.vencido) }),
156
+ react_1.default.createElement(addItem_1.default, { name: "A Vencer", value: resumo.aVencer && (0, number_1.formatMoney)(resumo.aVencer) }),
157
+ react_1.default.createElement(addItem_1.default, { name: "Valor", value: (0, number_1.formatMoney)(resumo.valor) })))); })))));
158
+ };
159
+ exports.default = ConsultaSCR;
@@ -0,0 +1,86 @@
1
+ /// <reference types="react" />
2
+ import { HeaderProps } from "../interface/header";
3
+ export interface SCRResponse {
4
+ ns2getResumoDoClienteResponse: Ns2getResumoDoClienteResponse;
5
+ }
6
+ export interface Ns2getResumoDoClienteResponse {
7
+ return: SCRQuery;
8
+ }
9
+ export interface SCRQuery {
10
+ cnpjDaIFSolicitante: string;
11
+ codigoDoCliente: string;
12
+ coobrigacaoAssumida: string;
13
+ coobrigacaoRecebida: string;
14
+ dataBaseConsultada: string;
15
+ dataInicioRelacionamento: string;
16
+ listaDeResumoDasOperacoes: ListaDeResumoDasOperacoes[];
17
+ percentualDocumentosProcessados: string;
18
+ percentualVolumeProcessado: string;
19
+ quantidadeDeInstituicoes: string;
20
+ quantidadeDeOperacoes: string;
21
+ quantidadeOperacoesDiscordancia: string;
22
+ quantidadeOperacoesSubJudice: string;
23
+ responsabilidadeTotalDiscordancia: string;
24
+ responsabilidadeTotalSubJudice: string;
25
+ riscoIndiretoVendor: string;
26
+ tipoDoCliente: string;
27
+ analise: Analise;
28
+ }
29
+ export interface ListaDeResumoDasOperacoes {
30
+ listaDeVencimentos: ListaDeVencimento[];
31
+ modalidade: string;
32
+ variacaoCambial: string;
33
+ }
34
+ export interface ListaDeVencimento {
35
+ codigoVencimento: string;
36
+ valorVencimento: string;
37
+ }
38
+ export interface Analise {
39
+ limiteDeCreditoEmDias: LimiteDeCreditoEmDias;
40
+ creditoALiberarEmDias: CreditoAliberarEmDias;
41
+ total: Total;
42
+ prejuizoEmMeses: PrejuizoEmMeses;
43
+ detalhamento: Detalhamento[];
44
+ }
45
+ export interface LimiteDeCreditoEmDias {
46
+ ate360: number;
47
+ acimaDe360: number;
48
+ }
49
+ export interface CreditoAliberarEmDias {
50
+ ate360: number;
51
+ acimaDe360: number;
52
+ }
53
+ export interface Total {
54
+ aVencer: number;
55
+ vencido: number;
56
+ }
57
+ export interface PrejuizoEmMeses {
58
+ ate12: number;
59
+ acimaDe12Ate48: number;
60
+ acimaDe48: number;
61
+ }
62
+ export interface Detalhamento {
63
+ modalidade: Modalidade;
64
+ valor: number;
65
+ variacaoCambial: string;
66
+ vencimentos: Vencimento[];
67
+ }
68
+ export interface Modalidade {
69
+ titulo: string;
70
+ subtitulo: string;
71
+ }
72
+ export interface Vencimento {
73
+ categoria: 'avencer' | 'vencido';
74
+ descricao: string;
75
+ valor: string;
76
+ }
77
+ export type SCRListProps = {
78
+ scrRef?: React.LegacyRef<HTMLElement>;
79
+ scr?: SCRQuery;
80
+ isLoading: boolean;
81
+ error: Error | null;
82
+ };
83
+ export type GrupoDeVencimentos = Record<'avencer' | 'vencido', Record<string, Vencimento[]>>;
84
+ export type ResumoListProps = Omit<SCRListProps, 'scr'> & HeaderProps & {
85
+ resumos: Record<'descricao' | 'valor', string | number>[];
86
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var react_1 = __importDefault(require("react"));
7
7
  var _1 = require("./");
8
8
  var consultasComplementares_1 = require("./components/consultasComplementares");
9
+ var scr_1 = __importDefault(require("./components/scr/scr"));
9
10
  var scoreService_1 = __importDefault(require("./components/score/scoreService"));
10
11
  var imoveisService_1 = __importDefault(require("./components/imoveis/imoveisService"));
11
12
  var ConsultaSimples = function (_a) {
@@ -24,6 +25,7 @@ var ConsultaSimples = function (_a) {
24
25
  react_1.default.createElement(_1.BankAccounts, null),
25
26
  react_1.default.createElement(_1.Queries.GraficosAnaliticos.Request, { data: { documento: documento } },
26
27
  react_1.default.createElement(_1.CustomChartSection, { documento: documento }),
28
+ react_1.default.createElement(scr_1.default, { documento: documento }),
27
29
  react_1.default.createElement(_1.RefinBoaVista, { documento: documento }),
28
30
  react_1.default.createElement(_1.RefinSerasa, { documento: documento }),
29
31
  react_1.default.createElement(scoreService_1.default, { documento: documento }),
@@ -19,4 +19,5 @@ export { default as DividasPublicas } from './components/dividasPublicas/dividas
19
19
  export { default as PessoaPoliticamenteExposta } from './components/pep/pep';
20
20
  export { default as RefinSerasa } from './components/refinSerasa/refinSerasa';
21
21
  export { default as RefinBoaVista } from './components/refinBoaVista/refinBoaVista';
22
+ export { default as SCR } from './components/scr/scr';
22
23
  export { default as Veiculos } from './components/veiculos/veiculos';
package/lib/cjs/index.js CHANGED
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.Veiculos = exports.RefinBoaVista = exports.RefinSerasa = exports.PessoaPoliticamenteExposta = exports.DividasPublicas = exports.ConsultaSimples = exports.ResultWithoutInformation = exports.BankAccounts = exports.CustomChartSection = exports.Chart = exports.Addresses = exports.ProcessosJuridicos = exports.Dossie = exports.CCF = exports.Protestos = exports.Partners = exports.Contacts = exports.AddItemField = exports.Loading = exports.Header = exports.Section = void 0;
20
+ exports.Veiculos = exports.SCR = exports.RefinBoaVista = exports.RefinSerasa = exports.PessoaPoliticamenteExposta = exports.DividasPublicas = exports.ConsultaSimples = exports.ResultWithoutInformation = exports.BankAccounts = exports.CustomChartSection = exports.Chart = exports.Addresses = exports.ProcessosJuridicos = exports.Dossie = exports.CCF = exports.Protestos = exports.Partners = exports.Contacts = exports.AddItemField = exports.Loading = exports.Header = exports.Section = void 0;
21
21
  var section_1 = require("./components/interface/section");
22
22
  Object.defineProperty(exports, "Section", { enumerable: true, get: function () { return __importDefault(section_1).default; } });
23
23
  var header_1 = require("./components/interface/header");
@@ -59,5 +59,7 @@ var refinSerasa_1 = require("./components/refinSerasa/refinSerasa");
59
59
  Object.defineProperty(exports, "RefinSerasa", { enumerable: true, get: function () { return __importDefault(refinSerasa_1).default; } });
60
60
  var refinBoaVista_1 = require("./components/refinBoaVista/refinBoaVista");
61
61
  Object.defineProperty(exports, "RefinBoaVista", { enumerable: true, get: function () { return __importDefault(refinBoaVista_1).default; } });
62
+ var scr_1 = require("./components/scr/scr");
63
+ Object.defineProperty(exports, "SCR", { enumerable: true, get: function () { return __importDefault(scr_1).default; } });
62
64
  var veiculos_1 = require("./components/veiculos/veiculos");
63
65
  Object.defineProperty(exports, "Veiculos", { enumerable: true, get: function () { return __importDefault(veiculos_1).default; } });
@@ -1,3 +1,4 @@
1
1
  export declare const formatMoney: (value?: string | number) => string;
2
2
  export declare const phoneMask: (value?: string) => string;
3
3
  export declare function formatValue(valor?: number): string | undefined;
4
+ export declare function sum(valores: number[]): number;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatValue = exports.phoneMask = exports.formatMoney = void 0;
3
+ exports.sum = exports.formatValue = exports.phoneMask = exports.formatMoney = void 0;
4
4
  var formatMoney = function (value) {
5
5
  return new Intl.NumberFormat("pt-BR", {
6
6
  style: "currency",
@@ -21,3 +21,7 @@ function formatValue(valor) {
21
21
  return valor === null || valor === void 0 ? void 0 : valor.toLocaleString('pt-BR');
22
22
  }
23
23
  exports.formatValue = formatValue;
24
+ function sum(valores) {
25
+ return valores.reduce(function (a, b) { return a + b; }, 0);
26
+ }
27
+ exports.sum = sum;
@@ -7,5 +7,5 @@ export interface AddItemProps extends React.PropsWithChildren<{
7
7
  styleName?: CSSProperties;
8
8
  } & DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>> {
9
9
  }
10
- declare function AddItemField({ name, value, children, className, valueClassName, nameClassName, styleName, ...props }: AddItemProps): React.JSX.Element;
10
+ declare function AddItemField({ name, value, children, className, valueClassName, nameClassName, styleName, defaultValue, ...props }: AddItemProps): React.JSX.Element;
11
11
  export default AddItemField;
@@ -23,12 +23,12 @@ var __rest = (this && this.__rest) || function (s, e) {
23
23
  import React from "react";
24
24
  import cn from "classnames";
25
25
  function AddItemField(_a) {
26
- var name = _a.name, value = _a.value, children = _a.children, className = _a.className, valueClassName = _a.valueClassName, nameClassName = _a.nameClassName, styleName = _a.styleName, props = __rest(_a, ["name", "value", "children", "className", "valueClassName", "nameClassName", "styleName"]);
26
+ var name = _a.name, value = _a.value, children = _a.children, className = _a.className, valueClassName = _a.valueClassName, nameClassName = _a.nameClassName, styleName = _a.styleName, _b = _a.defaultValue, defaultValue = _b === void 0 ? '----' : _b, props = __rest(_a, ["name", "value", "children", "className", "valueClassName", "nameClassName", "styleName", "defaultValue"]);
27
27
  var fieldClassName = cn("field", className);
28
28
  var valueClass = cn("value", valueClassName);
29
29
  var nameClass = cn("name", nameClassName);
30
30
  return (React.createElement("div", __assign({}, props, { className: fieldClassName }),
31
- React.createElement("div", { className: valueClass }, value),
31
+ React.createElement("div", { className: valueClass }, value || defaultValue),
32
32
  React.createElement("div", { className: nameClass, style: styleName }, name),
33
33
  children));
34
34
  }
@@ -9,6 +9,7 @@ type QueryType<DataType = any> = {
9
9
  data?: ParsedResponse<DataType> | null;
10
10
  };
11
11
  type ConsultasComplementaresProps = {
12
+ scr: QueryType;
12
13
  veiculos: QueryType;
13
14
  refinSerasa: QueryType<PefinRefinSerasaResponse>;
14
15
  refinBoaVista: QueryType<RefinBoaVistaResponse>;
@@ -19,6 +19,9 @@ export var ConsultasComplementaresProvider = function (_a) {
19
19
  veiculos: {
20
20
  consultaRealizada: false,
21
21
  },
22
+ scr: {
23
+ consultaRealizada: false,
24
+ },
22
25
  hasCredits: hasCredits,
23
26
  }), consultasComplementares = _b[0], setConsultasComplementares = _b[1];
24
27
  return (React.createElement(ConsultasComplementaresContext.Provider, { value: {
@@ -0,0 +1,6 @@
1
+ import { SCRQuery } from "./types";
2
+ declare const getResumoDeCreditos: (scr: SCRQuery) => {
3
+ descricao: string;
4
+ valor: string;
5
+ }[];
6
+ export default getResumoDeCreditos;
@@ -0,0 +1,91 @@
1
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
+ if (ar || !(i in from)) {
4
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
+ ar[i] = from[i];
6
+ }
7
+ }
8
+ return to.concat(ar || Array.prototype.slice.call(from));
9
+ };
10
+ import { compose, groupBy } from "underscore";
11
+ import { formatMoney } from "../../utils/number";
12
+ var agruparPorCategoriaDeVencimento = function (detalhamento) {
13
+ var _a = groupBy(detalhamento.map(function (item) { return item.vencimentos; }, []).flat(), function (_a) {
14
+ var categoria = _a.categoria;
15
+ return categoria;
16
+ }), _b = _a.avencer, avencer = _b === void 0 ? [] : _b, _c = _a.vencido, vencido = _c === void 0 ? [] : _c;
17
+ return { avencer: avencer, vencido: vencido };
18
+ };
19
+ var agruparPorDescricao = function (_a) {
20
+ var avencer = _a.avencer, vencido = _a.vencido;
21
+ return ({
22
+ avencer: groupBy(avencer, function (_a) {
23
+ var descricao = _a.descricao;
24
+ return descricao;
25
+ }),
26
+ vencido: groupBy(vencido, function (_a) {
27
+ var descricao = _a.descricao;
28
+ return descricao;
29
+ })
30
+ });
31
+ };
32
+ var adicionarCreditosADescricao = function (description, valor) {
33
+ var isAvencerVencido = /(A Vencer|Vencido)$/i.test(description.trim());
34
+ return [
35
+ !isAvencerVencido
36
+ ? "Cr\u00E9ditos ".concat(description.toLowerCase())
37
+ : description,
38
+ valor ? formatMoney(valor) : ''
39
+ ];
40
+ };
41
+ var somarDadosAgrupadosPorDescricao = function (_a) {
42
+ var avencer = _a.avencer, vencido = _a.vencido;
43
+ return ({
44
+ avencer: Object.entries(avencer).map(function (_a) {
45
+ var descricao = _a[0], values = _a[1];
46
+ return ({
47
+ descricao: descricao,
48
+ valor: values.reduce(function (a, b) { return a + Number(b.valor); }, 0)
49
+ });
50
+ }).filter(function (_a) {
51
+ var descricao = _a.descricao;
52
+ return !/Limite/.test(descricao.trim());
53
+ })
54
+ .map(function (_a) {
55
+ var descricao = _a.descricao, valor = _a.valor;
56
+ return adicionarCreditosADescricao(descricao, valor);
57
+ }),
58
+ vencido: Object.entries(vencido).map(function (_a) {
59
+ var descricao = _a[0], values = _a[1];
60
+ return ({
61
+ descricao: descricao,
62
+ valor: values.reduce(function (a, b) { return a + Number(b.valor); }, 0)
63
+ });
64
+ }).filter(function (_a) {
65
+ var descricao = _a.descricao;
66
+ return !/Limite/.test(descricao.trim());
67
+ })
68
+ .map(function (_a) {
69
+ var descricao = _a.descricao, valor = _a.valor;
70
+ return adicionarCreditosADescricao(descricao, valor);
71
+ }),
72
+ });
73
+ };
74
+ var getVencidosEAvencer = compose.apply(void 0, [
75
+ agruparPorCategoriaDeVencimento,
76
+ agruparPorDescricao,
77
+ somarDadosAgrupadosPorDescricao
78
+ ].reverse());
79
+ var getResumoDeCreditos = function (scr) {
80
+ var _a, _b, _c, _d, _e;
81
+ var _f = getVencidosEAvencer((_a = scr === null || scr === void 0 ? void 0 : scr.analise) === null || _a === void 0 ? void 0 : _a.detalhamento), avencer = _f.avencer, vencido = _f.vencido;
82
+ return __spreadArray(__spreadArray(__spreadArray([
83
+ ['A Vencer', formatMoney(((_c = (_b = scr === null || scr === void 0 ? void 0 : scr.analise) === null || _b === void 0 ? void 0 : _b.total) === null || _c === void 0 ? void 0 : _c.aVencer) || 0)]
84
+ ], avencer, true), [
85
+ ['Vencido', formatMoney(((_e = (_d = scr === null || scr === void 0 ? void 0 : scr.analise) === null || _d === void 0 ? void 0 : _d.total) === null || _e === void 0 ? void 0 : _e.vencido) || 0)]
86
+ ], false), vencido, true).map(function (_a) {
87
+ var descricao = _a[0], valor = _a[1];
88
+ return ({ descricao: descricao, valor: valor });
89
+ });
90
+ };
91
+ export default getResumoDeCreditos;
@@ -0,0 +1,8 @@
1
+ import { SCRQuery } from "./types";
2
+ declare function getResumoDeModalidades(scr: SCRQuery): {
3
+ modalidade: string;
4
+ vencido: number;
5
+ aVencer: number;
6
+ valor: number;
7
+ }[];
8
+ export default getResumoDeModalidades;
@@ -0,0 +1,93 @@
1
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
+ if (ar || !(i in from)) {
4
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
+ ar[i] = from[i];
6
+ }
7
+ }
8
+ return to.concat(ar || Array.prototype.slice.call(from));
9
+ };
10
+ import { compose, groupBy } from "underscore";
11
+ import { sum } from "../../utils/number";
12
+ function getResumoDeModalidades(scr) {
13
+ var _a;
14
+ var agruparPorTitulo = function (detalhamento) { return groupBy(detalhamento, function (_a) {
15
+ var modalidade = _a.modalidade;
16
+ return modalidade.titulo;
17
+ }); };
18
+ var agruparPorTituloESubtitulo = function (detalhamento) { return Object.fromEntries(Object.entries(detalhamento).map(function (_a) {
19
+ var key = _a[0], values = _a[1];
20
+ return [
21
+ key,
22
+ Object.entries(groupBy(values, function (_a) {
23
+ var modalidade = _a.modalidade;
24
+ return modalidade.subtitulo;
25
+ })).map(function (_a) {
26
+ var _b;
27
+ var subtitulo = _a[0], detalhes = _a[1];
28
+ return ({
29
+ subtitulo: subtitulo,
30
+ variacaoCambial: (_b = detalhes.find(function (e) { return e.variacaoCambial; })) === null || _b === void 0 ? void 0 : _b.variacaoCambial,
31
+ valor: detalhes.map(function (detalhe) { return detalhe.vencimentos; }).flat().reduce(function (a, b) { return a + Number(b.valor); }, 0),
32
+ vencimentos: detalhes.map(function (detalhe) { return detalhe.vencimentos; }).flat()
33
+ });
34
+ })
35
+ ];
36
+ })); };
37
+ var getModalidades = compose.apply(void 0, [agruparPorTitulo, agruparPorTituloESubtitulo].reverse());
38
+ var modalidades = getModalidades(scr.analise.detalhamento);
39
+ var resumoDeOperacoes = (_a = (scr.listaDeResumoDasOperacoes || [])) === null || _a === void 0 ? void 0 : _a.filter(function (_a) {
40
+ var modalidade = _a.modalidade;
41
+ return /^(19)/.test(modalidade);
42
+ });
43
+ var COD_LIMIT = {
44
+ 1901: 'Limite global',
45
+ 1902: 'Cheque especial',
46
+ 1903: 'Conta garantida',
47
+ 1904: 'Cartão de Crédito',
48
+ 1905: 'Capital de giro',
49
+ 1906: 'Crédito pessoal',
50
+ 1907: 'Vendor',
51
+ 1908: 'Compror',
52
+ 1909: 'Descontos',
53
+ 1910: 'Aquisição de bens',
54
+ 1999: 'Outros',
55
+ };
56
+ var limite = resumoDeOperacoes.map(function (item) {
57
+ var modalidade = item.modalidade, listaDeVencimentos = item.listaDeVencimentos, variacaoCambial = item.variacaoCambial;
58
+ var sumSalaries = sum(listaDeVencimentos.map(function (e) { return Number(e.valorVencimento); }));
59
+ return modalidades.Limite.filter(function (r) { return sumSalaries === r.valor; })
60
+ .map(function (r) {
61
+ var _a;
62
+ return ({
63
+ subtitulo: r.subtitulo ? r.subtitulo : COD_LIMIT[modalidade] || '',
64
+ vencimentos: r.vencimentos,
65
+ variacaoCambial: (_a = r.variacaoCambial) !== null && _a !== void 0 ? _a : variacaoCambial,
66
+ valor: r.valor,
67
+ });
68
+ });
69
+ }).flat();
70
+ modalidades.Limite = limite;
71
+ var sumVencimentos = function (vencimentos, tipo) { return sum(vencimentos.filter(function (e) { return tipo ? e.categoria === tipo : e.categoria; })
72
+ .map(function (e) { return Number(e.valor); })); };
73
+ return Object.entries(modalidades).map(function (_a) {
74
+ var _b;
75
+ var modalidade = _a[0], subcategorias = _a[1];
76
+ return __spreadArray([{
77
+ modalidade: "".concat(modalidade, " (Cambial: ").concat(((_b = subcategorias[0]) === null || _b === void 0 ? void 0 : _b.variacaoCambial) || 'Não', ")"),
78
+ vencido: sumVencimentos(subcategorias.map(function (subcategoria) { return subcategoria.vencimentos; }).flat(), 'vencido'),
79
+ aVencer: sumVencimentos(subcategorias.map(function (subcategoria) { return subcategoria.vencimentos; }).flat(), 'avencer'),
80
+ valor: sum(subcategorias.map(function (e) { return e.valor; }))
81
+ }], subcategorias.map(function (subcategoria) { return __spreadArray([{
82
+ modalidade: subcategoria.subtitulo,
83
+ valor: subcategoria.valor,
84
+ }], subcategoria.vencimentos.map(function (vencimento) {
85
+ var _a;
86
+ return ({
87
+ modalidade: !/^Limite/.test(modalidade) ? "Cr\u00E9ditos ".concat((_a = vencimento.descricao) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase()) : vencimento.descricao,
88
+ valor: vencimento.valor
89
+ });
90
+ }), true); }).flat(), true);
91
+ }).flat();
92
+ }
93
+ export default getResumoDeModalidades;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ declare function ConsultaSCR({ documento }: {
3
+ documento: string;
4
+ }): React.JSX.Element | null;
5
+ export default ConsultaSCR;
@@ -0,0 +1,131 @@
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
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ /* eslint-disable react-hooks/exhaustive-deps */
24
+ /* eslint-disable @typescript-eslint/no-unused-vars */
25
+ import React, { useContext, useEffect, useMemo, useRef } from 'react';
26
+ import Header from '../interface/header';
27
+ import AddItemField from '../common/addItem';
28
+ import { Result } from '../interface/result';
29
+ import { ConsultasComplementaresContext } from '../consultasComplementares';
30
+ import { RequestStatus, headerStatus, useQuery } from '../webservice';
31
+ import classNames from 'classnames';
32
+ import getResumoDeCreditos from './getResumoDeCreditos';
33
+ import getResumoDeModalidades from './getResumoDeModalidades';
34
+ import { formatMoney } from '../../utils/number';
35
+ function ConsultaSCR(_a) {
36
+ var _b, _c, _d, _e;
37
+ var documento = _a.documento;
38
+ var consultasComplementaresContext = useContext(ConsultasComplementaresContext);
39
+ var _f = consultasComplementaresContext !== null && consultasComplementaresContext !== void 0 ? consultasComplementaresContext : {}, consultasComplementares = _f.consultasComplementares, setConsultasComplementares = _f.setConsultasComplementares;
40
+ var _g = useQuery("SELECT FROM 'SCR'.'CONSULTA'", { documento: documento }, !!((_b = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.scr) === null || _b === void 0 ? void 0 : _b.consultaRealizada)), response = _g.response, isLoading = _g.isLoading, error = _g.error;
41
+ var scr = (_d = (_c = response === null || response === void 0 ? void 0 : response.document) === null || _c === void 0 ? void 0 : _c.ns2getResumoDoClienteResponse) === null || _d === void 0 ? void 0 : _d.return;
42
+ var scrRef = useRef(null);
43
+ var consultaSCRRealizada = useMemo(function () { var _a; return (_a = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.scr) === null || _a === void 0 ? void 0 : _a.consultaRealizada; }, [(_e = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.scr) === null || _e === void 0 ? void 0 : _e.consultaRealizada
44
+ ]);
45
+ var resumoDeCreditos = (scr && getResumoDeCreditos(scr)) || [];
46
+ useEffect(function () {
47
+ var _a;
48
+ (_a = scrRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView();
49
+ }, [consultaSCRRealizada]);
50
+ useEffect(function () {
51
+ response && setConsultasComplementares && setConsultasComplementares(function (prev) { return (__assign(__assign({}, prev), { scr: __assign(__assign({}, prev.scr), { data: response }) })); });
52
+ }, [response]);
53
+ return consultaSCRRealizada ? (React.createElement(React.Fragment, null,
54
+ React.createElement(ResumoDoCliente, { scrRef: scrRef, isLoading: isLoading, scr: scr, error: error }),
55
+ React.createElement(FluxosDeVencimentosConsolidados, { isLoading: isLoading, scr: scr, error: error }),
56
+ React.createElement(ResumoList, { title: "SCR", subtitle: "Cr\u00E9dito", resumos: resumoDeCreditos, isLoading: isLoading, error: error }),
57
+ React.createElement(ResumoModalidades, { isLoading: isLoading, scr: scr, error: error }))) : null;
58
+ }
59
+ var ResumoDoCliente = function (_a) {
60
+ var _b;
61
+ var scr = _a.scr, scrRef = _a.scrRef, isLoading = _a.isLoading, error = _a.error;
62
+ return (React.createElement(React.Fragment, null,
63
+ React.createElement(Header, { innerRef: scrRef, title: 'SCR', subtitle: 'Resumo do Cliente', className: classNames((_b = {},
64
+ _b[headerStatus[RequestStatus.Loading]] = isLoading,
65
+ _b[headerStatus[RequestStatus.Error]] = error,
66
+ _b)) }),
67
+ !isLoading && (React.createElement(Result, null,
68
+ React.createElement("div", { className: "container" },
69
+ React.createElement("div", { className: "content" },
70
+ React.createElement(AddItemField, { name: "CNPJ da IF Solicitante", value: scr === null || scr === void 0 ? void 0 : scr.cnpjDaIFSolicitante }),
71
+ React.createElement(AddItemField, { name: "C\u00F3digo do Cliente", value: scr === null || scr === void 0 ? void 0 : scr.codigoDoCliente }),
72
+ React.createElement(AddItemField, { name: "Coobriga\u00E7\u00E3o Assumida", value: scr === null || scr === void 0 ? void 0 : scr.coobrigacaoAssumida }),
73
+ React.createElement(AddItemField, { name: "Coobriga\u00E7\u00E3o Recebida", value: scr === null || scr === void 0 ? void 0 : scr.coobrigacaoRecebida })))))));
74
+ };
75
+ var FluxosDeVencimentosConsolidados = function (_a) {
76
+ var _b;
77
+ var _c;
78
+ var scr = _a.scr, isLoading = _a.isLoading, error = _a.error;
79
+ return (React.createElement(React.Fragment, null,
80
+ React.createElement(Header, { title: 'SCR', subtitle: 'Fluxo De Vencimentos Consolidados', className: classNames((_b = {},
81
+ _b[headerStatus[RequestStatus.Loading]] = isLoading,
82
+ _b[headerStatus[RequestStatus.Error]] = error,
83
+ _b)) }),
84
+ scr && !isLoading && (React.createElement(Result, null,
85
+ React.createElement("div", { className: "container" },
86
+ React.createElement("div", { className: "content" },
87
+ React.createElement(AddItemField, { name: "Data-base", value: scr.dataBaseConsultada }),
88
+ React.createElement(AddItemField, { name: "Situa\u00E7\u00E3o de processamento IF's", value: scr.percentualDocumentosProcessados }),
89
+ React.createElement(AddItemField, { name: "Situa\u00E7\u00E3o de processamento Valor", value: scr.percentualVolumeProcessado }),
90
+ React.createElement(AddItemField, { name: "Quantidade de Opera\u00E7\u00F5es", value: scr.quantidadeDeOperacoes }),
91
+ React.createElement(AddItemField, { name: "Quantidade de Institui\u00E7\u00F5es ", value: scr.quantidadeDeInstituicoes }),
92
+ React.createElement(AddItemField, { name: "Quantidade de opera\u00E7\u00F5es amparadas por sub-judice", value: scr.quantidadeOperacoesSubJudice }),
93
+ React.createElement(AddItemField, { name: "Quantidade de opera\u00E7\u00F5es com manifesta\u00E7\u00E3o por discord\u00E2ncia", value: scr.quantidadeOperacoesDiscordancia }),
94
+ React.createElement(AddItemField, { name: "Opera\u00E7\u00F5es com manifesta\u00E7\u00E3o de discord\u00E2ncia", value: scr.responsabilidadeTotalDiscordancia }),
95
+ React.createElement(AddItemField, { name: "Opera\u00E7\u00F5es amparadas por sub-judice", value: scr.responsabilidadeTotalSubJudice }),
96
+ React.createElement(AddItemField, { name: "Risco indireto fornecedor", value: scr.riscoIndiretoVendor }),
97
+ React.createElement(AddItemField, { name: "Data de in\u00EDcio do relacionamento com a IF", value: scr.dataInicioRelacionamento && ((_c = new Date(scr.dataInicioRelacionamento)) === null || _c === void 0 ? void 0 : _c.toLocaleDateString()) }),
98
+ React.createElement(AddItemField, { name: "Tipo cliente", value: scr.tipoDoCliente })))))));
99
+ };
100
+ var ResumoList = function (_a) {
101
+ var _b;
102
+ var isLoading = _a.isLoading, className = _a.className, error = _a.error, resumos = _a.resumos, props = __rest(_a, ["isLoading", "className", "error", "resumos"]);
103
+ return (React.createElement(React.Fragment, null,
104
+ React.createElement(Header, __assign({}, props, { className: classNames((_b = {},
105
+ _b[headerStatus[RequestStatus.Loading]] = isLoading,
106
+ _b[headerStatus[RequestStatus.Error]] = error,
107
+ _b), className) })),
108
+ !isLoading && (React.createElement(Result, null,
109
+ React.createElement("div", { className: "container" },
110
+ React.createElement("div", { className: "content" }, resumos.map(function (_a, key) {
111
+ var descricao = _a.descricao, valor = _a.valor;
112
+ return React.createElement(AddItemField, { key: key, name: descricao, value: valor });
113
+ })))))));
114
+ };
115
+ var ResumoModalidades = function (_a) {
116
+ var _b;
117
+ var scr = _a.scr, isLoading = _a.isLoading, error = _a.error;
118
+ var resumoModalidades = scr && getResumoDeModalidades(scr) || [];
119
+ return (React.createElement(React.Fragment, null,
120
+ React.createElement(Header, { title: "SCR", subtitle: "Modalidade x Data Base", className: classNames((_b = {},
121
+ _b[headerStatus[RequestStatus.Loading]] = isLoading,
122
+ _b[headerStatus[RequestStatus.Error]] = error,
123
+ _b)) }),
124
+ !isLoading && !error && (React.createElement(Result, null, resumoModalidades.map(function (resumo, key) { return (React.createElement("div", { key: key, className: "container" },
125
+ React.createElement("div", { className: "content" },
126
+ React.createElement(AddItemField, { name: "Modalidade", value: resumo.modalidade }),
127
+ React.createElement(AddItemField, { name: "Vencido", value: resumo.vencido && formatMoney(resumo.vencido) }),
128
+ React.createElement(AddItemField, { name: "A Vencer", value: resumo.aVencer && formatMoney(resumo.aVencer) }),
129
+ React.createElement(AddItemField, { name: "Valor", value: formatMoney(resumo.valor) })))); })))));
130
+ };
131
+ export default ConsultaSCR;
@@ -0,0 +1,86 @@
1
+ /// <reference types="react" />
2
+ import { HeaderProps } from "../interface/header";
3
+ export interface SCRResponse {
4
+ ns2getResumoDoClienteResponse: Ns2getResumoDoClienteResponse;
5
+ }
6
+ export interface Ns2getResumoDoClienteResponse {
7
+ return: SCRQuery;
8
+ }
9
+ export interface SCRQuery {
10
+ cnpjDaIFSolicitante: string;
11
+ codigoDoCliente: string;
12
+ coobrigacaoAssumida: string;
13
+ coobrigacaoRecebida: string;
14
+ dataBaseConsultada: string;
15
+ dataInicioRelacionamento: string;
16
+ listaDeResumoDasOperacoes: ListaDeResumoDasOperacoes[];
17
+ percentualDocumentosProcessados: string;
18
+ percentualVolumeProcessado: string;
19
+ quantidadeDeInstituicoes: string;
20
+ quantidadeDeOperacoes: string;
21
+ quantidadeOperacoesDiscordancia: string;
22
+ quantidadeOperacoesSubJudice: string;
23
+ responsabilidadeTotalDiscordancia: string;
24
+ responsabilidadeTotalSubJudice: string;
25
+ riscoIndiretoVendor: string;
26
+ tipoDoCliente: string;
27
+ analise: Analise;
28
+ }
29
+ export interface ListaDeResumoDasOperacoes {
30
+ listaDeVencimentos: ListaDeVencimento[];
31
+ modalidade: string;
32
+ variacaoCambial: string;
33
+ }
34
+ export interface ListaDeVencimento {
35
+ codigoVencimento: string;
36
+ valorVencimento: string;
37
+ }
38
+ export interface Analise {
39
+ limiteDeCreditoEmDias: LimiteDeCreditoEmDias;
40
+ creditoALiberarEmDias: CreditoAliberarEmDias;
41
+ total: Total;
42
+ prejuizoEmMeses: PrejuizoEmMeses;
43
+ detalhamento: Detalhamento[];
44
+ }
45
+ export interface LimiteDeCreditoEmDias {
46
+ ate360: number;
47
+ acimaDe360: number;
48
+ }
49
+ export interface CreditoAliberarEmDias {
50
+ ate360: number;
51
+ acimaDe360: number;
52
+ }
53
+ export interface Total {
54
+ aVencer: number;
55
+ vencido: number;
56
+ }
57
+ export interface PrejuizoEmMeses {
58
+ ate12: number;
59
+ acimaDe12Ate48: number;
60
+ acimaDe48: number;
61
+ }
62
+ export interface Detalhamento {
63
+ modalidade: Modalidade;
64
+ valor: number;
65
+ variacaoCambial: string;
66
+ vencimentos: Vencimento[];
67
+ }
68
+ export interface Modalidade {
69
+ titulo: string;
70
+ subtitulo: string;
71
+ }
72
+ export interface Vencimento {
73
+ categoria: 'avencer' | 'vencido';
74
+ descricao: string;
75
+ valor: string;
76
+ }
77
+ export type SCRListProps = {
78
+ scrRef?: React.LegacyRef<HTMLElement>;
79
+ scr?: SCRQuery;
80
+ isLoading: boolean;
81
+ error: Error | null;
82
+ };
83
+ export type GrupoDeVencimentos = Record<'avencer' | 'vencido', Record<string, Vencimento[]>>;
84
+ export type ResumoListProps = Omit<SCRListProps, 'scr'> & HeaderProps & {
85
+ resumos: Record<'descricao' | 'valor', string | number>[];
86
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import { Section, Contacts, Partners, Dossie, Addresses, CCF, Protestos, ProcessosJuridicos, BankAccounts, WebServiceProvider, Queries, CustomChartSection, RefinSerasa, RefinBoaVista, Veiculos, } from "./";
3
3
  import { ConsultasComplementaresProvider } from "./components/consultasComplementares";
4
+ import ConsultaSCR from "./components/scr/scr";
4
5
  import ConsultaScore from "./components/score/scoreService";
5
6
  import ConsultaImoveis from "./components/imoveis/imoveisService";
6
7
  var ConsultaSimples = function (_a) {
@@ -19,6 +20,7 @@ var ConsultaSimples = function (_a) {
19
20
  React.createElement(BankAccounts, null),
20
21
  React.createElement(Queries.GraficosAnaliticos.Request, { data: { documento: documento } },
21
22
  React.createElement(CustomChartSection, { documento: documento }),
23
+ React.createElement(ConsultaSCR, { documento: documento }),
22
24
  React.createElement(RefinBoaVista, { documento: documento }),
23
25
  React.createElement(RefinSerasa, { documento: documento }),
24
26
  React.createElement(ConsultaScore, { documento: documento }),
@@ -19,4 +19,5 @@ export { default as DividasPublicas } from './components/dividasPublicas/dividas
19
19
  export { default as PessoaPoliticamenteExposta } from './components/pep/pep';
20
20
  export { default as RefinSerasa } from './components/refinSerasa/refinSerasa';
21
21
  export { default as RefinBoaVista } from './components/refinBoaVista/refinBoaVista';
22
+ export { default as SCR } from './components/scr/scr';
22
23
  export { default as Veiculos } from './components/veiculos/veiculos';
package/lib/esm/index.js CHANGED
@@ -19,4 +19,5 @@ export { default as DividasPublicas } from './components/dividasPublicas/dividas
19
19
  export { default as PessoaPoliticamenteExposta } from './components/pep/pep';
20
20
  export { default as RefinSerasa } from './components/refinSerasa/refinSerasa';
21
21
  export { default as RefinBoaVista } from './components/refinBoaVista/refinBoaVista';
22
+ export { default as SCR } from './components/scr/scr';
22
23
  export { default as Veiculos } from './components/veiculos/veiculos';
@@ -1,3 +1,4 @@
1
1
  export declare const formatMoney: (value?: string | number) => string;
2
2
  export declare const phoneMask: (value?: string) => string;
3
3
  export declare function formatValue(valor?: number): string | undefined;
4
+ export declare function sum(valores: number[]): number;
@@ -15,3 +15,6 @@ export var phoneMask = function (value) {
15
15
  export function formatValue(valor) {
16
16
  return valor === null || valor === void 0 ? void 0 : valor.toLocaleString('pt-BR');
17
17
  }
18
+ export function sum(valores) {
19
+ return valores.reduce(function (a, b) { return a + b; }, 0);
20
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@credithub/harlan-components",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "Provide a set of web components to be used in Harlan and other projects",
5
5
  "keywords": [
6
6
  "harlan",