@credithub/harlan-components 1.109.0 → 1.109.2
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.
- package/dist/components/chart/utils/dataProcessing.js +0 -38
- package/dist/components/protestos/protestos.js +2 -3
- package/dist/consultaSimples.js +6 -1
- package/dist/utils/number.d.ts +13 -0
- package/dist/utils/number.js +68 -0
- package/lib/cjs/index.js +76 -42
- package/lib/esm/index.js +76 -42
- package/package.json +1 -1
|
@@ -61,44 +61,6 @@ export var processData = function (data, quantidadeProcessosJuridicos, totalProt
|
|
|
61
61
|
.map(function (info) { return (__assign(__assign({}, info), { data: formatDatePtBrToDate(info.data) // normaliza p/ ISO local
|
|
62
62
|
})); }), function (info) { return info.data; });
|
|
63
63
|
// ------------------------------------------------------------------
|
|
64
|
-
// GARANTIR ÚLTIMO PONTO CORRETO PARA PROTESTOS
|
|
65
|
-
// ------------------------------------------------------------------
|
|
66
|
-
// Se temos valores corretos de totalProtestos e valorTotalProtestos,
|
|
67
|
-
// garantimos que o último ponto do histórico tenha esses valores
|
|
68
|
-
if (totalProtestos !== undefined &&
|
|
69
|
-
valorTotalProtestos !== undefined &&
|
|
70
|
-
data.protestos.length > 0) {
|
|
71
|
-
var ultimoPonto = data.protestos[data.protestos.length - 1];
|
|
72
|
-
var dataAtual = ultimaOcorrenciaProtestos
|
|
73
|
-
? formatDatePtBrToDate(ultimaOcorrenciaProtestos)
|
|
74
|
-
: new Date();
|
|
75
|
-
// Verifica se o último ponto precisa ser atualizado
|
|
76
|
-
var precisaAtualizar = ultimoPonto.quantidade !== totalProtestos ||
|
|
77
|
-
ultimoPonto.valorTotal !== valorTotalProtestos;
|
|
78
|
-
if (precisaAtualizar) {
|
|
79
|
-
// Atualiza o último ponto ou adiciona um novo se necessário
|
|
80
|
-
var dataUltimoPonto = ultimoPonto.data instanceof Date
|
|
81
|
-
? ultimoPonto.data
|
|
82
|
-
: new Date(ultimoPonto.data);
|
|
83
|
-
var dataProtesto = dataAtual instanceof Date ? dataAtual : new Date(dataAtual);
|
|
84
|
-
// Se a data atual é mais recente que o último ponto, adiciona novo ponto
|
|
85
|
-
// Caso contrário, atualiza o último ponto existente
|
|
86
|
-
if (dataProtesto.getTime() > dataUltimoPonto.getTime()) {
|
|
87
|
-
data.protestos.push({
|
|
88
|
-
data: dataProtesto,
|
|
89
|
-
quantidade: totalProtestos,
|
|
90
|
-
valorTotal: valorTotalProtestos
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
// Atualiza o último ponto mantendo a data original
|
|
95
|
-
data.protestos[data.protestos.length - 1] = __assign(__assign({}, ultimoPonto), { quantidade: totalProtestos, valorTotal: valorTotalProtestos });
|
|
96
|
-
}
|
|
97
|
-
// Reordena após adicionar/atualizar
|
|
98
|
-
data.protestos = sortBy(data.protestos, function (info) { return info.data; });
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
// ------------------------------------------------------------------
|
|
102
64
|
// CCFs
|
|
103
65
|
// ------------------------------------------------------------------
|
|
104
66
|
data.ccfs = sortBy(unique(data.ccfs, function (x) { return x.data; })
|
|
@@ -28,7 +28,7 @@ import ProtestosGeraisIcon from '../../assets/icones/protestosGerais';
|
|
|
28
28
|
import ProtestosImpostosIcon from '../../assets/icones/protestosImpostos';
|
|
29
29
|
import { useGlobalData } from '../../contexts/globalDataContext';
|
|
30
30
|
import { classifyProtestos, useProtestosClassification } from '../../hooks/useProtestosClassification';
|
|
31
|
-
import {
|
|
31
|
+
import { parseMoneyValue } from '../../utils/number';
|
|
32
32
|
import { parseProtesto } from '../../utils/parseProtesto';
|
|
33
33
|
import XPathUtils from '../../utils/xpath';
|
|
34
34
|
import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';
|
|
@@ -87,8 +87,7 @@ var Protestos = function () {
|
|
|
87
87
|
// Calcula valorTotalProtestos uma única vez somando todos os valores
|
|
88
88
|
var todosProtestos = __spreadArray(__spreadArray(__spreadArray([], protestosDeCredito, true), protestosDeImposto, true), protestosGerais, true);
|
|
89
89
|
var valorTotalProtestos = todosProtestos.reduce(function (total, protesto) {
|
|
90
|
-
var
|
|
91
|
-
var valorNumero = Number(clearMoneyString(valorStr)) || 0;
|
|
90
|
+
var valorNumero = parseMoneyValue(protesto === null || protesto === void 0 ? void 0 : protesto.valor);
|
|
92
91
|
return total + valorNumero;
|
|
93
92
|
}, 0);
|
|
94
93
|
setData(function (prevState) {
|
package/dist/consultaSimples.js
CHANGED
|
@@ -32,8 +32,13 @@ var Wrapper = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateO
|
|
|
32
32
|
var FinderDependency = function (_a) {
|
|
33
33
|
var children = _a.children, documento = _a.documento;
|
|
34
34
|
var ctxFinder = useContext(Queries.Finder);
|
|
35
|
+
var ProtestosWithCCFDependency = function (_a) {
|
|
36
|
+
var children = _a.children;
|
|
37
|
+
var ctxCCF = useContext(Queries.CCF);
|
|
38
|
+
return (React.createElement(Queries.Protestos.Request, { data: { documento: documento }, depends: [ctxFinder, ctxCCF] }, children));
|
|
39
|
+
};
|
|
35
40
|
return (React.createElement(Queries.CCF.Request, { data: { documento: documento }, depends: [ctxFinder] },
|
|
36
|
-
React.createElement(
|
|
41
|
+
React.createElement(ProtestosWithCCFDependency, null, children)));
|
|
37
42
|
};
|
|
38
43
|
var GraficosAnaliticosDependency = function (_a) {
|
|
39
44
|
var children = _a.children, documento = _a.documento;
|
package/dist/utils/number.d.ts
CHANGED
|
@@ -4,3 +4,16 @@ export declare function formatValue(valor?: number): string | undefined;
|
|
|
4
4
|
export declare function sum(valores: number[]): number;
|
|
5
5
|
export declare const extractIntegerFromText: (text: string | null) => number;
|
|
6
6
|
export declare const clearMoneyString: (value: string) => string;
|
|
7
|
+
/**
|
|
8
|
+
* Converte uma string de valor monetário para número, tratando múltiplos formatos.
|
|
9
|
+
*
|
|
10
|
+
* Suporta os seguintes formatos:
|
|
11
|
+
* - "1.695,80" (formato brasileiro com separador de milhar)
|
|
12
|
+
* - "1695,80" (formato brasileiro sem separador de milhar)
|
|
13
|
+
* - "1695.80" (formato internacional)
|
|
14
|
+
* - "169580" (número puro - será interpretado como centavos se muito grande)
|
|
15
|
+
*
|
|
16
|
+
* @param value - String ou número representando o valor monetário
|
|
17
|
+
* @returns Número em formato decimal (ex: 1695.80)
|
|
18
|
+
*/
|
|
19
|
+
export declare const parseMoneyValue: (value: string | number | null | undefined) => number;
|
package/dist/utils/number.js
CHANGED
|
@@ -27,3 +27,71 @@ export var extractIntegerFromText = function (text) {
|
|
|
27
27
|
export var clearMoneyString = function (value) {
|
|
28
28
|
return value.replace(/\./g, '').replace(/,/g, '.');
|
|
29
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Converte uma string de valor monetário para número, tratando múltiplos formatos.
|
|
32
|
+
*
|
|
33
|
+
* Suporta os seguintes formatos:
|
|
34
|
+
* - "1.695,80" (formato brasileiro com separador de milhar)
|
|
35
|
+
* - "1695,80" (formato brasileiro sem separador de milhar)
|
|
36
|
+
* - "1695.80" (formato internacional)
|
|
37
|
+
* - "169580" (número puro - será interpretado como centavos se muito grande)
|
|
38
|
+
*
|
|
39
|
+
* @param value - String ou número representando o valor monetário
|
|
40
|
+
* @returns Número em formato decimal (ex: 1695.80)
|
|
41
|
+
*/
|
|
42
|
+
export var parseMoneyValue = function (value) {
|
|
43
|
+
if (value === null || value === undefined)
|
|
44
|
+
return 0;
|
|
45
|
+
// Se já for número, retorna direto
|
|
46
|
+
if (typeof value === 'number') {
|
|
47
|
+
return isNaN(value) ? 0 : value;
|
|
48
|
+
}
|
|
49
|
+
// Se for string vazia, retorna 0
|
|
50
|
+
var str = String(value).trim();
|
|
51
|
+
if (!str || str === '0')
|
|
52
|
+
return 0;
|
|
53
|
+
// Remove espaços e caracteres não numéricos exceto ponto e vírgula
|
|
54
|
+
var cleaned = str.replace(/[^\d.,]/g, '');
|
|
55
|
+
// Se não tem ponto nem vírgula, é número puro
|
|
56
|
+
if (!cleaned.includes('.') && !cleaned.includes(',')) {
|
|
57
|
+
var num_1 = Number(cleaned);
|
|
58
|
+
// Se for número puro sem separador decimal, verifica se pode ser centavos
|
|
59
|
+
// Valores monetários típicos de protestos raramente ultrapassam R$ 50.000
|
|
60
|
+
// Se o número tem 5+ dígitos, verifica se faz mais sentido como centavos
|
|
61
|
+
if (cleaned.length >= 5) {
|
|
62
|
+
var asCentavos = num_1 / 100;
|
|
63
|
+
// Se interpretado como centavos resulta em valor razoável (< 50000),
|
|
64
|
+
// assume que é centavos (ex: 169580 -> 1695.80, 271353 -> 2713.53)
|
|
65
|
+
if (asCentavos < 50000 && asCentavos > 0) {
|
|
66
|
+
return asCentavos;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return num_1;
|
|
70
|
+
}
|
|
71
|
+
// Detecta formato: se tem vírgula, assume formato brasileiro (1.695,80 ou 1695,80)
|
|
72
|
+
if (cleaned.includes(',')) {
|
|
73
|
+
// Remove pontos (separadores de milhar) e substitui vírgula por ponto
|
|
74
|
+
cleaned = cleaned.replace(/\./g, '').replace(',', '.');
|
|
75
|
+
var num_2 = Number(cleaned);
|
|
76
|
+
return isNaN(num_2) ? 0 : num_2;
|
|
77
|
+
}
|
|
78
|
+
// Se só tem ponto, pode ser formato internacional ou separador de milhar
|
|
79
|
+
// Se tem mais de um ponto, assume que são separadores de milhar
|
|
80
|
+
var dots = (cleaned.match(/\./g) || []).length;
|
|
81
|
+
if (dots > 1) {
|
|
82
|
+
// Múltiplos pontos = separadores de milhar (formato internacional: 1.695.80)
|
|
83
|
+
cleaned = cleaned.replace(/\./g, '');
|
|
84
|
+
var num_3 = Number(cleaned);
|
|
85
|
+
// Se o número resultante for muito grande, assume que o último ponto era decimal
|
|
86
|
+
if (num_3 > 1000000) {
|
|
87
|
+
// Pega os últimos 2 dígitos como centavos
|
|
88
|
+
var integerPart = Math.floor(num_3 / 100);
|
|
89
|
+
var decimalPart = num_3 % 100;
|
|
90
|
+
return integerPart + decimalPart / 100;
|
|
91
|
+
}
|
|
92
|
+
return isNaN(num_3) ? 0 : num_3;
|
|
93
|
+
}
|
|
94
|
+
// Um único ponto = separador decimal (formato internacional: 1695.80)
|
|
95
|
+
var num = Number(cleaned);
|
|
96
|
+
return isNaN(num) ? 0 : num;
|
|
97
|
+
};
|