@credithub/harlan-components 1.119.0 → 1.120.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.
@@ -1,14 +1,17 @@
1
1
  export type { Address, AddressesState } from '@/@types/domain/addressesTypes';
2
2
  export type { BankAccount, BankAccountsState } from '@/@types/domain/bankAccountTypes';
3
+ export type { Cartorio } from '@/@types/domain/cartorioTypes';
3
4
  export type { CCFData, CCFState } from '@/@types/domain/ccfTypes';
4
5
  export type { Contact, ContactsState } from '@/@types/domain/contactsTypes';
5
6
  export type { Divida, DividasPublicasState } from '@/@types/domain/dividasTypes';
6
7
  export type { DocumentHistoryData } from '@/@types/domain/documentHistoryData';
7
8
  export type { CarouselState, DossieState, SummaryState, TransactionTableState } from '@/@types/domain/dossieTypes';
9
+ export type { EditalEletronico, EditalItem, EditalResponse } from '@/@types/domain/editalTypes';
8
10
  export type { IPTUItem, ImoveisConsultaResponse } from '@/@types/domain/imoveisTypes';
9
11
  export type { LiminarResponse } from '@/@types/domain/liminarTypes';
10
12
  export type { LiteError } from '@/@types/domain/liteError';
11
13
  export type { Partner, PartnersState } from '@/@types/domain/partnersTypes';
14
+ export type { PDFProtestoDiscoverResponse } from '@/@types/domain/pdfProtestoTypes';
12
15
  export type { PepData, PepState } from '@/@types/domain/pepTypes';
13
16
  export type { EnvolvidoUltimaMovimentacao, ProcessoJuridicoResume, ProcessosJuridicosState } from '@/@types/domain/processosJuridicosTypes';
14
17
  export type { ProtestoHistoricoItem, ProtestoHistoricoResponse, ProtestosPagosBaixadosState } from '@/@types/domain/protestosPagosBaixadosTypes';
@@ -19,5 +22,3 @@ export type { PefinRefinSerasaResponse, RefinSerasaState } from '@/@types/domain
19
22
  export type { ScoreResponse, ScoreSerasaState, ScoreState } from '@/@types/domain/scoreTypes';
20
23
  export type { SCRState } from '@/@types/domain/scrTypes';
21
24
  export type { RegistroVeiculo, VeiculosState } from '@/@types/domain/veiculosTypes';
22
- export type { EditalItem, EditalEletronico, EditalResponse } from '@/@types/domain/editalTypes';
23
- export type { PDFProtestoDiscoverResponse } from '@/@types/domain/pdfProtestoTypes';
@@ -0,0 +1,9 @@
1
+ import type { Cartorio } from '@/@types/domain/cartorioTypes';
2
+ import { FC } from 'react';
3
+ interface ModalDadosCartorioProps {
4
+ isOpen: boolean;
5
+ onClose: () => void;
6
+ cartorio: Cartorio | null;
7
+ }
8
+ declare const ModalDadosCartorio: FC<ModalDadosCartorioProps>;
9
+ export default ModalDadosCartorio;
@@ -0,0 +1,38 @@
1
+ import { phoneMask } from '../../utils/number';
2
+ import React from 'react';
3
+ import Modal from './modal';
4
+ var FIELD_LABELS = {
5
+ nome: 'Nome',
6
+ endereco: 'Endereço',
7
+ bairro: 'Bairro',
8
+ cidade: 'Cidade',
9
+ uf: 'UF',
10
+ telefone: 'Telefone',
11
+ codigo_cartorio: 'Código do cartório',
12
+ codigo_cidade: 'Código da cidade',
13
+ email: 'E-mail'
14
+ };
15
+ var FIELDS_ORDER = [
16
+ 'nome',
17
+ 'endereco',
18
+ 'bairro',
19
+ 'cidade',
20
+ 'uf',
21
+ 'telefone',
22
+ 'codigo_cartorio',
23
+ 'codigo_cidade',
24
+ 'email'
25
+ ];
26
+ var ModalDadosCartorio = function (_a) {
27
+ var isOpen = _a.isOpen, onClose = _a.onClose, cartorio = _a.cartorio;
28
+ var isEmpty = !cartorio || Object.keys(cartorio).length === 0;
29
+ return (React.createElement(Modal, { isOpen: isOpen, onClose: onClose, title: "Dados do cart\u00F3rio", footer: React.createElement("button", { type: "button", onClick: onClose }, "Fechar") }, isEmpty ? (React.createElement("p", null, "Dados do cart\u00F3rio n\u00E3o dispon\u00EDveis.")) : (React.createElement("dl", { style: { textAlign: 'left', margin: 0 } }, FIELDS_ORDER.map(function (key) {
30
+ var value = cartorio[key];
31
+ var raw = value != null && String(value).trim() !== '' ? String(value).trim() : '';
32
+ var display = key === 'telefone' && raw ? phoneMask(raw) : raw || '—';
33
+ return (React.createElement("div", { key: key, style: { marginBottom: '8px' } },
34
+ React.createElement("dt", { style: { fontWeight: 600, margin: 0 } }, FIELD_LABELS[key]),
35
+ React.createElement("dd", { style: { margin: '2px 0 0 0' } }, display)));
36
+ })))));
37
+ };
38
+ export default ModalDadosCartorio;
@@ -65,14 +65,15 @@ export var useInstrumento = function (_a) {
65
65
  setIsSuccess(false);
66
66
  }, []);
67
67
  var handleEnviarEmail = useCallback(function (livro, folha) { return __awaiter(void 0, void 0, void 0, function () {
68
- var res, error_1;
69
- return __generator(this, function (_a) {
70
- switch (_a.label) {
68
+ var res, error_1, errorMessage, isSolicitacaoEmProcessamento;
69
+ var _a;
70
+ return __generator(this, function (_b) {
71
+ switch (_b.label) {
71
72
  case 0:
72
73
  setIsEnviandoEmail(true);
73
- _a.label = 1;
74
+ _b.label = 1;
74
75
  case 1:
75
- _a.trys.push([1, 3, 4, 5]);
76
+ _b.trys.push([1, 3, 4, 5]);
76
77
  return [4 /*yield*/, sendInstrumentoManualEmail(client, {
77
78
  documento: cpfCnpj,
78
79
  nm_chave: nmChave,
@@ -80,7 +81,7 @@ export var useInstrumento = function (_a) {
80
81
  folha: folha
81
82
  })];
82
83
  case 2:
83
- res = _a.sent();
84
+ res = _b.sent();
84
85
  setEmailTitle('Instrumento solicitado por e-mail');
85
86
  setEmailMessage((res === null || res === void 0 ? void 0 : res.message) ||
86
87
  'Pedido registrado.\n\nAgora é só aguardar: vamos tentar obter o instrumento e enviar por e-mail. Isso pode levar algum tempo.\n\nApós identificar o instrumento, também vamos identificar o credor (quem protestou).');
@@ -89,7 +90,18 @@ export var useInstrumento = function (_a) {
89
90
  setIsModalSPOpen(false);
90
91
  return [3 /*break*/, 5];
91
92
  case 3:
92
- error_1 = _a.sent();
93
+ error_1 = _b.sent();
94
+ errorMessage = String((_a = error_1 === null || error_1 === void 0 ? void 0 : error_1.message) !== null && _a !== void 0 ? _a : error_1);
95
+ isSolicitacaoEmProcessamento = errorMessage
96
+ .toLocaleLowerCase()
97
+ .includes('já existe um processamento para este instrumento');
98
+ if (isSolicitacaoEmProcessamento) {
99
+ setEmailTitle('Solicitação em processamento');
100
+ setEmailMessage('Já existe uma solicitação em processamento para este instrumento.\n\nAguarde alguns instantes e tente novamente. Se preferir, aguarde o e-mail com o instrumento assim que estiver disponível.');
101
+ setIsSuccess(false);
102
+ setIsEmailModalOpen(true);
103
+ return [2 /*return*/];
104
+ }
93
105
  setEmailTitle('Erro ao Enviar E-mail');
94
106
  setEmailMessage('Não foi possível solicitar o instrumento por e-mail agora. Tente novamente em instantes.');
95
107
  setIsSuccess(false);
@@ -29,11 +29,13 @@ import ProtestosImpostosIcon from '../../assets/icones/protestosImpostos';
29
29
  import { useGlobalData } from '../../contexts/globalDataContext';
30
30
  import { classifyProtestos, useProtestosClassification } from '../../hooks/useProtestosClassification';
31
31
  import { parseMoneyValue } from '../../utils/number';
32
+ import { parseCartorio } from '../../utils/parseCartorio';
32
33
  import { parseProtesto } from '../../utils/parseProtesto';
33
34
  import XPathUtils from '../../utils/xpath';
34
35
  import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';
35
36
  import styled from 'styled-components';
36
37
  import Button from '../common/button';
38
+ import ModalDadosCartorio from '../common/ModalDadosCartorio';
37
39
  import StatusMessage from '../interface/statusMessage';
38
40
  import Section from '../section';
39
41
  import { Queries, RequestStatus } from '../webservice';
@@ -45,14 +47,15 @@ var BtnWrapper = styled.div(templateObject_2 || (templateObject_2 = __makeTempla
45
47
  // Função utilitária para extrair as chaves dos protestos
46
48
  var getChaves = function (arr) { return arr.map(function (p) { return p.nm_chave; }); };
47
49
  var PROTESTOS_ERROR_SUMMARY = 'Falha ao consultar protestos, tente novamente mais tarde.';
48
- var clearProtestosCollections = function (state) { return (__assign(__assign({}, (state || {})), { protestosDeCredito: undefined, protestosDeImposto: undefined, protestosGerais: undefined, totalProtestos: undefined, valorTotalProtestos: undefined, nmChaves: undefined })); };
50
+ var clearProtestosCollections = function (state) { return (__assign(__assign({}, (state || {})), { protestosDeCredito: undefined, protestosDeImposto: undefined, protestosGerais: undefined, totalProtestos: undefined, valorTotalProtestos: undefined, nmChaves: undefined, cartorio: undefined })); };
49
51
  var Protestos = function (_a) {
50
- var _b, _c;
52
+ var _b, _c, _d, _e;
51
53
  var tags = _a.tags;
52
54
  var ctx = useContext(Queries.Protestos);
53
55
  var ctxLiminar = useContext(Queries.Liminar);
54
- var _d = useGlobalData(), globalData = _d.data, setData = _d.setData;
55
- var _e = useState(false), dataUpdated = _e[0], setDataUpdated = _e[1];
56
+ var _f = useGlobalData(), globalData = _f.data, setData = _f.setData;
57
+ var _g = useState(false), dataUpdated = _g[0], setDataUpdated = _g[1];
58
+ var _h = useState(false), isModalCartorioOpen = _h[0], setIsModalCartorioOpen = _h[1];
56
59
  var showInstrumento = !hasOneOfTags(tags, [/flex/, 'bronze']);
57
60
  var protestosAll = useMemo(function () {
58
61
  if (!ctx.document)
@@ -60,7 +63,7 @@ var Protestos = function (_a) {
60
63
  return XPathUtils.selectArray('//body//protesto', ctx.document).map(parseProtesto);
61
64
  }, [ctx.document]);
62
65
  var iaOverrides = (_b = globalData.protestosData) === null || _b === void 0 ? void 0 : _b.iaOverrides;
63
- var _f = useProtestosClassification(protestosAll, iaOverrides), protestosDeCredito = _f.protestosDeCredito, protestosDeImposto = _f.protestosDeImposto, protestosGerais = _f.protestosGerais;
66
+ var _j = useProtestosClassification(protestosAll, iaOverrides), protestosDeCredito = _j.protestosDeCredito, protestosDeImposto = _j.protestosDeImposto, protestosGerais = _j.protestosGerais;
64
67
  useEffect(function () {
65
68
  var _a;
66
69
  var prevProtestos = globalData.protestosData;
@@ -101,6 +104,9 @@ var Protestos = function (_a) {
101
104
  setDataUpdated(true);
102
105
  return;
103
106
  }
107
+ var cartorioNodes = XPathUtils.selectArray('//body//conteudo/cartorio', ctx.document);
108
+ var cartorioNode = Array.isArray(cartorioNodes) ? cartorioNodes[0] : undefined;
109
+ var cartorio = parseCartorio(cartorioNode);
104
110
  var nmChave = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray([], getChaves(protestosDeCredito), true), getChaves(protestosDeImposto), true), getChaves(protestosGerais), true)));
105
111
  // Calcula valorTotalProtestos uma única vez somando todos os valores
106
112
  var todosProtestos = __spreadArray(__spreadArray(__spreadArray([], protestosDeCredito, true), protestosDeImposto, true), protestosGerais, true);
@@ -110,7 +116,7 @@ var Protestos = function (_a) {
110
116
  }, 0);
111
117
  setData(function (prevState) {
112
118
  var prevProtestos = prevState.protestosData;
113
- return __assign(__assign({}, prevState), { protestos: registros, protestosData: __assign(__assign({}, clearProtestosCollections(prevProtestos)), { protestosDeCredito: protestosDeCredito, protestosDeImposto: protestosDeImposto, protestosGerais: protestosGerais, totalProtestos: registros, valorTotalProtestos: valorTotalProtestos, isLoaded: true, isLoading: false, error: undefined, iaOverrides: prevProtestos === null || prevProtestos === void 0 ? void 0 : prevProtestos.iaOverrides, nmChaves: nmChave, failedInstruments: prevProtestos === null || prevProtestos === void 0 ? void 0 : prevProtestos.failedInstruments, failedInstrumentReasons: prevProtestos === null || prevProtestos === void 0 ? void 0 : prevProtestos.failedInstrumentReasons, instrumentCache: prevProtestos === null || prevProtestos === void 0 ? void 0 : prevProtestos.instrumentCache, checkedInstruments: prevProtestos === null || prevProtestos === void 0 ? void 0 : prevProtestos.checkedInstruments }) });
119
+ return __assign(__assign({}, prevState), { protestos: registros, protestosData: __assign(__assign({}, clearProtestosCollections(prevProtestos)), { protestosDeCredito: protestosDeCredito, protestosDeImposto: protestosDeImposto, protestosGerais: protestosGerais, totalProtestos: registros, valorTotalProtestos: valorTotalProtestos, cartorio: cartorio, isLoaded: true, isLoading: false, error: undefined, iaOverrides: prevProtestos === null || prevProtestos === void 0 ? void 0 : prevProtestos.iaOverrides, nmChaves: nmChave, failedInstruments: prevProtestos === null || prevProtestos === void 0 ? void 0 : prevProtestos.failedInstruments, failedInstrumentReasons: prevProtestos === null || prevProtestos === void 0 ? void 0 : prevProtestos.failedInstrumentReasons, instrumentCache: prevProtestos === null || prevProtestos === void 0 ? void 0 : prevProtestos.instrumentCache, checkedInstruments: prevProtestos === null || prevProtestos === void 0 ? void 0 : prevProtestos.checkedInstruments }) });
114
120
  });
115
121
  setDataUpdated(true);
116
122
  }, [
@@ -143,15 +149,15 @@ var Protestos = function (_a) {
143
149
  var elements = [
144
150
  {
145
151
  total: protestosDeCredito.length,
146
- element: (React.createElement(ProtestosCategory, { title: "Protestos de Cr\u00E9dito", subtitle: "Protestos de cr\u00E9dito em geral.", registros: protestosDeCredito.length, icon: ProtestosCreditoIcon }, protestosDeCredito.map(function (protesto, i) { return (React.createElement(ProtestoItem, { protesto: protesto, key: i, showInstrumento: showInstrumento })); })))
152
+ element: (React.createElement(ProtestosCategory, { title: "Protestos de Cr\u00E9dito", subtitle: "Protestos de cr\u00E9dito em geral.", registros: protestosDeCredito.length, icon: ProtestosCreditoIcon }, protestosDeCredito.map(function (protesto, i) { return (React.createElement(ProtestoItem, { protesto: protesto, key: i, showInstrumento: showInstrumento, onOpenCartorioModal: function () { return setIsModalCartorioOpen(true); } })); })))
147
153
  },
148
154
  {
149
155
  total: protestosDeImposto.length,
150
- element: (React.createElement(ProtestosCategory, { title: "Protestos de Imposto", subtitle: "Protestos de impostos federais, estaduais e municipais.", registros: protestosDeImposto.length, icon: ProtestosImpostosIcon }, protestosDeImposto.map(function (protesto, i) { return (React.createElement(ProtestoItem, { protesto: protesto, key: i, showInstrumento: showInstrumento })); })))
156
+ element: (React.createElement(ProtestosCategory, { title: "Protestos de Imposto", subtitle: "Protestos de impostos federais, estaduais e municipais.", registros: protestosDeImposto.length, icon: ProtestosImpostosIcon }, protestosDeImposto.map(function (protesto, i) { return (React.createElement(ProtestoItem, { protesto: protesto, key: i, showInstrumento: showInstrumento, onOpenCartorioModal: function () { return setIsModalCartorioOpen(true); } })); })))
151
157
  },
152
158
  {
153
159
  total: protestosGerais.length,
154
- element: (React.createElement(ProtestosCategory, { title: "Protestos Gerais", subtitle: "Protestos de outros tipos.", registros: protestosGerais.length, icon: ProtestosGeraisIcon }, protestosGerais.map(function (protesto, i) { return (React.createElement(ProtestoItem, { protesto: protesto, key: i, showInstrumento: showInstrumento })); })))
160
+ element: (React.createElement(ProtestosCategory, { title: "Protestos Gerais", subtitle: "Protestos de outros tipos.", registros: protestosGerais.length, icon: ProtestosGeraisIcon }, protestosGerais.map(function (protesto, i) { return (React.createElement(ProtestoItem, { protesto: protesto, key: i, showInstrumento: showInstrumento, onOpenCartorioModal: function () { return setIsModalCartorioOpen(true); } })); })))
155
161
  }
156
162
  ].sort(function (a, b) { return b.total - a.total; });
157
163
  var children = registros ? (React.createElement(ResultProtestos, null, elements.map(function (_a, i) {
@@ -180,21 +186,23 @@ var Protestos = function (_a) {
180
186
  }
181
187
  return ctx;
182
188
  }, [ctx, (_c = globalData === null || globalData === void 0 ? void 0 : globalData.protestosData) === null || _c === void 0 ? void 0 : _c.isLoading]);
183
- return (React.createElement(Section, { ctx: effectiveCtx, title: "Apontamentos na Central de Protestos (CENPROT)", subtitle: "Consulta de protestos de cr\u00E9dito, imposto e gerais.", icon: ProtestosIcon, onSuccess: handleSuccess, actions: typeof harlan !== 'undefined' ? (React.createElement(BtnWrapper, null,
184
- React.createElement(Button, { onClick: function () {
185
- var _a;
186
- // Obtém o documento do contexto e formata adequadamente
187
- var documento = ((_a = ctx === null || ctx === void 0 ? void 0 : ctx.data) === null || _a === void 0 ? void 0 : _a.documento) || '';
188
- var formattedDoc = (function () {
189
- var cleanDoc = documento.replace(/\D+/g, '');
190
- return cleanDoc.length === 14
191
- ? "".concat(cleanDoc.slice(0, 2), ".").concat(cleanDoc.slice(2, 5), ".").concat(cleanDoc.slice(5, 8), "/").concat(cleanDoc.slice(8, 12), "-").concat(cleanDoc.slice(12))
192
- : "".concat(cleanDoc.slice(0, 3), ".").concat(cleanDoc.slice(3, 6), ".").concat(cleanDoc.slice(6, 9), "-").concat(cleanDoc.slice(9));
193
- })();
194
- harlan === null || harlan === void 0 ? void 0 : harlan.call('creditHub::addLiminar', {
195
- document: formattedDoc
196
- });
197
- } }, "Apontar Protesto"))) : null }));
189
+ return (React.createElement(React.Fragment, null,
190
+ React.createElement(Section, { ctx: effectiveCtx, title: "Apontamentos na Central de Protestos (CENPROT)", subtitle: "Consulta de protestos de cr\u00E9dito, imposto e gerais.", icon: ProtestosIcon, onSuccess: handleSuccess, actions: typeof harlan !== 'undefined' ? (React.createElement(BtnWrapper, null,
191
+ React.createElement(Button, { onClick: function () {
192
+ var _a;
193
+ // Obtém o documento do contexto e formata adequadamente
194
+ var documento = ((_a = ctx === null || ctx === void 0 ? void 0 : ctx.data) === null || _a === void 0 ? void 0 : _a.documento) || '';
195
+ var formattedDoc = (function () {
196
+ var cleanDoc = documento.replace(/\D+/g, '');
197
+ return cleanDoc.length === 14
198
+ ? "".concat(cleanDoc.slice(0, 2), ".").concat(cleanDoc.slice(2, 5), ".").concat(cleanDoc.slice(5, 8), "/").concat(cleanDoc.slice(8, 12), "-").concat(cleanDoc.slice(12))
199
+ : "".concat(cleanDoc.slice(0, 3), ".").concat(cleanDoc.slice(3, 6), ".").concat(cleanDoc.slice(6, 9), "-").concat(cleanDoc.slice(9));
200
+ })();
201
+ harlan === null || harlan === void 0 ? void 0 : harlan.call('creditHub::addLiminar', {
202
+ document: formattedDoc
203
+ });
204
+ } }, "Apontar Protesto"))) : null }),
205
+ React.createElement(ModalDadosCartorio, { isOpen: isModalCartorioOpen, onClose: function () { return setIsModalCartorioOpen(false); }, cartorio: (_e = (_d = globalData === null || globalData === void 0 ? void 0 : globalData.protestosData) === null || _d === void 0 ? void 0 : _d.cartorio) !== null && _e !== void 0 ? _e : null })));
198
206
  };
199
207
  export default React.memo(Protestos);
200
208
  var templateObject_1, templateObject_2;
@@ -1,8 +1,9 @@
1
1
  import { Protesto } from '../../utils/parseProtesto';
2
2
  import React from 'react';
3
- export declare const ProtestoItem: React.MemoExoticComponent<({ protesto, showInstrumento }: {
3
+ export declare const ProtestoItem: React.MemoExoticComponent<({ protesto, showInstrumento, onOpenCartorioModal }: {
4
4
  protesto: Protesto;
5
5
  showInstrumento: boolean;
6
+ onOpenCartorioModal?: () => void;
6
7
  }) => React.JSX.Element>;
7
8
  export declare const Instrumento: ({ nm_chave, cpfCnpj }: {
8
9
  nm_chave?: string;
@@ -37,7 +37,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  import { useGlobalData } from '../../contexts/globalDataContext';
38
38
  import { formatMoney } from '../../utils/number';
39
39
  import { isProtestoSPByNmChave } from '../../utils/protestoUf';
40
- import { formatDocument } from '../../utils/string';
41
40
  import React, { memo, useCallback, useContext, useEffect, useMemo, useState } from 'react';
42
41
  import AddItemField from '../common/addItem';
43
42
  import Button from '../common/button';
@@ -127,17 +126,34 @@ var AIIndicator = function () { return (React.createElement("span", { title: "In
127
126
  fontSize: '0.8em',
128
127
  cursor: 'help'
129
128
  } }, "*")); };
129
+ var UfCell = function (_a) {
130
+ var uf = _a.uf, hasCartorio = _a.hasCartorio, onOpenCartorio = _a.onOpenCartorio;
131
+ var display = uf && uf.trim() !== '' ? uf : '—';
132
+ if (hasCartorio && onOpenCartorio) {
133
+ return (React.createElement("button", { type: "button", onClick: onOpenCartorio, title: "Ver dados do cart\u00F3rio", style: {
134
+ background: 'none',
135
+ border: 'none',
136
+ padding: 0,
137
+ cursor: 'pointer',
138
+ textDecoration: 'underline',
139
+ color: 'inherit',
140
+ font: 'inherit'
141
+ } }, display));
142
+ }
143
+ return (React.createElement("span", { title: !hasCartorio ? 'Dados do cartório não disponíveis' : undefined }, display));
144
+ };
130
145
  export var ProtestoItem = memo(function (_a) {
131
- var _b, _c;
132
- var protesto = _a.protesto, showInstrumento = _a.showInstrumento;
146
+ var _b, _c, _d;
147
+ var protesto = _a.protesto, showInstrumento = _a.showInstrumento, onOpenCartorioModal = _a.onOpenCartorioModal;
133
148
  var client = useContext(WebService);
134
- var _d = useGlobalData(), setData = _d.setData, globalData = _d.data;
135
- var iaOverrides = ((_b = globalData === null || globalData === void 0 ? void 0 : globalData.protestosData) === null || _b === void 0 ? void 0 : _b.iaOverrides) || {};
136
- var refreshToken = ((_c = globalData === null || globalData === void 0 ? void 0 : globalData.protestosData) === null || _c === void 0 ? void 0 : _c.refreshToken) || 0;
137
- var _e = useState(null), quemApresentou = _e[0], setQuemApresentou = _e[1];
138
- var _f = useState(false), loading = _f[0], setLoading = _f[1];
139
- var _g = useState(false), queued = _g[0], setQueued = _g[1];
140
- var _h = useState(false), isAIData = _h[0], setIsAIData = _h[1];
149
+ var _e = useGlobalData(), setData = _e.setData, globalData = _e.data;
150
+ var cartorio = (_b = globalData === null || globalData === void 0 ? void 0 : globalData.protestosData) === null || _b === void 0 ? void 0 : _b.cartorio;
151
+ var iaOverrides = ((_c = globalData === null || globalData === void 0 ? void 0 : globalData.protestosData) === null || _c === void 0 ? void 0 : _c.iaOverrides) || {};
152
+ var refreshToken = ((_d = globalData === null || globalData === void 0 ? void 0 : globalData.protestosData) === null || _d === void 0 ? void 0 : _d.refreshToken) || 0;
153
+ var _f = useState(null), quemApresentou = _f[0], setQuemApresentou = _f[1];
154
+ var _g = useState(false), loading = _g[0], setLoading = _g[1];
155
+ var _h = useState(false), queued = _h[0], setQueued = _h[1];
156
+ var _j = useState(false), isAIData = _j[0], setIsAIData = _j[1];
141
157
  var documento = protesto.cpfCnpj;
142
158
  var nm_chave = protesto.nm_chave;
143
159
  var formatBooleanField = function (value) {
@@ -213,11 +229,11 @@ export var ProtestoItem = memo(function (_a) {
213
229
  return (React.createElement(ResultContent, { print: "repeat(7, 1fr)", desktop: "repeat(8, 1fr)", tablet: "repeat(4, 1fr)", mobile: "repeat(2, 1fr)" },
214
230
  React.createElement(AddItemField, { name: "Quem Protestou", value: getQuemProtestouDisplay() }),
215
231
  React.createElement(AddItemField, { name: "Atrav\u00E9s De", value: protesto.nomeApresentante }),
216
- React.createElement(AddItemField, { name: "CPF/CNPJ Protestado", value: formatDocument(protesto.cpfCnpj) }),
217
232
  React.createElement(AddItemField, { name: "Data Do Protesto", value: protesto.dataProtesto }),
218
233
  React.createElement(AddItemField, { name: "Possui Anu\u00EAncia / Protesto Pago", value: formatBooleanField(String(protesto.temAnuencia)) }),
219
234
  React.createElement(AddItemField, { name: "Valor Do Protesto", value: formatMoney(protesto.valor) }),
220
- protesto.vl_custas && (React.createElement(AddItemField, { name: "Custas de Cart\u00F3rio para Baixa", value: formatMoney(protesto.vl_custas) })),
235
+ React.createElement(AddItemField, { name: "Custas de Cart\u00F3rio para Baixa", value: protesto.vl_custas ? formatMoney(protesto.vl_custas) : '—' }),
236
+ React.createElement(AddItemField, { name: "UF", value: React.createElement(UfCell, { uf: cartorio === null || cartorio === void 0 ? void 0 : cartorio.uf, hasCartorio: Boolean(cartorio), onOpenCartorio: onOpenCartorioModal }) }),
221
237
  showInstrumento && React.createElement(Instrumento, { nm_chave: nm_chave, cpfCnpj: documento })));
222
238
  });
223
239
  export var Instrumento = function (_a) {
@@ -12,7 +12,6 @@ var __assign = (this && this.__assign) || function () {
12
12
  import ProtestosIcon from '../../assets/icones/protestos';
13
13
  import { useGlobalData } from '../../contexts/globalDataContext';
14
14
  import { formatMoney } from '../../utils/number';
15
- import { formatDocument } from '../../utils/string';
16
15
  import React, { memo, useEffect, useMemo, useRef } from 'react';
17
16
  import AddItemField from '../common/addItem';
18
17
  import { Result, ResultContent } from '../interface/result';
@@ -23,10 +22,9 @@ import { adaptToUI, buildChartSeries } from './adaptToChart';
23
22
  // Componente individual para cada protesto pago/baixado
24
23
  var ProtestoHistoricoItemComponent = memo(function (_a) {
25
24
  var protesto = _a.protesto;
26
- return (React.createElement(ResultContent, { print: "repeat(7, 1fr)", desktop: "repeat(8, 1fr)", tablet: "repeat(4, 1fr)", mobile: "repeat(2, 1fr)" },
25
+ return (React.createElement(ResultContent, { print: "repeat(6, 1fr)", desktop: "repeat(7, 1fr)", tablet: "repeat(4, 1fr)", mobile: "repeat(2, 1fr)" },
27
26
  React.createElement(AddItemField, { name: "Quem Protestou", value: protesto.nomeCedente }),
28
27
  React.createElement(AddItemField, { name: "Atrav\u00E9s De", value: protesto.nomeApresentante }),
29
- React.createElement(AddItemField, { name: "CPF/CNPJ Protestado", value: formatDocument(protesto.cpfCnpj) }),
30
28
  React.createElement(AddItemField, { name: "Data Do Protesto", value: protesto.dataProtesto }),
31
29
  React.createElement(AddItemField, { name: "Possui Anu\u00EAncia / Protesto Pago", value: protesto.temAnuencia ? 'Sim' : 'Não' }),
32
30
  React.createElement(AddItemField, { name: "Valor Do Protesto", value: formatMoney(protesto.valor) })));
@@ -0,0 +1,6 @@
1
+ import type { Cartorio } from '@/@types/domain/cartorioTypes';
2
+ /**
3
+ * Parseia o nó `<cartorio>` do XML IEPTB e retorna um objeto Cartorio.
4
+ * XPaths relativos ao nó cartório (./nome, ./uf, etc.).
5
+ */
6
+ export declare function parseCartorio(cartorioNode: Node | null | undefined): Cartorio | undefined;
@@ -0,0 +1,34 @@
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 XPathUtils from '../utils/xpath';
13
+ /**
14
+ * Parseia o nó `<cartorio>` do XML IEPTB e retorna um objeto Cartorio.
15
+ * XPaths relativos ao nó cartório (./nome, ./uf, etc.).
16
+ */
17
+ export function parseCartorio(cartorioNode) {
18
+ if (!cartorioNode)
19
+ return undefined;
20
+ var $ = function (xp) { return XPathUtils.select(xp, cartorioNode); };
21
+ var nome = $('string(./nome)');
22
+ var endereco = $('string(./endereco)');
23
+ var bairro = $('string(./bairro)');
24
+ var cidade = $('string(./cidade)');
25
+ var uf = $('string(./uf)');
26
+ var telefone = $('string(./telefone)');
27
+ var codigo_cartorio = $('string(./codigo_cartorio)');
28
+ var codigo_cidade = $('string(./codigo_cidade)');
29
+ var email = $('string(./email)');
30
+ var hasAny = [nome, endereco, bairro, cidade, uf, telefone, codigo_cartorio, codigo_cidade, email].some(function (v) { return v != null && String(v).trim() !== ''; });
31
+ if (!hasAny)
32
+ return undefined;
33
+ return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, ((nome === null || nome === void 0 ? void 0 : nome.trim()) && { nome: nome.trim() })), ((endereco === null || endereco === void 0 ? void 0 : endereco.trim()) && { endereco: endereco.trim() })), ((bairro === null || bairro === void 0 ? void 0 : bairro.trim()) && { bairro: bairro.trim() })), ((cidade === null || cidade === void 0 ? void 0 : cidade.trim()) && { cidade: cidade.trim() })), ((uf === null || uf === void 0 ? void 0 : uf.trim()) && { uf: uf.trim() })), ((telefone === null || telefone === void 0 ? void 0 : telefone.trim()) && { telefone: telefone.trim() })), ((codigo_cartorio === null || codigo_cartorio === void 0 ? void 0 : codigo_cartorio.trim()) && { codigo_cartorio: codigo_cartorio.trim() })), ((codigo_cidade === null || codigo_cidade === void 0 ? void 0 : codigo_cidade.trim()) && { codigo_cidade: codigo_cidade.trim() })), ((email === null || email === void 0 ? void 0 : email.trim()) && { email: email.trim() }));
34
+ }