@plasoft/boletos 1.0.74 → 1.0.75

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.
@@ -0,0 +1,3667 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __async = (__this, __arguments, generator) => {
21
+ return new Promise((resolve, reject) => {
22
+ var fulfilled = (value) => {
23
+ try {
24
+ step(generator.next(value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ };
29
+ var rejected = (value) => {
30
+ try {
31
+ step(generator.throw(value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ };
36
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
+ step((generator = generator.apply(__this, __arguments)).next());
38
+ });
39
+ };
40
+
41
+ // src/utils/compileHbs.ts
42
+ import hbs from "handlebars";
43
+ import fs from "fs";
44
+ function compileHbs(templatePath, data) {
45
+ const html = fs.readFileSync(templatePath, "utf-8");
46
+ const content = hbs.compile(html)(data);
47
+ return content;
48
+ }
49
+
50
+ // src/utils/getPathTemplates.ts
51
+ import path from "path";
52
+ function getPathTemplates(template) {
53
+ if (process.env.NODE_ENV === "dev") {
54
+ return path.resolve(process.cwd(), "views", template);
55
+ }
56
+ return path.resolve(__dirname, template);
57
+ }
58
+
59
+ // src/services/api.ts
60
+ import "dotenv/config";
61
+ import axios from "axios";
62
+ var api = axios.create({
63
+ baseURL: process.env.API_URL || "https://23136fv876.execute-api.sa-east-1.amazonaws.com/dev/create-report"
64
+ });
65
+
66
+ // src/utils/zip.ts
67
+ import * as zlib from "zlib";
68
+ function decompress(input) {
69
+ return new Promise((resolve, reject) => {
70
+ zlib.gunzip(input, (error, result) => {
71
+ if (error) {
72
+ return reject(error);
73
+ }
74
+ resolve(result.toString());
75
+ });
76
+ });
77
+ }
78
+
79
+ // src/banks/sicredi/gerarPDFCarne.ts
80
+ import BwipJs from "bwip-js";
81
+
82
+ // src/utils/maskFormat.ts
83
+ import StringMask from "string-mask";
84
+ function retornaCpfCnpjFormatado(cpfCnpj) {
85
+ if ((cpfCnpj == null ? void 0 : cpfCnpj.length) <= 11) {
86
+ const formatter2 = new StringMask("000.000.000-00");
87
+ return formatter2.apply(cpfCnpj);
88
+ }
89
+ const formatter = new StringMask("00.000.000/0000-00");
90
+ return formatter.apply(cpfCnpj);
91
+ }
92
+ function retornaCEPFormatado(cep) {
93
+ const formatter = new StringMask("00000-000");
94
+ return formatter.apply(cep);
95
+ }
96
+ function numberToReal(numero) {
97
+ numero = typeof numero === "string" ? parseFloat(numero) : numero;
98
+ numero = numero.toFixed(2).split(".");
99
+ numero[0] = numero[0].split(/(?=(?:...)*$)/).join(".");
100
+ return numero.join(",");
101
+ }
102
+ function codigoBarra(codigo) {
103
+ const formatter = new StringMask("00000.00000 00000.000000 00000.000000 0 000000000000000");
104
+ return formatter.apply(codigo.replace(/\D/g, ""));
105
+ }
106
+ var maskFormat_default = {
107
+ numberToReal,
108
+ retornaCEPFormatado,
109
+ retornaCpfCnpjFormatado,
110
+ codigoBarra
111
+ };
112
+
113
+ // src/banks/sicredi/gerarPDFCarne.ts
114
+ import QRCode from "qrcode";
115
+ function gerarPDFCarne(_0) {
116
+ return __async(this, arguments, function* ({ dados }) {
117
+ try {
118
+ const { generatePDF, dadosPDF } = dados;
119
+ const carnes = [];
120
+ if (!dadosPDF.pagador.cpfcnpj) {
121
+ throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
122
+ }
123
+ dadosPDF.beneficiario.dadosBancario.agencia = dadosPDF.beneficiario.dadosBancario.agencia.padStart(4, "0");
124
+ dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
125
+ dadosPDF.beneficiario.cnpj
126
+ );
127
+ dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
128
+ dadosPDF.pagador.endereco.cep
129
+ );
130
+ dadosPDF.pagador.cpfcnpj = maskFormat_default.retornaCpfCnpjFormatado(dadosPDF.pagador.cpfcnpj);
131
+ for (const boleto of dados.dadosPDF.boleto) {
132
+ const codigoBarra2 = yield BwipJs.toBuffer({
133
+ bcid: "interleaved2of5",
134
+ text: boleto.codigoBarra,
135
+ height: 20
136
+ });
137
+ const qrCode = yield QRCode.toDataURL(boleto.pixCopiaCola, {
138
+ errorCorrectionLevel: "H",
139
+ type: "image/png",
140
+ margin: 1,
141
+ scale: 6
142
+ });
143
+ boleto.qrCodeImage = qrCode;
144
+ boleto.linhaDigitavel = maskFormat_default.codigoBarra(boleto.linhaDigitavel);
145
+ boleto.codigoBarraImage = codigoBarra2.toString("base64");
146
+ boleto.valorAcrescimo = maskFormat_default.numberToReal(
147
+ boleto.valorAcrescimo
148
+ );
149
+ boleto.valorCobrado = maskFormat_default.numberToReal(
150
+ boleto.valorCobrado
151
+ );
152
+ boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
153
+ boleto.valorDescontoAbatimento
154
+ );
155
+ const valorDocumento = Number(boleto.valorDocumento);
156
+ boleto.valorDocumento = maskFormat_default.numberToReal(
157
+ boleto.valorDocumento
158
+ );
159
+ boleto.valorMulta = maskFormat_default.numberToReal(boleto.valorMulta);
160
+ boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
161
+ boleto.valorOutrasDeducoes
162
+ );
163
+ const jurosMes = dadosPDF.beneficiario.dadosBancario.juros;
164
+ const jurosDia = jurosMes / 100 / 30 * valorDocumento;
165
+ if (jurosDia > 0) {
166
+ boleto.instrucao1 = `COBRAR JUROS DE R$${maskFormat_default.numberToReal(jurosDia)} AO DIA, AP\xD3S O VENCIMENTO`;
167
+ }
168
+ const descontoVencimento = boleto.desconto > 0 ? boleto.desconto : dadosPDF.beneficiario.dadosBancario.desconto > 0 ? dadosPDF.beneficiario.dadosBancario.desconto : 0;
169
+ if (descontoVencimento > 0) {
170
+ boleto.instrucao2 = `AT\xC9 O VENCIMENTO, CONCEDER DESCONTO DE ${descontoVencimento}%`;
171
+ }
172
+ const multaAtraso = dadosPDF.beneficiario.dadosBancario.multa || 0;
173
+ if (multaAtraso > 0) {
174
+ boleto.instrucao3 = `MULTA DE ${multaAtraso}%`;
175
+ }
176
+ const protestoDias = dadosPDF.beneficiario.dadosBancario.protesto || 0;
177
+ if (protestoDias > 0) {
178
+ boleto.instrucao4 = `PROTESTAR AP\xD3S ${protestoDias} DIAS CORRIDOS DO VENCIMENTO`;
179
+ }
180
+ dadosPDF.pagador.isCnpj = dadosPDF.pagador.cpfcnpj.length > 14;
181
+ carnes.push({ boleto, pagador: dadosPDF.pagador, beneficiario: dadosPDF.beneficiario });
182
+ }
183
+ const content = compileHbs(getPathTemplates("sicredi-carne.hbs"), { boletos: carnes });
184
+ const config = {
185
+ displayHeaderFooter: false,
186
+ path: "./boleto.pdf",
187
+ format: "a4",
188
+ printBackground: true,
189
+ preferCSSPageSize: true
190
+ };
191
+ let pdfBase64 = null;
192
+ if (generatePDF) {
193
+ pdfBase64 = yield generatePDF(content, config);
194
+ } else {
195
+ if (!api.defaults.baseURL) {
196
+ throw new Error("BaseURL api not found");
197
+ }
198
+ const response = yield api.post("/", { content, config });
199
+ const buffer = Buffer.from(response.data.pdf);
200
+ pdfBase64 = yield decompress(buffer);
201
+ }
202
+ return {
203
+ erro: false,
204
+ dados: pdfBase64
205
+ };
206
+ } catch (error) {
207
+ console.log(error);
208
+ if (error instanceof Error) {
209
+ return {
210
+ erro: true,
211
+ dados: error.message
212
+ };
213
+ }
214
+ return {
215
+ erro: true,
216
+ dados: "Falha ao gerar impress\xE3o do boleto"
217
+ };
218
+ }
219
+ });
220
+ }
221
+
222
+ // src/utils/getFatorVencimento.ts
223
+ import { differenceInDays } from "date-fns";
224
+ function getFatorVencimento(vencimento) {
225
+ vencimento = new Date(vencimento);
226
+ if (vencimento >= new Date(2025, 1, 22)) {
227
+ return differenceInDays(new Date(vencimento), new Date(2022, 4, 29)).toString();
228
+ } else {
229
+ return differenceInDays(new Date(vencimento), new Date(1997, 9, 7)).toString();
230
+ }
231
+ }
232
+
233
+ // src/utils/copy.ts
234
+ function copy(texto, startPosition, endPosition) {
235
+ let retorno2 = "";
236
+ if (typeof texto === "number")
237
+ texto = String(texto);
238
+ if (!endPosition)
239
+ endPosition = texto.length;
240
+ for (let i = 0; i < texto.length; i++) {
241
+ const index = i + 1;
242
+ if (index >= startPosition && index <= endPosition) {
243
+ const letra = texto[i];
244
+ retorno2 += letra;
245
+ }
246
+ }
247
+ return retorno2;
248
+ }
249
+
250
+ // src/banks/sicredi/gerarDadosBoleto.ts
251
+ function gerarDadosBoleto({ dados }) {
252
+ try {
253
+ const { bancario, parcela } = dados;
254
+ parcela.valor = Number(parcela.valor);
255
+ const fatorVencimento = getFatorVencimento(parcela.vencimento);
256
+ const valor = getValor(parcela.valor);
257
+ const nossoNumero = getNossoNumero(
258
+ parcela.numeroUnico,
259
+ bancario.agencia,
260
+ bancario.posto,
261
+ bancario.codigoCedente
262
+ );
263
+ let campoLivre = bancario.tipoCobranca + bancario.tipoCarteira + nossoNumero + bancario.agencia.padStart(4, "0") + bancario.posto.padStart(2, "0") + bancario.codigoCedente.padStart(5, "0") + 10;
264
+ const digitoCampoLivre = getDigitoCampoLivre(campoLivre);
265
+ campoLivre = campoLivre + digitoCampoLivre;
266
+ const digitoGeral = getDigitoGeral(`7489${fatorVencimento}${valor}${campoLivre}`);
267
+ const codigoBarra2 = `7489${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
268
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
269
+ const campo2 = copy(codigoBarra2, 25, 34);
270
+ const campo3 = copy(codigoBarra2, 35, 44);
271
+ const campo4 = copy(codigoBarra2, 5, 5);
272
+ const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
273
+ const digito1 = getDigito(campo1);
274
+ const digito2 = getDigito(campo2);
275
+ const digito3 = getDigito(campo3);
276
+ const linhaDigitavel = campo1 + digito1 + campo2 + digito2 + campo3 + digito3 + campo4 + /*digito4*/
277
+ +campo5;
278
+ const dadosBoleto = {
279
+ linhaDigitavel,
280
+ fatorVencimento,
281
+ valor,
282
+ nossoNumero,
283
+ campoLivre,
284
+ digitoGeral,
285
+ codigoBarra: codigoBarra2
286
+ };
287
+ return dadosBoleto;
288
+ } catch (error) {
289
+ console.log("Falha ao gerar dados do boleto", error);
290
+ return null;
291
+ }
292
+ }
293
+ function getNossoNumero(id, agencia, posto, codigoCedente) {
294
+ let i = 19;
295
+ let j = 1;
296
+ let soma = 0;
297
+ let digito = 0;
298
+ const texto = agencia.padStart(4, "0") + posto.padStart(2, "0") + codigoCedente.padStart(5, "0") + id.padStart(8, "0");
299
+ while (i >= 1) {
300
+ j++;
301
+ if (j === 10)
302
+ j = 2;
303
+ const valor = Number(copy(texto, i, i));
304
+ soma += j * valor;
305
+ i--;
306
+ }
307
+ const restoDivisao = soma % 11;
308
+ digito = 11 - restoDivisao;
309
+ if (restoDivisao === 0 || restoDivisao === 1)
310
+ digito = 0;
311
+ return id.padStart(8, "0") + digito.toString();
312
+ }
313
+ function getValor(valor) {
314
+ const valorFormatado = valor.toFixed(2).replace(/\D/g, "");
315
+ return valorFormatado.padStart(10, "0");
316
+ }
317
+ function getDigitoCampoLivre(texto) {
318
+ let i = 24;
319
+ let j = 1;
320
+ let soma = 0;
321
+ let digito = 0;
322
+ while (i >= 1) {
323
+ j++;
324
+ if (j === 10)
325
+ j = 2;
326
+ let valor = Number(copy(texto, i, i));
327
+ soma += valor * j;
328
+ i--;
329
+ }
330
+ const restoDivisao = soma % 11;
331
+ if (restoDivisao > 1)
332
+ digito = 11 - restoDivisao;
333
+ return String(digito);
334
+ }
335
+ function getDigitoGeral(texto) {
336
+ let i = 43;
337
+ let j = 1;
338
+ let soma = 0;
339
+ let digito = 0;
340
+ while (i >= 1) {
341
+ j++;
342
+ if (j === 10)
343
+ j = 2;
344
+ const valor = Number(copy(texto, i, i));
345
+ soma += j * valor;
346
+ i--;
347
+ }
348
+ const restoDivisao = soma % 11;
349
+ digito = 11 - restoDivisao;
350
+ if (digito <= 1 || digito >= 10)
351
+ digito = 1;
352
+ return String(digito);
353
+ }
354
+ function getDigito(texto) {
355
+ let i = texto.length;
356
+ let j = 1;
357
+ let total = 0;
358
+ let soma = 0;
359
+ let digito = 0;
360
+ while (i >= 1) {
361
+ j = j === 1 ? 2 : 1;
362
+ let valor = Number(copy(texto, i, i));
363
+ total = valor * j;
364
+ if (total >= 10) {
365
+ valor = Number(copy(total, 1, 1)) + Number(copy(total, 2, 2));
366
+ } else {
367
+ valor = total;
368
+ }
369
+ soma += valor;
370
+ i--;
371
+ }
372
+ const uni = Number(copy(soma, String(soma).length, String(soma).length));
373
+ digito = 10 - uni;
374
+ if (digito === 10)
375
+ digito = 0;
376
+ return String(digito);
377
+ }
378
+
379
+ // src/banks/sicredi/gerarPDF.ts
380
+ import BwipJs2 from "bwip-js";
381
+ function gerarPDF(_0) {
382
+ return __async(this, arguments, function* ({ dados }) {
383
+ try {
384
+ const { generatePDF, dadosPDF } = dados;
385
+ if (!dadosPDF.pagador.cpfcnpj) {
386
+ throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
387
+ }
388
+ const codigoBarra2 = yield BwipJs2.toBuffer({
389
+ bcid: "interleaved2of5",
390
+ text: dadosPDF.boleto.codigoBarra,
391
+ height: 20
392
+ });
393
+ dadosPDF.beneficiario.dadosBancario.agencia = dadosPDF.beneficiario.dadosBancario.agencia.padStart(4, "0");
394
+ dadosPDF.boleto.linhaDigitavel = maskFormat_default.codigoBarra(dadosPDF.boleto.linhaDigitavel);
395
+ dadosPDF.boleto.codigoBarraImage = codigoBarra2.toString("base64");
396
+ dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
397
+ dadosPDF.beneficiario.cnpj
398
+ );
399
+ dadosPDF.beneficiario.endereco.cep = maskFormat_default.retornaCEPFormatado(
400
+ dadosPDF.beneficiario.endereco.cep
401
+ );
402
+ dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
403
+ dadosPDF.pagador.endereco.cep
404
+ );
405
+ dadosPDF.pagador.cpfcnpj = maskFormat_default.retornaCpfCnpjFormatado(dadosPDF.pagador.cpfcnpj);
406
+ dadosPDF.boleto.valorAcrescimo = maskFormat_default.numberToReal(
407
+ dadosPDF.boleto.valorAcrescimo
408
+ );
409
+ dadosPDF.boleto.valorCobrado = maskFormat_default.numberToReal(
410
+ dadosPDF.boleto.valorCobrado
411
+ );
412
+ dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
413
+ dadosPDF.boleto.valorDescontoAbatimento
414
+ );
415
+ const valorDocumento = Number(dadosPDF.boleto.valorDocumento);
416
+ dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
417
+ dadosPDF.boleto.valorDocumento
418
+ );
419
+ dadosPDF.boleto.valorMulta = maskFormat_default.numberToReal(dadosPDF.boleto.valorMulta);
420
+ dadosPDF.boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
421
+ dadosPDF.boleto.valorOutrasDeducoes
422
+ );
423
+ if (dadosPDF.boleto.quantidade) {
424
+ dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
425
+ }
426
+ const jurosMes = dadosPDF.beneficiario.dadosBancario.juros;
427
+ const jurosDia = jurosMes / 100 / 30 * valorDocumento;
428
+ if (jurosDia > 0) {
429
+ dadosPDF.boleto.instrucao1 = `COBRAR JUROS DE R$${maskFormat_default.numberToReal(jurosDia)} AO DIA, AP\xD3S O VENCIMENTO`;
430
+ }
431
+ const descontoVencimento = dadosPDF.boleto.desconto > 0 ? dadosPDF.boleto.desconto : dadosPDF.beneficiario.dadosBancario.desconto > 0 ? dadosPDF.beneficiario.dadosBancario.desconto : 0;
432
+ if (descontoVencimento > 0) {
433
+ dadosPDF.boleto.instrucao2 = `AT\xC9 O VENCIMENTO, CONCEDER DESCONTO DE ${descontoVencimento}%`;
434
+ }
435
+ const multaAtraso = dadosPDF.beneficiario.dadosBancario.multa || 0;
436
+ if (multaAtraso > 0) {
437
+ dadosPDF.boleto.instrucao3 = `MULTA DE ${multaAtraso}%`;
438
+ }
439
+ const protestoDias = dadosPDF.beneficiario.dadosBancario.protesto || 0;
440
+ if (protestoDias > 0) {
441
+ dadosPDF.boleto.instrucao4 = `PROTESTAR AP\xD3S ${protestoDias} DIAS CORRIDOS DO VENCIMENTO`;
442
+ }
443
+ dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
444
+ dadosPDF.pagador.isCnpj = dadosPDF.pagador.cpfcnpj.length > 14;
445
+ const content = compileHbs(getPathTemplates("sicredi-boleto.hbs"), dadosPDF);
446
+ const config = {
447
+ displayHeaderFooter: false,
448
+ path: "./boleto.pdf",
449
+ format: "a4",
450
+ printBackground: true
451
+ };
452
+ let pdfBase64 = null;
453
+ if (generatePDF) {
454
+ pdfBase64 = yield generatePDF(content, config);
455
+ } else {
456
+ if (!api.defaults.baseURL) {
457
+ throw new Error("BaseURL api not found");
458
+ }
459
+ const response = yield api.post("/", { content, config });
460
+ const buffer = Buffer.from(response.data.pdf);
461
+ pdfBase64 = yield decompress(buffer);
462
+ }
463
+ return {
464
+ erro: false,
465
+ dados: pdfBase64
466
+ };
467
+ } catch (error) {
468
+ console.log(error);
469
+ if (error instanceof Error) {
470
+ return {
471
+ erro: true,
472
+ dados: error.message
473
+ };
474
+ }
475
+ return {
476
+ erro: true,
477
+ dados: "Falha ao gerar impress\xE3o do boleto"
478
+ };
479
+ }
480
+ });
481
+ }
482
+
483
+ // src/lib/Arquivo.ts
484
+ var Arquivo = class {
485
+ constructor() {
486
+ this.arquivo = "";
487
+ this.arquivo = "";
488
+ }
489
+ add(texto) {
490
+ this.arquivo += texto;
491
+ }
492
+ addLine() {
493
+ this.arquivo += "\n";
494
+ }
495
+ getArquivo() {
496
+ return this.arquivo;
497
+ }
498
+ };
499
+
500
+ // src/utils/removerCaracterEspecial.ts
501
+ function removerCaracterEspecial(texto) {
502
+ if (!texto)
503
+ return "";
504
+ let textoFormatado = texto.replace(/[`~!@#$°%^&*()_+=?;'"<>{}[\]\\]/gi, "");
505
+ textoFormatado = textoFormatado.replace(/[áàãâä]/g, "a");
506
+ textoFormatado = textoFormatado.replace(/[ÁÀÃÂÄ]/g, "A");
507
+ textoFormatado = textoFormatado.replace(/[éèêë]/g, "e");
508
+ textoFormatado = textoFormatado.replace(/[ÉÈÊË]/g, "E");
509
+ textoFormatado = textoFormatado.replace(/[íìîï]/g, "i");
510
+ textoFormatado = textoFormatado.replace(/[ÍÌÎÏ]/g, "I");
511
+ textoFormatado = textoFormatado.replace(/[óòõôö]/g, "o");
512
+ textoFormatado = textoFormatado.replace(/[ÓÒÔÕÖ]/g, "O");
513
+ textoFormatado = textoFormatado.replace(/[úùûü]/g, "u");
514
+ textoFormatado = textoFormatado.replace(/[ÚÙÛÜ]/g, "U");
515
+ textoFormatado = textoFormatado.replace(/ç/g, "c");
516
+ textoFormatado = textoFormatado.replace(/Ç/g, "C");
517
+ textoFormatado = textoFormatado.replace(/[^a-zA-Z0-9|/,-]/g, " ");
518
+ return textoFormatado;
519
+ }
520
+
521
+ // src/banks/sicredi/gerarRemessa.ts
522
+ import { format } from "date-fns";
523
+ function gerarRemessa({ dados }) {
524
+ try {
525
+ const { dadosBancario, beneficiario, boletos } = dados.remessa;
526
+ const arquivo = new Arquivo();
527
+ const data = /* @__PURE__ */ new Date();
528
+ let protestar = "00";
529
+ let negativar = "0000";
530
+ switch (dadosBancario.tipo_protesto) {
531
+ case "Nenhum":
532
+ protestar = "00";
533
+ negativar = "0000";
534
+ break;
535
+ case "Protestar":
536
+ protestar = "06";
537
+ negativar = "0000";
538
+ break;
539
+ case "Negativar":
540
+ protestar = "00";
541
+ negativar = "06" + String(dadosBancario.diasProtesto).padStart(2, "0");
542
+ break;
543
+ default:
544
+ protestar = "00";
545
+ negativar = "0000";
546
+ break;
547
+ }
548
+ arquivo.add("01REMESSA");
549
+ arquivo.add("01");
550
+ arquivo.add("COBRANCA".padEnd(15, " "));
551
+ arquivo.add(dadosBancario.codigo_cedente);
552
+ arquivo.add(beneficiario.cnpj);
553
+ arquivo.add(" ".padEnd(31, " "));
554
+ arquivo.add("748");
555
+ arquivo.add("SICREDI".padEnd(15, " "));
556
+ arquivo.add(format(data, "yyyyMMdd"));
557
+ arquivo.add(" ".padEnd(8, " "));
558
+ arquivo.add(dadosBancario.numeroRemessa.padStart(7, "0"));
559
+ arquivo.add(" ".padEnd(273, " "));
560
+ arquivo.add("2.00");
561
+ arquivo.add("000001");
562
+ arquivo.addLine();
563
+ let sequencia = 2;
564
+ let total = 0;
565
+ for (const boleto of boletos) {
566
+ const { pagador } = boleto;
567
+ total += Number(boleto.valor);
568
+ let tipoInscricao = pagador.pessoa === "F" ? "1" : "2";
569
+ let desconto = "0000000000000";
570
+ let dataDesconto = "000000";
571
+ if (boleto.desconto) {
572
+ desconto = boleto.desconto.toFixed(2).replace(".", "").padStart(13, "0");
573
+ dataDesconto = format(new Date(boleto.vencimento), "ddMMyy");
574
+ }
575
+ if (!boleto.desconto && dadosBancario.descontoPagamento) {
576
+ desconto = dadosBancario.descontoPagamento.toFixed(2).replace(".", "").padStart(13, "0");
577
+ dataDesconto = format(new Date(boleto.vencimento), "ddMMyy");
578
+ }
579
+ let valorJurosDias = Number(boleto.valor) * Number(dadosBancario.jurosMes) / 100 / 30;
580
+ let multaAtraso = String(dadosBancario.multaAtraso * 100);
581
+ arquivo.add("1");
582
+ arquivo.add("AAA");
583
+ arquivo.add(" ".padEnd(12, " "));
584
+ arquivo.add("AAA");
585
+ arquivo.add(" ".padEnd(28, " "));
586
+ arquivo.add(boleto.nossoNumero.padEnd(9, " "));
587
+ arquivo.add(" ".padEnd(6, " "));
588
+ arquivo.add(format(new Date(boleto.emissao), "yyyyMMdd"));
589
+ arquivo.add(" ");
590
+ arquivo.add("N");
591
+ arquivo.add(" ");
592
+ arquivo.add("B");
593
+ arquivo.add("0000");
594
+ arquivo.add(" ".padEnd(4, " "));
595
+ arquivo.add("0".padEnd(10, "0"));
596
+ arquivo.add(multaAtraso.padStart(4, "0"));
597
+ arquivo.add(" ".padEnd(12, " "));
598
+ arquivo.add("01");
599
+ arquivo.add(boleto.identificacaoTitulo.padEnd(10, " "));
600
+ arquivo.add(format(new Date(boleto.vencimento), "ddMMyy"));
601
+ arquivo.add(Number(boleto.valor).toFixed(2).replace(".", "").padStart(13, "0"));
602
+ arquivo.add(" ".padEnd(9, " "));
603
+ arquivo.add("A");
604
+ arquivo.add(boleto.aceite);
605
+ arquivo.add(format(new Date(boleto.emissao), "ddMMyy"));
606
+ arquivo.add(protestar);
607
+ arquivo.add(String(dadosBancario.diasProtesto).padStart(2, "0"));
608
+ arquivo.add(Number(valorJurosDias).toFixed(2).replace(".", "").padStart(13, "0"));
609
+ arquivo.add(dataDesconto);
610
+ arquivo.add(desconto);
611
+ arquivo.add(negativar);
612
+ arquivo.add("0".padEnd(22, "0"));
613
+ arquivo.add(tipoInscricao);
614
+ arquivo.add("0");
615
+ arquivo.add(pagador.cpfCnpj.padStart(14, "0"));
616
+ arquivo.add(removerCaracterEspecial(pagador.nome).substring(0, 40).padEnd(40, " "));
617
+ arquivo.add(removerCaracterEspecial(pagador.endereco.logradouro).substring(0, 40).padEnd(40, " "));
618
+ arquivo.add("0".padEnd(11, "0"));
619
+ arquivo.add(" ");
620
+ arquivo.add(pagador.endereco.cep.padEnd(8, " "));
621
+ arquivo.add("00000");
622
+ arquivo.add(" ".padEnd(55, " "));
623
+ arquivo.add(String(sequencia).padStart(6, "0"));
624
+ arquivo.addLine();
625
+ sequencia++;
626
+ }
627
+ arquivo.add("91748");
628
+ arquivo.add(dadosBancario.codigo_cedente);
629
+ arquivo.add(" ".padEnd(384, " "));
630
+ arquivo.add(String(sequencia).padStart(6, "0"));
631
+ arquivo.addLine();
632
+ return {
633
+ download: `${dadosBancario.codigo_cedente}${retornaMes(data)}${format(data, "dd")}.crm`,
634
+ arquivo: arquivo.getArquivo()
635
+ };
636
+ } catch (error) {
637
+ console.log(error);
638
+ return null;
639
+ }
640
+ }
641
+ function retornaMes(data) {
642
+ const mes = data.getMonth() + 1;
643
+ switch (mes) {
644
+ case 10:
645
+ return "O";
646
+ case 11:
647
+ return "N";
648
+ case 12:
649
+ return "D";
650
+ default:
651
+ return mes.toString();
652
+ }
653
+ }
654
+
655
+ // src/utils/agruparRetorno.ts
656
+ import { format as format2 } from "date-fns";
657
+ function agruparRetorno(documentos) {
658
+ return documentos.reduce((acc, documento) => {
659
+ const dateObj = new Date(documento.data);
660
+ if (isNaN(dateObj.getTime())) {
661
+ return acc;
662
+ }
663
+ const dataKey = format2(dateObj, "yyyy-MM-dd");
664
+ if (!acc[dataKey]) {
665
+ acc[dataKey] = [];
666
+ }
667
+ acc[dataKey].push(documento);
668
+ return acc;
669
+ }, {});
670
+ }
671
+
672
+ // src/banks/sicredi/gerarRetorno.ts
673
+ import { parse } from "date-fns";
674
+ function gerarRetorno({ dados }) {
675
+ try {
676
+ const { arquivo } = dados;
677
+ const documentos = [];
678
+ for (const linha of arquivo) {
679
+ const id_registro = linha.substring(0, 1);
680
+ if (id_registro !== "1" /* DETALHE */) {
681
+ continue;
682
+ }
683
+ const ocorrencia = linha.substring(108, 110);
684
+ if (ocorrencia !== "06" && ocorrencia !== "15" && ocorrencia !== "17" && ocorrencia !== "03") {
685
+ continue;
686
+ }
687
+ const motivo = linha.substring(213, 223).trim();
688
+ const meu_numero = linha.substring(116, 126).trim();
689
+ let tipo_documento = "";
690
+ let id_documento = "";
691
+ if (meu_numero.includes("-")) {
692
+ const [tipo, id] = meu_numero.split("-");
693
+ tipo_documento = tipo;
694
+ id_documento = id;
695
+ }
696
+ let especie = "INDEFINIDO";
697
+ if (tipo_documento.length) {
698
+ especie = tipo_documento === "N" ? "NFE" : tipo_documento === "F" ? "FAT" : tipo_documento === "L" ? "FIN" : "INDEFINIDO";
699
+ }
700
+ let dataCredito;
701
+ const dataCreditoString = linha.substring(328, 336);
702
+ if (dataCreditoString && dataCreditoString !== "00000000") {
703
+ dataCredito = parse(dataCreditoString, "yyyyMMdd", /* @__PURE__ */ new Date());
704
+ } else {
705
+ const dataOcorrenciaString = linha.substring(110, 116);
706
+ dataCredito = parse(dataOcorrenciaString, "ddMMyy", /* @__PURE__ */ new Date());
707
+ }
708
+ const valor_titulo = Number(linha.substring(152, 165)) / 100;
709
+ const abatimento = Number(linha.substring(227, 240)) / 100;
710
+ let valor_desconto = Number(linha.substring(240, 253)) / 100;
711
+ const valor_pago = Number(linha.substring(253, 266)) / 100;
712
+ let valor_juros = Number(linha.substring(266, 279)) / 100;
713
+ const valor_multa = Number(linha.substring(279, 292)) / 100;
714
+ if (valor_titulo > valor_pago && valor_desconto === 0) {
715
+ valor_desconto = valor_titulo - valor_pago;
716
+ }
717
+ if (valor_titulo < valor_pago && valor_juros === 0) {
718
+ valor_juros = valor_pago - valor_titulo;
719
+ }
720
+ const descontos = abatimento + valor_desconto;
721
+ const valor_total = valor_titulo + valor_multa + valor_juros - descontos;
722
+ let rejeitado = false;
723
+ let motivoRejeicao = "";
724
+ if (ocorrencia === "03") {
725
+ rejeitado = true;
726
+ motivoRejeicao = retornaMotivoRejeicao(motivo);
727
+ }
728
+ documentos.push({
729
+ id_documento,
730
+ especie,
731
+ valor: valor_pago,
732
+ valor_multa,
733
+ valor_juros,
734
+ valor_desconto,
735
+ valor_total,
736
+ data: dataCredito,
737
+ rejeitado,
738
+ motivo: motivoRejeicao
739
+ });
740
+ }
741
+ const documentosAgrupado = agruparRetorno(documentos);
742
+ return documentosAgrupado;
743
+ } catch (error) {
744
+ console.log(error);
745
+ return null;
746
+ }
747
+ }
748
+ function retornaMotivoRejeicao(codigo) {
749
+ switch (codigo) {
750
+ case "01":
751
+ return "C\xF3digo do banco inv\xE1lido";
752
+ case "02":
753
+ return "C\xF3digo do registro detalhe inv\xE1lido";
754
+ case "03":
755
+ return "C\xF3digo do segmento inv\xE1lido";
756
+ case "04":
757
+ return "C\xF3digo de movimento n\xE3o permitido para carteira";
758
+ case "05":
759
+ return "C\xF3digo de movimento inv\xE1lido";
760
+ case "06":
761
+ return "Tipo/n\xFAmero de inscri\xE7\xE3o do benefici\xE1rio inv\xE1lidos";
762
+ case "07":
763
+ return "Cooperativa cr\xE9dito/ag\xEAncia/conta/DV inv\xE1lido";
764
+ case "08":
765
+ return "Nosso n\xFAmero inv\xE1lido";
766
+ case "09":
767
+ return "Nosso n\xFAmero duplicado";
768
+ case "10":
769
+ return "Carteira inv\xE1lida";
770
+ case "11":
771
+ return "Forma de cadastramento do t\xEDtulo inv\xE1lido";
772
+ case "12":
773
+ return "Tipo de documento inv\xE1lido";
774
+ case "13":
775
+ return "Identifica\xE7\xE3o da emiss\xE3o do boleto inv\xE1lida";
776
+ case "14":
777
+ return "Identifica\xE7\xE3o da distribui\xE7\xE3o do boleto inv\xE1lida";
778
+ case "15":
779
+ return "Caracter\xEDsticas da cobran\xE7a incompat\xEDveis";
780
+ case "16":
781
+ return "Data de vencimento inv\xE1lida";
782
+ case "17":
783
+ return "Data de vencimento anterior a data de emiss\xE3o";
784
+ case "18":
785
+ return "Vencimento fora do prazo de opera\xE7\xE3o";
786
+ case "20":
787
+ return "Valor do t\xEDtulo inv\xE1lido";
788
+ case "21":
789
+ return "Esp\xE9cie do t\xEDtulo inv\xE1lida";
790
+ case "22":
791
+ return "Esp\xE9cie do t\xEDtulo n\xE3o permitida para a carteira";
792
+ case "23":
793
+ return "Aceite inv\xE1lido";
794
+ case "24":
795
+ return "Data da emiss\xE3o inv\xE1lida";
796
+ case "25":
797
+ return "Data da emiss\xE3o posterior a data de entrada";
798
+ case "26":
799
+ return "C\xF3digo de juros de mora inv\xE1lido";
800
+ case "27":
801
+ return "Valor/taxa de juros de mora inv\xE1lido";
802
+ case "28":
803
+ return "C\xF3digo do desconto inv\xE1lido";
804
+ case "29":
805
+ return "Valor do desconto maior ou igual ao valor do t\xEDtulo";
806
+ case "30":
807
+ return "Desconto a conceder n\xE3o confere";
808
+ case "31":
809
+ return "Concess\xE3o de desconto - j\xE1 existe desconto anterior";
810
+ case "33":
811
+ return "Valor do abatimento inv\xE1lido";
812
+ case "34":
813
+ return "Valor do abatimento maior ou igual ao valor do t\xEDtulo";
814
+ case "35":
815
+ return "Valor a conceder n\xE3o confere";
816
+ case "36":
817
+ return "Concess\xE3o de abatimento - j\xE1 existe abatimento anterior";
818
+ case "37":
819
+ return "C\xF3digo para protesto inv\xE1lido";
820
+ case "38":
821
+ return "Prazo para protesto inv\xE1lido";
822
+ case "39":
823
+ return "Pedido de protesto n\xE3o permitido para o t\xEDtulo";
824
+ case "40":
825
+ return "T\xEDtulo com ordem de protesto emitida";
826
+ case "41":
827
+ return "Pedido de cancelamento/susta\xE7\xE3o para t\xEDtulos sem instru\xE7\xE3o de protesto/negativa\xE7\xE3o";
828
+ case "44":
829
+ return "C\xF3digo da moeda inv\xE1lido";
830
+ case "45":
831
+ return "Nome do pagador n\xE3o informado";
832
+ case "46":
833
+ return "Tipo/n\xFAmero de inscri\xE7\xE3o do pagador inv\xE1lidos";
834
+ case "47":
835
+ return "Endere\xE7o do pagador n\xE3o informado";
836
+ case "48":
837
+ return "CEP inv\xE1lido";
838
+ case "53":
839
+ return "Tipo/n\xFAmero de inscri\xE7\xE3o do pagador/avalista inv\xE1lido";
840
+ case "54":
841
+ return "Pagador/avalista n\xE3o informado";
842
+ case "55":
843
+ return "Nosso n\xFAmero no banco correspondente n\xE3o informado";
844
+ case "56":
845
+ return "C\xF3digo do banco correspondente n\xE3o informado";
846
+ case "57":
847
+ return "C\xF3digo da multa inv\xE1lido";
848
+ case "58":
849
+ return "Data da multa inv\xE1lida";
850
+ case "59":
851
+ return "Valor/percentual da multa inv\xE1lido";
852
+ case "60":
853
+ return "Movimento para t\xEDtulo n\xE3o cadastrado";
854
+ case "61":
855
+ return "Altera\xE7\xE3o da cooperativa cr\xE9dito/ag\xEAncia cobradora/DV inv\xE1lida";
856
+ case "62":
857
+ return "Tipo de impress\xE3o inv\xE1lido";
858
+ case "63":
859
+ return "Entrada para t\xEDtulo j\xE1 cadastrado";
860
+ case "64":
861
+ return "N\xFAmero da linha inv\xE1lido";
862
+ case "79":
863
+ return "Data juros de mora inv\xE1lida";
864
+ case "80":
865
+ return "Data do desconto inv\xE1lida";
866
+ case "84":
867
+ return "N\xFAmero autoriza\xE7\xE3o inexistente";
868
+ case "85":
869
+ return "T\xEDtulo com pagamento vinculado";
870
+ case "86":
871
+ return "Seu n\xFAmero inv\xE1lido";
872
+ case "A4":
873
+ return "Pagador DDA";
874
+ case "CZ":
875
+ return "Instru\xE7\xE3o Inv\xE1lida";
876
+ case "L6":
877
+ return "Tipo de comando de instru\xE7\xE3o inv\xE1lida para benefici\xE1rio pessoa f\xEDsica.";
878
+ default:
879
+ return "Motivo desconhecido";
880
+ }
881
+ }
882
+
883
+ // src/banks/sicredi/index.ts
884
+ var sicredi = {
885
+ gerarDadosBoleto,
886
+ gerarPDF,
887
+ gerarRemessa,
888
+ gerarRetorno,
889
+ gerarPDFCarne
890
+ };
891
+
892
+ // src/types/Boletos.ts
893
+ var Banco = /* @__PURE__ */ ((Banco2) => {
894
+ Banco2["AILOS"] = "085";
895
+ Banco2["BRADESCO"] = "005";
896
+ Banco2["SICREDI"] = "748";
897
+ Banco2["SICOOB"] = "756";
898
+ Banco2["BANCO_BRASIL"] = "001";
899
+ Banco2["ITAU"] = "341";
900
+ return Banco2;
901
+ })(Banco || {});
902
+
903
+ // src/carne.ts
904
+ function carne({ banco, dados }) {
905
+ if (banco === "748" /* SICREDI */) {
906
+ return sicredi.gerarPDFCarne({ banco, dados });
907
+ }
908
+ }
909
+
910
+ // src/utils/pafLeft.ts
911
+ function padLeft(numero, tamanho) {
912
+ numero = String(numero);
913
+ if (numero.length < tamanho) {
914
+ numero = `0${numero}`;
915
+ return padLeft(numero, tamanho);
916
+ }
917
+ return numero;
918
+ }
919
+
920
+ // src/banks/ailos/gerarDadosBoleto.ts
921
+ function gerarDadosBoleto2({ dados }) {
922
+ try {
923
+ const { bancario, parcela } = dados;
924
+ parcela.valor = Number(parcela.valor);
925
+ const fatorVencimento = getFatorVencimento(parcela.vencimento);
926
+ const valor = getValor2(parcela.valor);
927
+ const convenio = padLeft(bancario.convenio, 6);
928
+ const numeroDocumento = padLeft(`${parcela.id_boleto}`, 9);
929
+ const nossoNumero = padLeft(bancario.numero + bancario.numero_dv, 8) + numeroDocumento;
930
+ const campoLivre = convenio + nossoNumero + padLeft(bancario.carteira, 2);
931
+ const digitoGeral = getDigitoGeral2(`0859${fatorVencimento}${valor}${campoLivre}`);
932
+ const codigoBarra2 = `0859${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
933
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
934
+ const campo2 = copy(codigoBarra2, 25, 34);
935
+ const campo3 = copy(codigoBarra2, 35, 44);
936
+ const campo4 = copy(codigoBarra2, 5, 5);
937
+ const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
938
+ const digito1 = getDigito2(campo1);
939
+ const digito2 = getDigito2(campo2);
940
+ const digito3 = getDigito2(campo3);
941
+ const linhaDigitavel = campo1 + digito1 + campo2 + digito2 + campo3 + digito3 + campo4 + campo5;
942
+ const dadosBoleto = {
943
+ linhaDigitavel,
944
+ fatorVencimento,
945
+ valor,
946
+ convenio,
947
+ nossoNumero,
948
+ campoLivre,
949
+ digitoGeral,
950
+ codigoBarra: codigoBarra2,
951
+ numeroDocumento
952
+ };
953
+ return dadosBoleto;
954
+ } catch (error) {
955
+ console.log("Falha ao gerar dados do boleto", error);
956
+ return null;
957
+ }
958
+ }
959
+ function getValor2(valor) {
960
+ const valorFormatado = valor.toFixed(2).replace(/\D/g, "");
961
+ return padLeft(valorFormatado, 10);
962
+ }
963
+ function getDigitoGeral2(texto) {
964
+ let i = 43;
965
+ let j = 1;
966
+ let soma = 0;
967
+ let digito = 0;
968
+ while (i >= 1) {
969
+ j++;
970
+ if (j === 10)
971
+ j = 2;
972
+ const valor = Number(copy(texto, i, i));
973
+ soma += j * valor;
974
+ i--;
975
+ }
976
+ const restoDivisao = soma % 11;
977
+ digito = 11 - restoDivisao;
978
+ if (digito === 0 || digito === 1 || digito > 9)
979
+ digito = 1;
980
+ return String(digito);
981
+ }
982
+ function getDigito2(texto) {
983
+ let i = texto.length;
984
+ let j = 1;
985
+ let total = 0;
986
+ let soma = 0;
987
+ let digito = 0;
988
+ while (i >= 1) {
989
+ j = j === 1 ? 2 : 1;
990
+ let valor = Number(copy(texto, i, i));
991
+ total = valor * j;
992
+ if (total >= 10) {
993
+ valor = Number(copy(total, 1, 1)) + Number(copy(total, 2, 2));
994
+ } else {
995
+ valor = total;
996
+ }
997
+ soma += valor;
998
+ i--;
999
+ }
1000
+ const uni = Number(copy(soma, String(soma).length, String(soma).length));
1001
+ digito = 10 - uni;
1002
+ if (digito === 10)
1003
+ digito = 0;
1004
+ return String(digito);
1005
+ }
1006
+
1007
+ // src/banks/ailos/gerarPDF.ts
1008
+ import BwipJs3 from "bwip-js";
1009
+ function gerarPDF2(_0) {
1010
+ return __async(this, arguments, function* ({ dados }) {
1011
+ var _a;
1012
+ try {
1013
+ const { generatePDF, dadosPDF } = dados;
1014
+ if (!dadosPDF.pagador.cpfcnpj) {
1015
+ throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
1016
+ }
1017
+ const codigoBarra2 = yield BwipJs3.toBuffer({
1018
+ bcid: "interleaved2of5",
1019
+ text: dadosPDF.boleto.codigoBarra,
1020
+ height: 20
1021
+ });
1022
+ dadosPDF.beneficiario.dadosBancario.agencia = dadosPDF.beneficiario.dadosBancario.agencia.padStart(4, "0");
1023
+ dadosPDF.beneficiario.dadosBancario.conta = dadosPDF.beneficiario.dadosBancario.conta.padStart(7, "0");
1024
+ dadosPDF.boleto.linhaDigitavel = maskFormat_default.codigoBarra(dadosPDF.boleto.linhaDigitavel);
1025
+ dadosPDF.boleto.codigoBarraImage = codigoBarra2.toString("base64");
1026
+ dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
1027
+ dadosPDF.beneficiario.cnpj
1028
+ );
1029
+ dadosPDF.beneficiario.endereco.cep = maskFormat_default.retornaCEPFormatado(
1030
+ dadosPDF.beneficiario.endereco.cep
1031
+ );
1032
+ dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
1033
+ dadosPDF.pagador.endereco.cep
1034
+ );
1035
+ dadosPDF.pagador.cpfcnpj = maskFormat_default.retornaCpfCnpjFormatado(dadosPDF.pagador.cpfcnpj);
1036
+ dadosPDF.boleto.valorAcrescimo = maskFormat_default.numberToReal(
1037
+ dadosPDF.boleto.valorAcrescimo
1038
+ );
1039
+ dadosPDF.boleto.valorCobrado = maskFormat_default.numberToReal(
1040
+ dadosPDF.boleto.valorCobrado
1041
+ );
1042
+ dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
1043
+ dadosPDF.boleto.valorDescontoAbatimento
1044
+ );
1045
+ const valorDocumento = Number(dadosPDF.boleto.valorDocumento);
1046
+ dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
1047
+ dadosPDF.boleto.valorDocumento
1048
+ );
1049
+ dadosPDF.boleto.valorMulta = maskFormat_default.numberToReal(dadosPDF.boleto.valorMulta);
1050
+ dadosPDF.boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
1051
+ dadosPDF.boleto.valorOutrasDeducoes
1052
+ );
1053
+ if (dadosPDF.boleto.quantidade) {
1054
+ dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
1055
+ }
1056
+ const jurosMes = dadosPDF.beneficiario.dadosBancario.juros;
1057
+ const jurosDia = jurosMes / 100 / 30 * valorDocumento;
1058
+ if (jurosDia > 0) {
1059
+ dadosPDF.boleto.instrucao1 = `COBRAR JUROS DE R$${maskFormat_default.numberToReal(jurosDia)} AO DIA, AP\xD3S O VENCIMENTO`;
1060
+ }
1061
+ const descontoVencimento = dadosPDF.boleto.desconto > 0 ? dadosPDF.boleto.desconto : dadosPDF.beneficiario.dadosBancario.desconto > 0 ? dadosPDF.beneficiario.dadosBancario.desconto : 0;
1062
+ if (descontoVencimento > 0) {
1063
+ dadosPDF.boleto.instrucao2 = `AT\xC9 O VENCIMENTO, CONCEDER DESCONTO DE ${descontoVencimento}%`;
1064
+ }
1065
+ const multaAtraso = dadosPDF.beneficiario.dadosBancario.multa || 0;
1066
+ if (multaAtraso > 0) {
1067
+ dadosPDF.boleto.instrucao3 = `MULTA DE ${multaAtraso}%`;
1068
+ }
1069
+ const protestoDias = dadosPDF.beneficiario.dadosBancario.protesto || 0;
1070
+ if (protestoDias > 0) {
1071
+ dadosPDF.boleto.instrucao4 = `PROTESTAR AP\xD3S ${protestoDias} DIAS CORRIDOS DO VENCIMENTO`;
1072
+ }
1073
+ dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
1074
+ dadosPDF.pagador.isCnpj = dadosPDF.pagador.cpfcnpj.length > 14;
1075
+ let content = compileHbs(getPathTemplates("ailos-boleto.hbs"), dadosPDF);
1076
+ if ((_a = dadosPDF.boleto) == null ? void 0 : _a.pix) {
1077
+ content = compileHbs(getPathTemplates("ailos-boleto-hibrido.hbs"), dadosPDF);
1078
+ }
1079
+ const config = {
1080
+ displayHeaderFooter: false,
1081
+ path: "./boleto.pdf",
1082
+ format: "a4",
1083
+ printBackground: true
1084
+ };
1085
+ let pdfBase64 = null;
1086
+ if (generatePDF) {
1087
+ pdfBase64 = yield generatePDF(content, config);
1088
+ } else {
1089
+ if (!api.defaults.baseURL) {
1090
+ throw new Error("BaseURL api not found");
1091
+ }
1092
+ const response = yield api.post("/", { content, config });
1093
+ const buffer = Buffer.from(response.data.pdf);
1094
+ pdfBase64 = yield decompress(buffer);
1095
+ }
1096
+ return {
1097
+ erro: false,
1098
+ dados: pdfBase64
1099
+ };
1100
+ } catch (error) {
1101
+ console.log(error);
1102
+ if (error instanceof Error) {
1103
+ return {
1104
+ erro: true,
1105
+ dados: error.message
1106
+ };
1107
+ }
1108
+ return {
1109
+ erro: true,
1110
+ dados: "Falha ao gerar impress\xE3o do boleto"
1111
+ };
1112
+ }
1113
+ });
1114
+ }
1115
+
1116
+ // src/banks/ailos/gerarRemessa.ts
1117
+ import { addDays, format as format3 } from "date-fns";
1118
+ function gerarRemessa2({ dados }) {
1119
+ try {
1120
+ const { dadosBancario, beneficiario, boletos } = dados.remessa;
1121
+ const arquivo = new Arquivo();
1122
+ const dataAtual = /* @__PURE__ */ new Date();
1123
+ const data = format3(dataAtual, "ddMMyyyy");
1124
+ const hora = format3(dataAtual, "HHmmss");
1125
+ const convenio = dadosBancario.convenio.padStart(7, "0");
1126
+ const numero = dadosBancario.conta.padStart(7, "0") + dadosBancario.contaDigito;
1127
+ const remessa2 = `REM${convenio}-${numero}-${data}.REM`;
1128
+ arquivo.add("085");
1129
+ arquivo.add("0000");
1130
+ arquivo.add("0");
1131
+ arquivo.add(" ");
1132
+ arquivo.add("2");
1133
+ arquivo.add(beneficiario.cnpj);
1134
+ arquivo.add(dadosBancario.convenio.padEnd(20, " "));
1135
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1136
+ arquivo.add(dadosBancario.agenciaDigito);
1137
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1138
+ arquivo.add(dadosBancario.contaDigito);
1139
+ arquivo.add(" ");
1140
+ arquivo.add(removerCaracterEspecial(beneficiario.nome).substring(0, 30).padEnd(30, " "));
1141
+ arquivo.add("AILOS".padEnd(30, " "));
1142
+ arquivo.add(" ");
1143
+ arquivo.add("1");
1144
+ arquivo.add(data);
1145
+ arquivo.add(hora);
1146
+ arquivo.add(dadosBancario.numeroRemessa.padStart(6, "0"));
1147
+ arquivo.add("087");
1148
+ arquivo.add("00000");
1149
+ arquivo.add(" ".padEnd(20, " "));
1150
+ arquivo.add(" ".padEnd(20, " "));
1151
+ arquivo.add(" ".padEnd(29, " "));
1152
+ arquivo.addLine();
1153
+ arquivo.add("085");
1154
+ arquivo.add("0001");
1155
+ arquivo.add("1");
1156
+ arquivo.add("R");
1157
+ arquivo.add("01");
1158
+ arquivo.add(" ");
1159
+ arquivo.add("045");
1160
+ arquivo.add(" ");
1161
+ arquivo.add("2");
1162
+ arquivo.add(beneficiario.cnpj.padStart(15, "0"));
1163
+ arquivo.add(dadosBancario.convenio.padEnd(20, " "));
1164
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1165
+ arquivo.add(dadosBancario.agenciaDigito);
1166
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1167
+ arquivo.add(dadosBancario.contaDigito);
1168
+ arquivo.add(" ");
1169
+ arquivo.add(removerCaracterEspecial(beneficiario.nome).substring(0, 30).padEnd(30, " "));
1170
+ arquivo.add(" ".padEnd(40, " "));
1171
+ arquivo.add(" ".padEnd(40, " "));
1172
+ arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
1173
+ arquivo.add(data);
1174
+ arquivo.add("00000000");
1175
+ arquivo.add(" ".padEnd(33, " "));
1176
+ arquivo.addLine();
1177
+ let sequencia = 0;
1178
+ let quantidadeRegistro = 0;
1179
+ let total = 0;
1180
+ for (const boleto of boletos) {
1181
+ const { pagador } = boleto;
1182
+ const vencimento = format3(new Date(boleto.vencimento), "ddMMyyyy");
1183
+ total += Number(boleto.valor);
1184
+ const codigoJuro = dadosBancario.jurosMes > 0 ? "2" : "3";
1185
+ const juros = dadosBancario.jurosMes > 0 ? dadosBancario.jurosMes.toFixed(2) : "000000000000000";
1186
+ const jurosVencimento = format3(
1187
+ addDays(new Date(boleto.vencimento), 1),
1188
+ "ddMMyyyy"
1189
+ );
1190
+ const codigoDesconto = dadosBancario.descontoPagamento > 0 ? "2" : "0";
1191
+ const desconto = boleto.desconto > 0 ? boleto.desconto.toFixed(2) : dadosBancario.descontoPagamento > 0 ? dadosBancario.descontoPagamento.toFixed(2) : "000000000000000";
1192
+ let diasProtesto = "00";
1193
+ let protesto = "3";
1194
+ switch (dadosBancario.tipo_protesto) {
1195
+ case "Nenhum":
1196
+ protesto = "3";
1197
+ diasProtesto = "00";
1198
+ break;
1199
+ case "Protestar":
1200
+ protesto = "1";
1201
+ diasProtesto = dadosBancario.diasProtesto.toString().padStart(2, "0");
1202
+ break;
1203
+ case "Negativar":
1204
+ protesto = "2";
1205
+ diasProtesto = dadosBancario.diasProtesto.toString().padStart(2, "0");
1206
+ break;
1207
+ default:
1208
+ protesto = "3";
1209
+ diasProtesto = "00";
1210
+ break;
1211
+ }
1212
+ arquivo.add("085");
1213
+ arquivo.add("0001");
1214
+ arquivo.add("3");
1215
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
1216
+ arquivo.add("P");
1217
+ arquivo.add(" ");
1218
+ arquivo.add("01");
1219
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1220
+ arquivo.add(dadosBancario.agenciaDigito);
1221
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1222
+ arquivo.add(dadosBancario.contaDigito);
1223
+ arquivo.add(" ");
1224
+ arquivo.add(boleto.nossoNumero.padEnd(20, " "));
1225
+ arquivo.add("1");
1226
+ arquivo.add("1");
1227
+ arquivo.add("1");
1228
+ arquivo.add("2");
1229
+ arquivo.add("2");
1230
+ arquivo.add(`${boleto.numeroDocumento}/${boleto.parcela}`.padEnd(15, " "));
1231
+ arquivo.add(vencimento);
1232
+ arquivo.add(
1233
+ Number(boleto.valor).toFixed(2).replace(".", "").padStart(15, "0")
1234
+ );
1235
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1236
+ arquivo.add(dadosBancario.agenciaDigito);
1237
+ arquivo.add("02");
1238
+ arquivo.add(boleto.aceite);
1239
+ arquivo.add(data);
1240
+ arquivo.add(codigoJuro);
1241
+ arquivo.add(jurosVencimento);
1242
+ arquivo.add(juros.replace(".", "").padStart(15, "0"));
1243
+ arquivo.add(codigoDesconto);
1244
+ arquivo.add(vencimento);
1245
+ arquivo.add(desconto.replace(".", "").padStart(15, "0"));
1246
+ arquivo.add("000000000000000");
1247
+ arquivo.add("000000000000000");
1248
+ arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
1249
+ arquivo.add(protesto);
1250
+ arquivo.add(diasProtesto);
1251
+ arquivo.add("2");
1252
+ arquivo.add(" ");
1253
+ arquivo.add("09");
1254
+ arquivo.add("0000000000");
1255
+ arquivo.add(" ");
1256
+ arquivo.addLine();
1257
+ let tipoInscricao = "1";
1258
+ if (pagador.pessoa === "F") {
1259
+ tipoInscricao = "1";
1260
+ } else {
1261
+ tipoInscricao = "2";
1262
+ }
1263
+ pagador.endereco.logradouro = `${removerCaracterEspecial(pagador.endereco.logradouro).substring(0, 32).padEnd(32, " ")}${pagador.endereco.numero.padEnd(8, " ")}`;
1264
+ arquivo.add("085");
1265
+ arquivo.add("0001");
1266
+ arquivo.add("3");
1267
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
1268
+ arquivo.add("Q");
1269
+ arquivo.add(" ");
1270
+ arquivo.add("01");
1271
+ arquivo.add(tipoInscricao);
1272
+ arquivo.add(pagador.cpfCnpj.padStart(15, "0"));
1273
+ arquivo.add(removerCaracterEspecial(pagador.nome).substring(0, 40).padEnd(40, " "));
1274
+ arquivo.add(removerCaracterEspecial(pagador.endereco.logradouro).substring(0, 40).padEnd(40, " "));
1275
+ arquivo.add(removerCaracterEspecial(pagador.endereco.bairro).substring(0, 15).padEnd(15, " "));
1276
+ arquivo.add(pagador.endereco.cep.substring(0, 5).padStart(5, "0"));
1277
+ arquivo.add(pagador.endereco.cep.substring(5, 7).padStart(3, "0"));
1278
+ arquivo.add(removerCaracterEspecial(pagador.endereco.municipio).substring(0, 15).padEnd(15, " "));
1279
+ arquivo.add(removerCaracterEspecial(pagador.endereco.uf).padEnd(2, " "));
1280
+ arquivo.add("0");
1281
+ arquivo.add("000000000000000");
1282
+ arquivo.add(" ".padEnd(40, " "));
1283
+ arquivo.add("000");
1284
+ arquivo.add(" ".padEnd(20, " "));
1285
+ arquivo.add(" ".padEnd(8, " "));
1286
+ arquivo.addLine();
1287
+ dadosBancario.multaAtraso = Number(dadosBancario.multaAtraso || 0);
1288
+ if (dadosBancario.multaAtraso > 0) {
1289
+ const multa = dadosBancario.multaAtraso.toFixed(2);
1290
+ arquivo.add("085");
1291
+ arquivo.add("0001");
1292
+ arquivo.add("3");
1293
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
1294
+ arquivo.add("R");
1295
+ arquivo.add(" ");
1296
+ arquivo.add("01");
1297
+ arquivo.add("0");
1298
+ arquivo.add("00000000");
1299
+ arquivo.add("000000000000000");
1300
+ arquivo.add("0");
1301
+ arquivo.add("00000000");
1302
+ arquivo.add("000000000000000");
1303
+ arquivo.add("2");
1304
+ arquivo.add(vencimento);
1305
+ arquivo.add(multa.replace(".", "").padStart(15, "0"));
1306
+ arquivo.add(" ".padEnd(10, " "));
1307
+ arquivo.add(" ".padEnd(40, " "));
1308
+ arquivo.add(" ".padEnd(40, " "));
1309
+ arquivo.add(" ".padEnd(20, " "));
1310
+ arquivo.add("00000000");
1311
+ arquivo.add("000");
1312
+ arquivo.add("00000");
1313
+ arquivo.add(" ");
1314
+ arquivo.add("000000000000");
1315
+ arquivo.add(" ");
1316
+ arquivo.add(" ");
1317
+ arquivo.add("0");
1318
+ arquivo.add("000000000");
1319
+ arquivo.addLine();
1320
+ }
1321
+ quantidadeRegistro++;
1322
+ }
1323
+ arquivo.add("085");
1324
+ arquivo.add("0001");
1325
+ arquivo.add("5");
1326
+ arquivo.add(" ".padEnd(9, " "));
1327
+ arquivo.add((sequencia + 3).toString().padStart(6, "0"));
1328
+ arquivo.add(quantidadeRegistro.toString().padStart(6, "0"));
1329
+ arquivo.add(total.toFixed(2).replace(".", "").padStart(17, "0"));
1330
+ arquivo.add("0".padStart(6, "0"));
1331
+ arquivo.add("0".padStart(17, "0"));
1332
+ arquivo.add("0".padStart(6, "0"));
1333
+ arquivo.add("0".padStart(17, "0"));
1334
+ arquivo.add("0".padStart(6, "0"));
1335
+ arquivo.add("0".padStart(17, "0"));
1336
+ arquivo.add(" ".padStart(8, " "));
1337
+ arquivo.add(" ".padStart(117, " "));
1338
+ arquivo.addLine();
1339
+ arquivo.add("085");
1340
+ arquivo.add("9999");
1341
+ arquivo.add("9");
1342
+ arquivo.add(" ".padEnd(9, " "));
1343
+ arquivo.add("000001");
1344
+ arquivo.add((sequencia + 4).toString().padStart(6, "0"));
1345
+ arquivo.add("000000");
1346
+ arquivo.add(" ".padEnd(205, " "));
1347
+ return {
1348
+ download: remessa2,
1349
+ arquivo: arquivo.getArquivo()
1350
+ };
1351
+ } catch (error) {
1352
+ console.log(error);
1353
+ return null;
1354
+ }
1355
+ }
1356
+
1357
+ // src/banks/ailos/gerarRetorno.ts
1358
+ import { parse as parse2 } from "date-fns";
1359
+ function gerarRetorno2({ dados }) {
1360
+ try {
1361
+ const { arquivo } = dados;
1362
+ const documentos = [];
1363
+ let index = 0;
1364
+ for (const item of arquivo) {
1365
+ let linha = item;
1366
+ const codigoRetorno = linha.substring(15, 17);
1367
+ if (codigoRetorno === "06" || codigoRetorno === "17" || codigoRetorno === "03") {
1368
+ let segmento = linha.substring(13, 14);
1369
+ if (segmento === "T") {
1370
+ const motivo = linha.substring(213, 223).trim();
1371
+ const linhaDoc = linha.substring(105, 130).trimEnd();
1372
+ let tipoDocumento = "INDEFINIDO";
1373
+ let idDocumento = linhaDoc;
1374
+ if (linhaDoc.includes("-")) {
1375
+ const [tipoDoc, idDoc] = linhaDoc.split("-");
1376
+ tipoDocumento = tipoDoc;
1377
+ idDocumento = idDoc;
1378
+ }
1379
+ const especie = tipoDocumento.length ? tipoDocumento : "INDEFINIDO";
1380
+ linha = arquivo[index + 1];
1381
+ segmento = linha.substring(13, 14);
1382
+ if (segmento === "U") {
1383
+ let dataCredito;
1384
+ const dataCreditoString = linha.substring(145, 153);
1385
+ if (dataCreditoString && dataCreditoString !== "00000000") {
1386
+ dataCredito = parse2(dataCreditoString, "ddMMyyyy", /* @__PURE__ */ new Date());
1387
+ } else {
1388
+ const dataOcorrenciaString = linha.substring(157, 165);
1389
+ dataCredito = parse2(dataOcorrenciaString, "ddMMyyyy", /* @__PURE__ */ new Date());
1390
+ }
1391
+ const valorAbatimentoString = linha.substring(47, 62);
1392
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
1393
+ const valorDescontoString = linha.substring(32, 47);
1394
+ const valorDesconto = Number(valorDescontoString) / 100;
1395
+ const valorPagoString = linha.substring(77, 92);
1396
+ const valorPago = Number(valorPagoString) / 100;
1397
+ const valorJurosString = linha.substring(17, 32);
1398
+ const valorJuros = Number(valorJurosString) / 100;
1399
+ const valorMulta = 0;
1400
+ const descontos = valorAbatimento + valorDesconto;
1401
+ const valorTotal = valorPago - valorJuros + descontos;
1402
+ let rejeitado = false;
1403
+ let motivoRejeicao = "";
1404
+ if (codigoRetorno === "03") {
1405
+ rejeitado = true;
1406
+ motivoRejeicao = retornaMotivoRejeicao2(motivo);
1407
+ }
1408
+ const documento = {
1409
+ id_documento: idDocumento,
1410
+ especie,
1411
+ valor: valorPago,
1412
+ valor_multa: valorMulta,
1413
+ valor_juros: valorJuros,
1414
+ valor_desconto: valorDesconto,
1415
+ valor_total: valorTotal,
1416
+ data: dataCredito,
1417
+ rejeitado,
1418
+ motivo: motivoRejeicao
1419
+ };
1420
+ documentos.push(documento);
1421
+ }
1422
+ }
1423
+ }
1424
+ index++;
1425
+ }
1426
+ const documentoAgrupado = agruparRetorno(documentos);
1427
+ return documentoAgrupado;
1428
+ } catch (error) {
1429
+ console.log(error);
1430
+ return null;
1431
+ }
1432
+ }
1433
+ function retornaMotivoRejeicao2(codigo) {
1434
+ switch (codigo) {
1435
+ case "01":
1436
+ return "C\xF3digo do Banco Inv\xE1lido";
1437
+ case "02":
1438
+ return "C\xF3digo do Registro Detalhe Inv\xE1lido";
1439
+ case "03":
1440
+ return "C\xF3digo do Segmento Inv\xE1lido";
1441
+ case "04":
1442
+ return "C\xF3digo de Movimento N\xE3o Permitido para Carteira";
1443
+ case "05":
1444
+ return "C\xF3digo de Movimento Inv\xE1lido";
1445
+ case "06":
1446
+ return "Tipo/N\xFAmero de Inscri\xE7\xE3o do Cedente Inv\xE1lidos";
1447
+ case "07":
1448
+ return "Ag\xEAncia/Conta/DV Inv\xE1lido";
1449
+ case "08":
1450
+ return "Nosso N\xFAmero Inv\xE1lido";
1451
+ case "09":
1452
+ return "Nosso N\xFAmero Duplicado";
1453
+ case "10":
1454
+ return "Carteira Inv\xE1lida";
1455
+ case "11":
1456
+ return "Forma de Cadastramento do T\xEDtulo Inv\xE1lido";
1457
+ case "12":
1458
+ return "Tipo de Documento Inv\xE1lido";
1459
+ case "13":
1460
+ return "Identifica\xE7\xE3o da Emiss\xE3o do Boleto Inv\xE1lida";
1461
+ case "14":
1462
+ return "Identifica\xE7\xE3o da Distribui\xE7\xE3o do Boleto Inv\xE1lida";
1463
+ case "15":
1464
+ return "Caracter\xEDsticas da Cobran\xE7a Incompat\xEDveis";
1465
+ case "16":
1466
+ return "Data de Vencimento Inv\xE1lida";
1467
+ case "17":
1468
+ return "Data de Vencimento Anterior \xE0 Data de Emiss\xE3o";
1469
+ case "18":
1470
+ return "Vencimento Fora do Prazo de Opera\xE7\xE3o";
1471
+ case "19":
1472
+ return "T\xEDtulo a Cargo de Bancos Correspondentes com Vencimento Inferior a XX Dias";
1473
+ case "20":
1474
+ return "Valor do T\xEDtulo Inv\xE1lido";
1475
+ case "21":
1476
+ return "Esp\xE9cie do T\xEDtulo Inv\xE1lida";
1477
+ case "22":
1478
+ return "Esp\xE9cie do T\xEDtulo N\xE3o Permitida para a Carteira";
1479
+ case "23":
1480
+ return "Aceite Inv\xE1lido";
1481
+ case "24":
1482
+ return "Data da Emiss\xE3o Inv\xE1lida";
1483
+ case "25":
1484
+ return "Data da Emiss\xE3o Posterior a Data de Entrada";
1485
+ case "26":
1486
+ return "C\xF3digo de Juros de Mora Inv\xE1lido";
1487
+ case "27":
1488
+ return "Vlr/Taxa de Juros de Mora Inv\xE1lido";
1489
+ case "28":
1490
+ return "C\xF3digo do Desconto Inv\xE1lido";
1491
+ case "29":
1492
+ return "Valor do Desconto Maior ou Igual ao Valor do T\xEDtulo";
1493
+ case "30":
1494
+ return "Desconto a Conceder N\xE3o Confere";
1495
+ case "31":
1496
+ return "Concess\xE3o de Desconto - J\xE1 Existe Desconto Anterior";
1497
+ case "33":
1498
+ return "Valor do Abatimento Inv\xE1lido";
1499
+ case "34":
1500
+ return "Valor do Abatimento Maior ou Igual ao Valor do T\xEDtulo";
1501
+ case "35":
1502
+ return "Valor a Conceder N\xE3o Confere";
1503
+ case "36":
1504
+ return "Concess\xE3o de Abatimento - J\xE1 Existe Abatimento Anterior";
1505
+ case "37":
1506
+ return "C\xF3digo para Protesto Inv\xE1lido";
1507
+ case "38":
1508
+ return "Prazo para Protesto Inv\xE1lido";
1509
+ case "39":
1510
+ return "Pedido de Protesto N\xE3o Permitido para o T\xEDtulo";
1511
+ case "40":
1512
+ return "T\xEDtulo com Ordem de Protesto Emitida";
1513
+ case "41":
1514
+ return "Pedido de Cancelamento/Susta\xE7\xE3o para T\xEDtulos sem Instru\xE7\xE3o de Protesto";
1515
+ case "42":
1516
+ return "C\xF3digo para Baixa/Devolu\xE7\xE3o Inv\xE1lido";
1517
+ case "43":
1518
+ return "Prazo para Baixa/Devolu\xE7\xE3o Inv\xE1lido";
1519
+ case "44":
1520
+ return "C\xF3digo da Moeda Inv\xE1lido";
1521
+ case "45":
1522
+ return "Nome do Sacado N\xE3o Informado";
1523
+ case "46":
1524
+ return "Tipo/N\xFAmero de Inscri\xE7\xE3o do Sacado Inv\xE1lidos";
1525
+ case "47":
1526
+ return "Endere\xE7o do Sacado N\xE3o Informado";
1527
+ case "48":
1528
+ return "CEP Inv\xE1lido";
1529
+ case "49":
1530
+ return "CEP Sem Pra\xE7a de Cobran\xE7a (N\xE3o Localizado)";
1531
+ case "50":
1532
+ return "CEP Referente a um Banco Correspondente";
1533
+ case "51":
1534
+ return "CEP incompat\xEDvel com a Unidade da Federa\xE7\xE3o";
1535
+ case "52":
1536
+ return "Unidade da Federa\xE7\xE3o Inv\xE1lida";
1537
+ case "53":
1538
+ return "Tipo/N\xFAmero de Inscri\xE7\xE3o do Sacador/Avalista Inv\xE1lidos";
1539
+ case "54":
1540
+ return "Sacador/Avalista N\xE3o Informado";
1541
+ case "55":
1542
+ return "Nosso n\xFAmero no Banco Correspondente N\xE3o Informado";
1543
+ case "56":
1544
+ return "C\xF3digo do Banco Correspondente N\xE3o Informado";
1545
+ case "57":
1546
+ return "C\xF3digo da Multa Inv\xE1lido";
1547
+ case "58":
1548
+ return "Data da Multa Inv\xE1lida";
1549
+ case "59":
1550
+ return "Valor/Percentual da Multa Inv\xE1lido";
1551
+ case "60":
1552
+ return "Movimento para T\xEDtulo N\xE3o Cadastrado";
1553
+ case "61":
1554
+ return "Altera\xE7\xE3o da Ag\xEAncia Cobradora/DV Inv\xE1lida";
1555
+ case "62":
1556
+ return "Tipo de Impress\xE3o Inv\xE1lido";
1557
+ case "63":
1558
+ return "Entrada para T\xEDtulo j\xE1 cadastrado";
1559
+ case "64":
1560
+ return "N\xFAmero da Linha Inv\xE1lido";
1561
+ case "65":
1562
+ return "C\xF3digo do Banco para D\xE9bito Inv\xE1lido";
1563
+ case "66":
1564
+ return "Ag\xEAncia/Conta/DV para D\xE9bito Inv\xE1lido";
1565
+ case "79":
1566
+ return "Data Juros de Mora Inv\xE1lido";
1567
+ case "80":
1568
+ return "Data do Desconto Inv\xE1lida";
1569
+ case "86":
1570
+ return "Seu N\xFAmero Inv\xE1lido";
1571
+ case "89":
1572
+ return "E-mail/SMS devolvido - endere\xE7o de e-mail ou n\xFAmero do celular incorreto";
1573
+ case "91":
1574
+ return "E-mail/n\xFAmero do celular do sacado n\xE3o informado";
1575
+ case "96":
1576
+ return "N\xFAmero do Convenio invalido";
1577
+ case "97":
1578
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o do prazo limite de recebimento";
1579
+ case "98":
1580
+ return "Rejei\xE7\xE3o de dispensa de prazo limite de recebimento";
1581
+ case "99":
1582
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o do n\xFAmero do t\xEDtulo dado pelo cedente";
1583
+ case "A2":
1584
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o dos dados do sacado";
1585
+ case "A3":
1586
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o dos dados do sacador/avalista";
1587
+ case "A4":
1588
+ return "Sacado DDA";
1589
+ case "A4R1":
1590
+ return "Sacado DDA / Registro online";
1591
+ default:
1592
+ return "Motivo de rejei\xE7\xE3o desconhecido";
1593
+ }
1594
+ }
1595
+
1596
+ // src/banks/ailos/index.ts
1597
+ var ailos = {
1598
+ gerarDadosBoleto: gerarDadosBoleto2,
1599
+ gerarPDF: gerarPDF2,
1600
+ gerarRemessa: gerarRemessa2,
1601
+ gerarRetorno: gerarRetorno2
1602
+ };
1603
+
1604
+ // src/banks/bradesco/gerarDadosBoleto.ts
1605
+ function gerarDadosBoleto3({ dados }) {
1606
+ try {
1607
+ const { bancario, parcela } = dados;
1608
+ parcela.valor = Number(parcela.valor);
1609
+ const fatorVencimento = getFatorVencimento(parcela.vencimento);
1610
+ const valor = getValor3(parcela.valor);
1611
+ const convenio = padLeft(bancario.convenio, 6);
1612
+ const numeroDocumento = padLeft(`${parcela.id_boleto}`, 9);
1613
+ const nossoNumero = padLeft(bancario.numero + bancario.numero_dv, 8) + numeroDocumento;
1614
+ const campoLivre = convenio + nossoNumero + padLeft(bancario.carteira, 2);
1615
+ const digitoGeral = getDigitoGeral3(`0859${fatorVencimento}${valor}${campoLivre}`);
1616
+ const codigoBarra2 = `0859${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
1617
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
1618
+ const campo2 = copy(codigoBarra2, 25, 34);
1619
+ const campo3 = copy(codigoBarra2, 35, 44);
1620
+ const campo4 = copy(codigoBarra2, 5, 5);
1621
+ const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
1622
+ const digito1 = getDigito3(campo1);
1623
+ const digito2 = getDigito3(campo2);
1624
+ const digito3 = getDigito3(campo3);
1625
+ const digito4 = getDigito3(campo4);
1626
+ const linhaDigitavel = campo1 + digito1 + campo2 + digito2 + campo3 + digito3 + campo4 + digito4 + campo5;
1627
+ const dadosBoleto = {
1628
+ linhaDigitavel,
1629
+ fatorVencimento,
1630
+ valor,
1631
+ convenio,
1632
+ nossoNumero,
1633
+ campoLivre,
1634
+ digitoGeral,
1635
+ codigoBarra: codigoBarra2,
1636
+ numeroDocumento
1637
+ };
1638
+ return dadosBoleto;
1639
+ } catch (error) {
1640
+ console.log("Falha ao gerar dados do boleto", error);
1641
+ return null;
1642
+ }
1643
+ }
1644
+ function getValor3(valor) {
1645
+ const valorFormatado = valor.toFixed(2).replace(/\D/g, "");
1646
+ return padLeft(valorFormatado, 10);
1647
+ }
1648
+ function getDigitoGeral3(texto) {
1649
+ let i = 43;
1650
+ let j = 1;
1651
+ let soma = 0;
1652
+ let digito = 0;
1653
+ while (i >= 1) {
1654
+ j++;
1655
+ if (j === 10)
1656
+ j = 2;
1657
+ const valor = Number(copy(texto, i, i));
1658
+ soma += j * valor;
1659
+ i--;
1660
+ }
1661
+ const restoDivisao = soma % 11;
1662
+ digito = 11 - restoDivisao;
1663
+ if (digito === 0 || digito === 1 || digito > 9)
1664
+ digito = 1;
1665
+ return String(digito);
1666
+ }
1667
+ function getDigito3(texto) {
1668
+ let i = texto.length;
1669
+ let j = 1;
1670
+ let total = 0;
1671
+ let soma = 0;
1672
+ let digito = 0;
1673
+ while (i >= 1) {
1674
+ j = j === 1 ? 2 : 1;
1675
+ let valor = Number(copy(texto, i, i));
1676
+ total = valor * j;
1677
+ if (total >= 10) {
1678
+ valor = Number(copy(total, 1, 1)) + Number(copy(total, 2, 2));
1679
+ } else {
1680
+ valor = total;
1681
+ }
1682
+ soma += valor;
1683
+ i--;
1684
+ }
1685
+ const uni = Number(copy(soma, String(soma).length, String(soma).length));
1686
+ digito = 10 - uni;
1687
+ if (digito === 10)
1688
+ digito = 0;
1689
+ return String(digito);
1690
+ }
1691
+
1692
+ // src/banks/bradesco/gerarPDF.ts
1693
+ import BwipJs4 from "bwip-js";
1694
+ function gerarPDF3(_0) {
1695
+ return __async(this, arguments, function* ({ dados }) {
1696
+ try {
1697
+ const { dadosPDF, generatePDF } = dados;
1698
+ const codigoBarra2 = yield BwipJs4.toBuffer({
1699
+ bcid: "interleaved2of5",
1700
+ text: dadosPDF.boleto.codigoBarra,
1701
+ height: 20
1702
+ });
1703
+ dadosPDF.beneficiario.dadosBancarios.agencia = dadosPDF.beneficiario.dadosBancarios.agencia.padStart(4, "0");
1704
+ dadosPDF.beneficiario.dadosBancarios.conta = dadosPDF.beneficiario.dadosBancarios.conta.padStart(7, "0");
1705
+ dadosPDF.boleto.codigoBarra = maskFormat_default.codigoBarra(dadosPDF.boleto.codigoBarra);
1706
+ dadosPDF.boleto.codigoBarraImage = codigoBarra2.toString("base64");
1707
+ dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
1708
+ dadosPDF.beneficiario.cnpj
1709
+ );
1710
+ dadosPDF.beneficiario.endereco.cep = maskFormat_default.retornaCEPFormatado(
1711
+ dadosPDF.beneficiario.endereco.cep
1712
+ );
1713
+ dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
1714
+ dadosPDF.pagador.endereco.cep
1715
+ );
1716
+ dadosPDF.boleto.valorAcrescimo = maskFormat_default.numberToReal(
1717
+ dadosPDF.boleto.valorAcrescimo
1718
+ );
1719
+ dadosPDF.boleto.valorCobrado = maskFormat_default.numberToReal(
1720
+ dadosPDF.boleto.valorCobrado
1721
+ );
1722
+ dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
1723
+ dadosPDF.boleto.valorDescontoAbatimento
1724
+ );
1725
+ dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
1726
+ dadosPDF.boleto.valorDocumento
1727
+ );
1728
+ dadosPDF.boleto.valorMulta = maskFormat_default.numberToReal(dadosPDF.boleto.valorMulta);
1729
+ dadosPDF.boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
1730
+ dadosPDF.boleto.valorOutrasDeducoes
1731
+ );
1732
+ if (dadosPDF.boleto.quantidade) {
1733
+ dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
1734
+ }
1735
+ dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
1736
+ const content = compileHbs(getPathTemplates("bradesco-boleto.hbs"), dadosPDF);
1737
+ const config = {
1738
+ displayHeaderFooter: false,
1739
+ path: "./boleto.pdf",
1740
+ format: "a4",
1741
+ printBackground: true
1742
+ };
1743
+ let pdfBase64 = null;
1744
+ if (generatePDF) {
1745
+ pdfBase64 = yield generatePDF(content, config);
1746
+ } else {
1747
+ if (!api.defaults.baseURL) {
1748
+ throw new Error("BaseURL api not found");
1749
+ }
1750
+ const response = yield api.post("/", { content, config });
1751
+ const buffer = Buffer.from(response.data.pdf);
1752
+ pdfBase64 = yield decompress(buffer);
1753
+ }
1754
+ return {
1755
+ erro: false,
1756
+ dados: pdfBase64
1757
+ };
1758
+ } catch (error) {
1759
+ return {
1760
+ erro: true,
1761
+ dados: null
1762
+ };
1763
+ }
1764
+ });
1765
+ }
1766
+
1767
+ // src/banks/bradesco/gerarRemessa.ts
1768
+ import { addDays as addDays2, format as format4 } from "date-fns";
1769
+ function gerarRemessa3(_0) {
1770
+ return __async(this, arguments, function* ({ dados }) {
1771
+ try {
1772
+ const { dadosBancario, beneficiario, boletos } = dados.remessa;
1773
+ const arquivo = new Arquivo();
1774
+ const dataAtual = /* @__PURE__ */ new Date();
1775
+ const data = format4(dataAtual, "ddMMyyyy");
1776
+ const hora = format4(dataAtual, "HHmmss");
1777
+ const convenio = dadosBancario.convenio.padStart(7, "0");
1778
+ const numero = dadosBancario.conta.padStart(7, "0") + dadosBancario.contaDigito;
1779
+ const remessa2 = `REM${convenio}-${numero}-${data}.REM`;
1780
+ arquivo.add("085");
1781
+ arquivo.add("0000");
1782
+ arquivo.add("0");
1783
+ arquivo.add(" ");
1784
+ arquivo.add("2");
1785
+ arquivo.add(beneficiario.cnpj);
1786
+ arquivo.add(dadosBancario.convenio.padEnd(20, " "));
1787
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1788
+ arquivo.add(dadosBancario.agencia);
1789
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1790
+ arquivo.add(dadosBancario.contaDigito);
1791
+ arquivo.add(" ");
1792
+ arquivo.add(beneficiario.nome.substring(0, 30).padEnd(30, " "));
1793
+ arquivo.add("AILOS".padEnd(30, " "));
1794
+ arquivo.add(" ");
1795
+ arquivo.add("1");
1796
+ arquivo.add(data);
1797
+ arquivo.add(hora);
1798
+ arquivo.add(dadosBancario.numeroRemessa.padStart(6, "0"));
1799
+ arquivo.add("087");
1800
+ arquivo.add("00000");
1801
+ arquivo.add(" ".padEnd(20, " "));
1802
+ arquivo.add(" ".padEnd(20, " "));
1803
+ arquivo.add(" ".padEnd(29, " "));
1804
+ arquivo.addLine();
1805
+ arquivo.add("085");
1806
+ arquivo.add("0001");
1807
+ arquivo.add("1");
1808
+ arquivo.add("R");
1809
+ arquivo.add("01");
1810
+ arquivo.add(" ");
1811
+ arquivo.add("045");
1812
+ arquivo.add(" ");
1813
+ arquivo.add("2");
1814
+ arquivo.add(beneficiario.cnpj.padStart(15, "0"));
1815
+ arquivo.add(dadosBancario.convenio.padEnd(20, " "));
1816
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1817
+ arquivo.add(dadosBancario.agenciaDigito);
1818
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1819
+ arquivo.add(dadosBancario.contaDigito);
1820
+ arquivo.add(" ");
1821
+ arquivo.add(beneficiario.nome.substring(0, 30).padEnd(30, " "));
1822
+ arquivo.add(" ".padEnd(40, " "));
1823
+ arquivo.add(" ".padEnd(40, " "));
1824
+ arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
1825
+ arquivo.add(data);
1826
+ arquivo.add("00000000");
1827
+ arquivo.add(" ".padEnd(33, " "));
1828
+ arquivo.addLine();
1829
+ let sequencia = 1;
1830
+ let quantidadeRegistro = 1;
1831
+ let total = 0;
1832
+ for (const boleto of boletos) {
1833
+ const { pagador } = boleto;
1834
+ const vencimento = format4(new Date(boleto.vencimento), "ddMMyyyy");
1835
+ total += Number(boleto.valor);
1836
+ const codigoJuro = dadosBancario.jurosMes > 0 ? "2" : "3";
1837
+ const juros = dadosBancario.jurosMes > 0 ? dadosBancario.jurosMes.toFixed(2) : "000000000000000";
1838
+ const jurosVencimento = format4(
1839
+ addDays2(new Date(boleto.vencimento), 1),
1840
+ "ddMMyyyy"
1841
+ );
1842
+ const codigoDesconto = dadosBancario.descontoPagamento > 0 ? "2" : "0";
1843
+ const desconto = dadosBancario.descontoPagamento > 0 ? dadosBancario.descontoPagamento.toFixed(2) : "000000000000000";
1844
+ const protesto = dadosBancario.diasProtesto > 0 ? "1" : "3";
1845
+ const diasProtesto = protesto === "1" ? dadosBancario.diasProtesto.toString() : "00";
1846
+ arquivo.add("085");
1847
+ arquivo.add("0001");
1848
+ arquivo.add("3");
1849
+ arquivo.add(sequencia.toString().padStart(5, "0"));
1850
+ arquivo.add("P");
1851
+ arquivo.add(" ");
1852
+ arquivo.add("01");
1853
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1854
+ arquivo.add(dadosBancario.agenciaDigito);
1855
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1856
+ arquivo.add(dadosBancario.contaDigito);
1857
+ arquivo.add(" ");
1858
+ arquivo.add(boleto.nossoNumero.padEnd(20, " "));
1859
+ arquivo.add("1");
1860
+ arquivo.add("1");
1861
+ arquivo.add("1");
1862
+ arquivo.add("2");
1863
+ arquivo.add("2");
1864
+ arquivo.add(`${boleto.numeroDocumento}/${boleto.parcela}`.padEnd(15, " "));
1865
+ arquivo.add(vencimento);
1866
+ arquivo.add(
1867
+ Number(boleto.valor).toFixed(2).replace(".", "").padStart(15, "0")
1868
+ );
1869
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1870
+ arquivo.add(dadosBancario.agenciaDigito);
1871
+ arquivo.add("02");
1872
+ arquivo.add("A");
1873
+ arquivo.add(data);
1874
+ arquivo.add(codigoJuro);
1875
+ arquivo.add(jurosVencimento);
1876
+ arquivo.add(juros.replace(".", "").padStart(15, "0"));
1877
+ arquivo.add(codigoDesconto);
1878
+ arquivo.add(vencimento);
1879
+ arquivo.add(desconto.replace(".", "").padStart(15, "0"));
1880
+ arquivo.add("000000000000000");
1881
+ arquivo.add("000000000000000");
1882
+ arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
1883
+ arquivo.add(protesto);
1884
+ arquivo.add(diasProtesto.padStart(1, "0"));
1885
+ arquivo.add("2");
1886
+ arquivo.add(" ");
1887
+ arquivo.add("09");
1888
+ arquivo.add("0000000000");
1889
+ arquivo.add(" ");
1890
+ sequencia++;
1891
+ arquivo.addLine();
1892
+ let tipoInscricao = "1";
1893
+ if (pagador.pessoa === "F") {
1894
+ tipoInscricao = "1";
1895
+ } else {
1896
+ tipoInscricao = "2";
1897
+ }
1898
+ pagador.endereco.logradouro = `${pagador.endereco.logradouro.substring(0, 32).padEnd(32, " ")}${pagador.endereco.numero.padEnd(8, " ")}`;
1899
+ arquivo.add("085");
1900
+ arquivo.add("0001");
1901
+ arquivo.add("3");
1902
+ arquivo.add(sequencia.toString().padStart(5, "0"));
1903
+ arquivo.add("Q");
1904
+ arquivo.add(" ");
1905
+ arquivo.add("01");
1906
+ arquivo.add(tipoInscricao);
1907
+ arquivo.add(pagador.cpfCnpj.padStart(15, "0"));
1908
+ arquivo.add(pagador.nome.substring(0, 40).padEnd(40, " "));
1909
+ arquivo.add(pagador.endereco.logradouro.substring(0, 40).padEnd(40, " "));
1910
+ arquivo.add(pagador.endereco.bairro.substring(0, 15).padEnd(15, " "));
1911
+ arquivo.add(pagador.endereco.cep.substring(0, 5).padStart(5, "0"));
1912
+ arquivo.add(pagador.endereco.cep.substring(5, 7).padStart(3, "0"));
1913
+ arquivo.add(pagador.endereco.municipio.substring(0, 15).padEnd(15, " "));
1914
+ arquivo.add(pagador.endereco.uf.padEnd(2, " "));
1915
+ arquivo.add("0");
1916
+ arquivo.add("000000000000000");
1917
+ arquivo.add(" ".padEnd(40, " "));
1918
+ arquivo.add("000");
1919
+ arquivo.add(" ".padEnd(20, " "));
1920
+ arquivo.add(" ".padEnd(8, " "));
1921
+ dadosBancario.multaAtraso = Number(dadosBancario.multaAtraso || 0);
1922
+ if (dadosBancario.multaAtraso > 0) {
1923
+ arquivo.addLine();
1924
+ const multa = dadosBancario.multaAtraso.toFixed(2);
1925
+ sequencia++;
1926
+ arquivo.add("085");
1927
+ arquivo.add("0001");
1928
+ arquivo.add("3");
1929
+ arquivo.add(sequencia.toString().padStart(5, "0"));
1930
+ arquivo.add("R");
1931
+ arquivo.add(" ");
1932
+ arquivo.add("01");
1933
+ arquivo.add("0");
1934
+ arquivo.add("00000000");
1935
+ arquivo.add("000000000000000");
1936
+ arquivo.add("0");
1937
+ arquivo.add("00000000");
1938
+ arquivo.add("000000000000000");
1939
+ arquivo.add("2");
1940
+ arquivo.add(vencimento);
1941
+ arquivo.add(multa.replace(".", "").padStart(15, "0"));
1942
+ arquivo.add(" ".padEnd(10, " "));
1943
+ arquivo.add(" ".padEnd(40, " "));
1944
+ arquivo.add(" ".padEnd(40, " "));
1945
+ arquivo.add(" ".padEnd(20, " "));
1946
+ arquivo.add("00000000");
1947
+ arquivo.add("000");
1948
+ arquivo.add("00000");
1949
+ arquivo.add(" ");
1950
+ arquivo.add("000000000000");
1951
+ arquivo.add(" ");
1952
+ arquivo.add(" ");
1953
+ arquivo.add("0");
1954
+ arquivo.add("000000000");
1955
+ }
1956
+ arquivo.addLine();
1957
+ quantidadeRegistro++;
1958
+ }
1959
+ arquivo.add("085");
1960
+ arquivo.add("0001");
1961
+ arquivo.add("5");
1962
+ arquivo.add(" ".padEnd(9, " "));
1963
+ arquivo.add((sequencia + 3).toString().padStart(6, "0"));
1964
+ arquivo.add(quantidadeRegistro.toString().padStart(6, "0"));
1965
+ arquivo.add(total.toFixed(2).replace(".", "").padStart(17, "0"));
1966
+ arquivo.add("0".padStart(6, "0"));
1967
+ arquivo.add("0".padStart(17, "0"));
1968
+ arquivo.add("0".padStart(6, "0"));
1969
+ arquivo.add("0".padStart(17, "0"));
1970
+ arquivo.add("0".padStart(6, "0"));
1971
+ arquivo.add("0".padStart(17, "0"));
1972
+ arquivo.add(" ".padStart(8, " "));
1973
+ arquivo.add(" ".padStart(117, " "));
1974
+ arquivo.addLine();
1975
+ arquivo.add("085");
1976
+ arquivo.add("9999");
1977
+ arquivo.add("9");
1978
+ arquivo.add(" ".padEnd(9, " "));
1979
+ arquivo.add("000001");
1980
+ arquivo.add((sequencia + 4).toString().padStart(6, "0"));
1981
+ arquivo.add("000000");
1982
+ arquivo.add(" ".padEnd(205, " "));
1983
+ return {
1984
+ download: remessa2,
1985
+ arquivo: arquivo.getArquivo()
1986
+ };
1987
+ } catch (error) {
1988
+ console.log(error);
1989
+ return null;
1990
+ }
1991
+ });
1992
+ }
1993
+
1994
+ // src/banks/bradesco/gerarRetorno.ts
1995
+ function gerarRetorno3({ dados }) {
1996
+ try {
1997
+ const { arquivo } = dados;
1998
+ const documentos = [];
1999
+ let index = 0;
2000
+ for (const item of arquivo) {
2001
+ let linha = item;
2002
+ const banco = linha.substring(0, 3);
2003
+ const codigoRetorno = linha.substring(15, 17);
2004
+ if ((banco === "001" || banco === "085") && (codigoRetorno === "06" || codigoRetorno === "17")) {
2005
+ let segmento = linha.substring(13, 14);
2006
+ if (segmento === "T") {
2007
+ let tipoDocumento = "";
2008
+ let idDocumento = "";
2009
+ const linhaDoc = linha.substring(105, 130).trimEnd();
2010
+ if (linhaDoc.includes("-")) {
2011
+ [tipoDocumento, idDocumento] = linha.split("-");
2012
+ } else {
2013
+ idDocumento = linhaDoc;
2014
+ }
2015
+ const especie = tipoDocumento.length ? tipoDocumento : "INDEFINIDO";
2016
+ linha = arquivo[index + 1];
2017
+ segmento = linha.substring(13, 14);
2018
+ if (segmento === "U") {
2019
+ const valorAbatimentoString = linha.substring(47, 62);
2020
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
2021
+ const valorDescontoString = linha.substring(32, 47);
2022
+ const valorDesconto = Number(valorDescontoString) / 100;
2023
+ const valorPagoString = linha.substring(77, 92);
2024
+ const valorPago = Number(valorPagoString) / 100;
2025
+ const valorJurosString = linha.substring(17, 32);
2026
+ const valorJuros = Number(valorJurosString) / 100;
2027
+ const valorMulta = 0;
2028
+ const descontos = valorAbatimento + valorDesconto;
2029
+ const valorTotal = valorPago - valorJuros + descontos;
2030
+ const documento = {
2031
+ id_documento: idDocumento,
2032
+ especie,
2033
+ valor: valorTotal,
2034
+ valor_desconto: 0,
2035
+ valor_juros: 0,
2036
+ valor_multa: 0,
2037
+ valor_total: 0,
2038
+ data: /* @__PURE__ */ new Date()
2039
+ };
2040
+ documentos.push(documento);
2041
+ }
2042
+ }
2043
+ }
2044
+ index++;
2045
+ }
2046
+ const documentoAgrupado = agruparRetorno(documentos);
2047
+ return documentoAgrupado;
2048
+ } catch (error) {
2049
+ console.log(error);
2050
+ return null;
2051
+ }
2052
+ }
2053
+
2054
+ // src/banks/bradesco/index.ts
2055
+ var bradesco = {
2056
+ gerarDadosBoleto: gerarDadosBoleto3,
2057
+ gerarPDF: gerarPDF3,
2058
+ gerarRemessa: gerarRemessa3,
2059
+ gerarRetorno: gerarRetorno3
2060
+ };
2061
+
2062
+ // src/banks/sicoob/gerarDadosBoleto.ts
2063
+ function gerarDadosBoleto4({ dados }) {
2064
+ try {
2065
+ const { bancario, parcela } = dados;
2066
+ if (!bancario.modalidade) {
2067
+ bancario.modalidade = "01";
2068
+ }
2069
+ bancario.modalidade = padLeft(bancario.modalidade, 2);
2070
+ const codigo_cliente = `${bancario.codigo_cliente}${bancario.codigo_cliente_dv}`;
2071
+ const nossoNumero = getNossoNumero2(bancario.agencia, codigo_cliente, String(parcela.id_boleto));
2072
+ const fatorVencimento = getFatorVencimento(parcela.vencimento);
2073
+ const valor = getValor4(Number(parcela.valor));
2074
+ const campoLivre = "1" + bancario.agencia + bancario.modalidade + padLeft(codigo_cliente, 7) + nossoNumero + padLeft(parcela.parcela, 3);
2075
+ const digitoGeral = getDigitoGeral4(`7569${fatorVencimento}${valor}${campoLivre}`);
2076
+ const codigoBarra2 = `7569${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
2077
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
2078
+ const campo2 = copy(codigoBarra2, 25, 34);
2079
+ const campo3 = copy(codigoBarra2, 35, 44);
2080
+ const campo4 = copy(codigoBarra2, 5, 5);
2081
+ const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
2082
+ const digito1 = getDigito4(campo1);
2083
+ const digito2 = getDigito4(campo2);
2084
+ const digito3 = getDigito4(campo3);
2085
+ const linhaDigitavel = campo1 + digito1 + campo2 + digito2 + campo3 + digito3 + campo4 + campo5;
2086
+ const dadosBoleto = {
2087
+ linhaDigitavel,
2088
+ fatorVencimento,
2089
+ valor,
2090
+ nossoNumero,
2091
+ campoLivre,
2092
+ digitoGeral,
2093
+ codigoBarra: codigoBarra2
2094
+ };
2095
+ return dadosBoleto;
2096
+ } catch (error) {
2097
+ console.log("Falha ao gerar dados do boleto", error);
2098
+ return null;
2099
+ }
2100
+ }
2101
+ function getNossoNumero2(agencia, codigo_cliente, id_boleto) {
2102
+ codigo_cliente = padLeft(codigo_cliente, 10);
2103
+ id_boleto = padLeft(id_boleto, 7);
2104
+ const aux = `${agencia}${codigo_cliente}${id_boleto}`;
2105
+ let i = 22, m = 3, soma = 0;
2106
+ while (true) {
2107
+ i--;
2108
+ soma += m * Number(copy(aux, i, i));
2109
+ if (i === 1)
2110
+ break;
2111
+ else if (m === 3)
2112
+ m = 7;
2113
+ else if (m === 7)
2114
+ m = 9;
2115
+ else if (m === 9)
2116
+ m = 1;
2117
+ else if (m === 1)
2118
+ m = 3;
2119
+ }
2120
+ let dig = soma % 11;
2121
+ dig = dig === 1 || dig === 0 ? 0 : 11 - dig;
2122
+ return `${id_boleto}${dig}`;
2123
+ }
2124
+ function getValor4(valor) {
2125
+ const valorFormatado = valor.toFixed(2).replace(/\D/g, "");
2126
+ return padLeft(valorFormatado, 10);
2127
+ }
2128
+ function getDigitoGeral4(texto) {
2129
+ let i = 43;
2130
+ let j = 1;
2131
+ let soma = 0;
2132
+ while (i >= 1) {
2133
+ j++;
2134
+ if (j === 10)
2135
+ j = 2;
2136
+ const valor = Number(copy(texto, i, i));
2137
+ soma += j * valor;
2138
+ i--;
2139
+ }
2140
+ const resto = soma % 11;
2141
+ let digito = 11 - resto;
2142
+ if (digito === 0 || digito > 9)
2143
+ digito = 1;
2144
+ return String(digito);
2145
+ }
2146
+ function getDigito4(texto) {
2147
+ let i = texto.length;
2148
+ let j = 1;
2149
+ let total = 0;
2150
+ let soma = 0;
2151
+ let digito = 0;
2152
+ while (i >= 1) {
2153
+ j = j === 1 ? 2 : 1;
2154
+ let valor = Number(copy(texto, i, i));
2155
+ total = valor * j;
2156
+ if (total >= 10) {
2157
+ valor = Number(copy(total, 1, 1)) + Number(copy(total, 2, 2));
2158
+ } else {
2159
+ valor = total;
2160
+ }
2161
+ soma += valor;
2162
+ i--;
2163
+ }
2164
+ const uni = Number(copy(soma, String(soma).length, String(soma).length));
2165
+ digito = 10 - uni;
2166
+ if (digito === 10)
2167
+ digito = 0;
2168
+ return String(digito);
2169
+ }
2170
+
2171
+ // src/banks/sicoob/gerarRemessa.ts
2172
+ import { addDays as addDays3, format as format5 } from "date-fns";
2173
+ function gerarRemessa4({ dados }) {
2174
+ try {
2175
+ const { dadosBancario, beneficiario, boletos } = dados.remessa;
2176
+ const arquivo = new Arquivo();
2177
+ const dataAtual = /* @__PURE__ */ new Date();
2178
+ const data = format5(dataAtual, "ddMMyyyy");
2179
+ const hora = format5(dataAtual, "HHmmss");
2180
+ const remessa2 = `REM${dadosBancario.numeroRemessa.padStart(6, "0")}.REM`;
2181
+ arquivo.add("756");
2182
+ arquivo.add("0000");
2183
+ arquivo.add("0");
2184
+ arquivo.add(" ".padEnd(9, " "));
2185
+ arquivo.add("2");
2186
+ arquivo.add(beneficiario.cnpj);
2187
+ arquivo.add(" ".padEnd(20, " "));
2188
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
2189
+ arquivo.add(dadosBancario.agenciaDigito);
2190
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
2191
+ arquivo.add(dadosBancario.contaDigito);
2192
+ arquivo.add("0");
2193
+ arquivo.add(removerCaracterEspecial(beneficiario.nome).substring(0, 30).padEnd(30, " "));
2194
+ arquivo.add("SICOOB".padEnd(30, " "));
2195
+ arquivo.add(" ".padEnd(10, " "));
2196
+ arquivo.add("1");
2197
+ arquivo.add(data);
2198
+ arquivo.add(hora);
2199
+ arquivo.add(dadosBancario.numeroRemessa.padStart(6, "0"));
2200
+ arquivo.add("081");
2201
+ arquivo.add("00000");
2202
+ arquivo.add(" ".padEnd(69, " "));
2203
+ arquivo.addLine();
2204
+ arquivo.add("756");
2205
+ arquivo.add("0001");
2206
+ arquivo.add("1");
2207
+ arquivo.add("R");
2208
+ arquivo.add("01");
2209
+ arquivo.add(" ");
2210
+ arquivo.add("040");
2211
+ arquivo.add(" ");
2212
+ arquivo.add("2");
2213
+ arquivo.add(beneficiario.cnpj.padStart(15, "0"));
2214
+ arquivo.add(" ".padEnd(20, " "));
2215
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
2216
+ arquivo.add(dadosBancario.agenciaDigito);
2217
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
2218
+ arquivo.add(dadosBancario.contaDigito);
2219
+ arquivo.add(" ");
2220
+ arquivo.add(removerCaracterEspecial(beneficiario.nome).substring(0, 30).padEnd(30, " "));
2221
+ arquivo.add(" ".padEnd(80, " "));
2222
+ arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
2223
+ arquivo.add(data);
2224
+ arquivo.add("00000000");
2225
+ arquivo.add(" ".padEnd(33, " "));
2226
+ arquivo.addLine();
2227
+ let sequencia = 0;
2228
+ let quantidadeRegistro = 0;
2229
+ let total = 0;
2230
+ for (const boleto of boletos) {
2231
+ const { pagador } = boleto;
2232
+ const vencimento = format5(new Date(boleto.vencimento), "ddMMyyyy");
2233
+ const valor_juros_dia = Number(boleto.valor) * dadosBancario.jurosMes / 100 / 30;
2234
+ let protesto = "3";
2235
+ switch (dadosBancario.tipo_protesto) {
2236
+ case "Nenhum":
2237
+ protesto = "3";
2238
+ break;
2239
+ case "Protestar":
2240
+ protesto = "1";
2241
+ break;
2242
+ case "Negativar":
2243
+ protesto = "8";
2244
+ break;
2245
+ }
2246
+ const diasProtesto = dadosBancario.diasProtesto.toString().padStart(2, "0");
2247
+ total += Number(boleto.valor);
2248
+ arquivo.add("756");
2249
+ arquivo.add("0001");
2250
+ arquivo.add("3");
2251
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
2252
+ arquivo.add("P");
2253
+ arquivo.add(" ");
2254
+ arquivo.add("01");
2255
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
2256
+ arquivo.add(dadosBancario.agenciaDigito);
2257
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
2258
+ arquivo.add(dadosBancario.contaDigito);
2259
+ arquivo.add(" ");
2260
+ arquivo.add(boleto.nossoNumero.padStart(10, "0"));
2261
+ arquivo.add(boleto.parcela.toString().padStart(2, "0"));
2262
+ arquivo.add(dadosBancario.modalidade.padStart(2, "0"));
2263
+ arquivo.add("6");
2264
+ arquivo.add(" ".padEnd(5, " "));
2265
+ arquivo.add(dadosBancario.carteira);
2266
+ arquivo.add("0 22");
2267
+ arquivo.add(`${boleto.numeroDocumento}/${Number(boleto.parcela)}`.padEnd(15, " "));
2268
+ arquivo.add(vencimento);
2269
+ arquivo.add(Number(boleto.valor).toFixed(2).replace(".", "").padStart(15, "0"));
2270
+ arquivo.add("00000");
2271
+ arquivo.add(" ");
2272
+ arquivo.add("02");
2273
+ arquivo.add(boleto.aceite);
2274
+ arquivo.add(data);
2275
+ arquivo.add("1");
2276
+ arquivo.add(format5(addDays3(new Date(boleto.vencimento), 1), "ddMMyyyy"));
2277
+ arquivo.add(valor_juros_dia.toFixed(2).replace(".", "").padStart(15, "0"));
2278
+ arquivo.add("0");
2279
+ arquivo.add("00000000");
2280
+ arquivo.add("000000000000000");
2281
+ arquivo.add("000000000000000");
2282
+ arquivo.add("000000000000000");
2283
+ arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
2284
+ arquivo.add(protesto);
2285
+ arquivo.add(diasProtesto);
2286
+ arquivo.add("0");
2287
+ arquivo.add(" ");
2288
+ arquivo.add("09");
2289
+ arquivo.add("0000000000");
2290
+ arquivo.add(" ");
2291
+ arquivo.addLine();
2292
+ let tipoInscricao = "1";
2293
+ if (pagador.pessoa === "F") {
2294
+ tipoInscricao = "1";
2295
+ } else {
2296
+ tipoInscricao = "2";
2297
+ }
2298
+ pagador.endereco.logradouro = `${removerCaracterEspecial(pagador.endereco.logradouro).substring(0, 32).padEnd(32, " ")}${pagador.endereco.numero.padEnd(8, " ")}`;
2299
+ arquivo.add("756");
2300
+ arquivo.add("0001");
2301
+ arquivo.add("3");
2302
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
2303
+ arquivo.add("Q");
2304
+ arquivo.add(" ");
2305
+ arquivo.add("01");
2306
+ arquivo.add(tipoInscricao);
2307
+ arquivo.add(pagador.cpfCnpj.padStart(15, "0"));
2308
+ arquivo.add(removerCaracterEspecial(pagador.nome).substring(0, 40).padEnd(40, " "));
2309
+ arquivo.add(removerCaracterEspecial(pagador.endereco.logradouro).substring(0, 40).padEnd(40, " "));
2310
+ arquivo.add(removerCaracterEspecial(pagador.endereco.bairro).substring(0, 15).padEnd(15, " "));
2311
+ arquivo.add(pagador.endereco.cep.padEnd(8, " "));
2312
+ arquivo.add(removerCaracterEspecial(pagador.endereco.municipio).substring(0, 15).padEnd(15, " "));
2313
+ arquivo.add(removerCaracterEspecial(pagador.endereco.uf).padEnd(2, " "));
2314
+ arquivo.add("0");
2315
+ arquivo.add("000000000000000");
2316
+ arquivo.add(" ".padEnd(40, " "));
2317
+ arquivo.add("000");
2318
+ arquivo.add(" ".padEnd(28, " "));
2319
+ arquivo.addLine();
2320
+ let multa = "0";
2321
+ let data_multa = "00000000";
2322
+ let valor_multa = "000000000000000";
2323
+ dadosBancario.multaAtraso = Number(dadosBancario.multaAtraso || 0);
2324
+ if (dadosBancario.multaAtraso > 0) {
2325
+ multa = "2";
2326
+ data_multa = format5(addDays3(new Date(boleto.vencimento), 1), "ddMMyyyy");
2327
+ valor_multa = dadosBancario.multaAtraso.toFixed(2).replace(".", "").padStart(15, "0");
2328
+ }
2329
+ arquivo.add("756");
2330
+ arquivo.add("0001");
2331
+ arquivo.add("3");
2332
+ arquivo.add("");
2333
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
2334
+ arquivo.add("R");
2335
+ arquivo.add(" ");
2336
+ arquivo.add("01");
2337
+ arquivo.add("0");
2338
+ arquivo.add("00000000");
2339
+ arquivo.add("000000000000000");
2340
+ arquivo.add("0");
2341
+ arquivo.add("00000000");
2342
+ arquivo.add("000000000000000");
2343
+ arquivo.add(multa);
2344
+ arquivo.add(data_multa);
2345
+ arquivo.add(valor_multa);
2346
+ arquivo.add(" ".padEnd(10, " "));
2347
+ arquivo.add(" ".padEnd(40, " "));
2348
+ arquivo.add(" ".padEnd(40, " "));
2349
+ arquivo.add(" ".padEnd(20, " "));
2350
+ arquivo.add("00000000");
2351
+ arquivo.add("000");
2352
+ arquivo.add("00000");
2353
+ arquivo.add(" ");
2354
+ arquivo.add("000000000000");
2355
+ arquivo.add(" ");
2356
+ arquivo.add("0");
2357
+ arquivo.add(" ".padEnd(9, " "));
2358
+ arquivo.addLine();
2359
+ quantidadeRegistro++;
2360
+ }
2361
+ arquivo.add("756");
2362
+ arquivo.add("0001");
2363
+ arquivo.add("5");
2364
+ arquivo.add(" ".padEnd(9, " "));
2365
+ arquivo.add((sequencia + 2).toString().padStart(6, "0"));
2366
+ arquivo.add(quantidadeRegistro.toString().padStart(6, "0"));
2367
+ arquivo.add("00");
2368
+ arquivo.add(total.toFixed(2).replace(".", "").padStart(15, "0"));
2369
+ arquivo.add("000000000000000000000000000000000000000000000000000000000000000000000");
2370
+ arquivo.add(" ".padEnd(125, " "));
2371
+ arquivo.addLine();
2372
+ arquivo.add("756");
2373
+ arquivo.add("9999");
2374
+ arquivo.add("9");
2375
+ arquivo.add(" ".padEnd(9, " "));
2376
+ arquivo.add("000001");
2377
+ arquivo.add((sequencia + 4).toString().padStart(6, "0"));
2378
+ arquivo.add("000000");
2379
+ arquivo.add(" ".padEnd(205, " "));
2380
+ return {
2381
+ download: remessa2,
2382
+ arquivo: arquivo.getArquivo()
2383
+ };
2384
+ } catch (error) {
2385
+ console.log(error);
2386
+ return null;
2387
+ }
2388
+ }
2389
+
2390
+ // src/banks/sicoob/gerarPDF.ts
2391
+ import BwipJs5 from "bwip-js";
2392
+ import StringMask2 from "string-mask";
2393
+ function gerarPDF4(_0) {
2394
+ return __async(this, arguments, function* ({ dados }) {
2395
+ try {
2396
+ const { dadosPDF, generatePDF } = dados;
2397
+ if (!dadosPDF.pagador.cpfcnpj) {
2398
+ throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
2399
+ }
2400
+ const codigoBarra2 = yield BwipJs5.toBuffer({
2401
+ bcid: "interleaved2of5",
2402
+ text: dadosPDF.boleto.codigoBarra,
2403
+ height: 20
2404
+ });
2405
+ dadosPDF.beneficiario.dadosBancario.agencia = formatAgenciaCodigoCedente(
2406
+ dadosPDF.beneficiario.dadosBancario.agencia,
2407
+ dadosPDF.beneficiario.dadosBancario.codigo_cliente
2408
+ );
2409
+ dadosPDF.beneficiario.dadosBancario.carteira = dadosPDF.beneficiario.dadosBancario.carteira.padStart(2, "0");
2410
+ dadosPDF.boleto.nossoNumero = formatNossoNumero(
2411
+ dadosPDF.boleto.parcela,
2412
+ dadosPDF.boleto.nossoNumero
2413
+ );
2414
+ dadosPDF.pagador.cpfcnpj = dadosPDF.pagador.cpfcnpj.length === 11 ? `CPF: ${maskFormat_default.retornaCpfCnpjFormatado(dadosPDF.pagador.cpfcnpj)}` : `CNPJ: ${maskFormat_default.retornaCpfCnpjFormatado(dadosPDF.pagador.cpfcnpj)}`;
2415
+ dadosPDF.boleto.linhaDigitavel = maskFormat_default.codigoBarra(dadosPDF.boleto.linhaDigitavel);
2416
+ dadosPDF.boleto.codigoBarra = maskFormat_default.codigoBarra(dadosPDF.boleto.codigoBarra);
2417
+ dadosPDF.boleto.codigoBarraImage = codigoBarra2.toString("base64");
2418
+ dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
2419
+ dadosPDF.pagador.endereco.cep
2420
+ );
2421
+ dadosPDF.boleto.valorAcrescimo = maskFormat_default.numberToReal(
2422
+ dadosPDF.boleto.valorAcrescimo
2423
+ );
2424
+ dadosPDF.boleto.valorCobrado = maskFormat_default.numberToReal(
2425
+ dadosPDF.boleto.valorCobrado
2426
+ );
2427
+ dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
2428
+ dadosPDF.boleto.valorDescontoAbatimento
2429
+ );
2430
+ const valorDocumento = Number(dadosPDF.boleto.valorDocumento);
2431
+ dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
2432
+ dadosPDF.boleto.valorDocumento
2433
+ );
2434
+ dadosPDF.boleto.valorMulta = maskFormat_default.numberToReal(dadosPDF.boleto.valorMulta);
2435
+ dadosPDF.boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
2436
+ dadosPDF.boleto.valorOutrasDeducoes
2437
+ );
2438
+ if (dadosPDF.boleto.quantidade) {
2439
+ dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
2440
+ }
2441
+ const jurosMes = dadosPDF.beneficiario.dadosBancario.juros;
2442
+ const jurosDia = jurosMes / 100 / 30 * valorDocumento;
2443
+ if (jurosDia > 0) {
2444
+ dadosPDF.boleto.instrucao1 = `COBRAR JUROS DE R$${maskFormat_default.numberToReal(jurosDia)} AO DIA, AP\xD3S O VENCIMENTO`;
2445
+ }
2446
+ const descontoVencimento = dadosPDF.beneficiario.dadosBancario.desconto || 0;
2447
+ if (descontoVencimento > 0) {
2448
+ dadosPDF.boleto.instrucao2 = `AT\xC9 O VENCIMENTO, CONCEDER DESCONTO DE ${descontoVencimento}%`;
2449
+ }
2450
+ const multaAtraso = dadosPDF.beneficiario.dadosBancario.multa || 0;
2451
+ if (multaAtraso > 0) {
2452
+ dadosPDF.boleto.instrucao3 = `MULTA DE ${multaAtraso}%`;
2453
+ }
2454
+ const protestoDias = dadosPDF.beneficiario.dadosBancario.protesto || 0;
2455
+ if (protestoDias > 0) {
2456
+ dadosPDF.boleto.instrucao4 = `PROTESTAR AP\xD3S ${protestoDias} DIAS CORRIDOS DO VENCIMENTO`;
2457
+ }
2458
+ dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
2459
+ dadosPDF.pagador.isCnpj = dadosPDF.pagador.cpfcnpj.length > 14;
2460
+ const content = compileHbs(getPathTemplates("sicoob-boleto.hbs"), dadosPDF);
2461
+ const config = {
2462
+ displayHeaderFooter: false,
2463
+ path: "./boleto.pdf",
2464
+ format: "a4",
2465
+ printBackground: true
2466
+ };
2467
+ let pdfBase64 = null;
2468
+ if (generatePDF) {
2469
+ pdfBase64 = yield generatePDF(content, config);
2470
+ } else {
2471
+ if (!api.defaults.baseURL) {
2472
+ throw new Error("BaseURL api not found");
2473
+ }
2474
+ const response = yield api.post("/", { content, config });
2475
+ const buffer = Buffer.from(response.data.pdf);
2476
+ pdfBase64 = yield decompress(buffer);
2477
+ }
2478
+ return {
2479
+ erro: false,
2480
+ dados: pdfBase64
2481
+ };
2482
+ } catch (error) {
2483
+ console.log(error);
2484
+ if (error instanceof Error) {
2485
+ return {
2486
+ erro: true,
2487
+ dados: error.message
2488
+ };
2489
+ }
2490
+ return {
2491
+ erro: true,
2492
+ dados: "Falha ao gerar impress\xE3o do boleto"
2493
+ };
2494
+ }
2495
+ });
2496
+ }
2497
+ function formatAgenciaCodigoCedente(agencia, conta) {
2498
+ agencia = agencia.slice(0, -1).padStart(4, "0");
2499
+ conta = conta.padStart(7, "0");
2500
+ const agenciaFmt = new StringMask2("0000.000000-0");
2501
+ return agenciaFmt.apply(agencia + conta);
2502
+ }
2503
+ function formatNossoNumero(parcela, nossoNumero) {
2504
+ parcela = String(parcela).padStart(2, "0");
2505
+ nossoNumero = nossoNumero.padStart(8, "0");
2506
+ return `${parcela}/${nossoNumero.slice(0, 7)}-${nossoNumero.slice(7, 8)}`;
2507
+ }
2508
+
2509
+ // src/banks/sicoob/gerarRetorno.ts
2510
+ import { parse as parse3 } from "date-fns";
2511
+ function gerarRetorno4({ dados }) {
2512
+ try {
2513
+ const { arquivo } = dados;
2514
+ const documentos = [];
2515
+ for (let i = 0; i < arquivo.length; i++) {
2516
+ let linha = arquivo[i];
2517
+ const banco = linha.substring(0, 3);
2518
+ if (banco !== "756" /* SICOOB */) {
2519
+ continue;
2520
+ }
2521
+ const ocorrencia = linha.substring(15, 17);
2522
+ if (ocorrencia === "06" || ocorrencia === "17" || ocorrencia === "03") {
2523
+ let segmento = linha.substring(13, 14);
2524
+ if (segmento === "T") {
2525
+ const motivo = linha.substring(213, 223).trim();
2526
+ const meu_numero = linha.substring(105, 130).trimEnd();
2527
+ let tipo_documento = "INDEFINIDO";
2528
+ let id_documento = meu_numero;
2529
+ if (meu_numero.includes("-")) {
2530
+ const [tipo, id] = meu_numero.split("-");
2531
+ tipo_documento = tipo;
2532
+ id_documento = id;
2533
+ }
2534
+ const especie = tipo_documento.length ? tipo_documento : "INDEFINIDO";
2535
+ linha = arquivo[++i];
2536
+ segmento = linha.substring(13, 14);
2537
+ if (segmento === "U") {
2538
+ let dataCredito;
2539
+ const dataCreditoString = linha.substring(145, 153);
2540
+ if (dataCreditoString && dataCreditoString !== "00000000") {
2541
+ dataCredito = parse3(dataCreditoString, "ddMMyyyy", /* @__PURE__ */ new Date());
2542
+ } else {
2543
+ const dataOcorrenciaString = linha.substring(137, 145);
2544
+ dataCredito = parse3(dataOcorrenciaString, "ddMMyyyy", /* @__PURE__ */ new Date());
2545
+ }
2546
+ const valorAbatimentoString = linha.substring(47, 62);
2547
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
2548
+ const valorDescontoString = linha.substring(32, 47);
2549
+ const valorDesconto = Number(valorDescontoString) / 100;
2550
+ const valorPagoString = linha.substring(77, 92);
2551
+ const valorPago = Number(valorPagoString) / 100;
2552
+ const valorJurosString = linha.substring(17, 32);
2553
+ const valorJuros = Number(valorJurosString) / 100;
2554
+ const valorMulta = 0;
2555
+ const descontos = valorAbatimento + valorDesconto;
2556
+ const valorTotal = valorPago - valorJuros + descontos;
2557
+ let rejeitado = false;
2558
+ let motivoRejeicao = "";
2559
+ if (ocorrencia === "03") {
2560
+ rejeitado = true;
2561
+ motivoRejeicao = retornaMotivoRejeicao3(motivo);
2562
+ }
2563
+ const documento = {
2564
+ id_documento,
2565
+ especie,
2566
+ valor: valorPago,
2567
+ valor_multa: valorMulta,
2568
+ valor_juros: valorJuros,
2569
+ valor_desconto: valorDesconto,
2570
+ valor_total: valorTotal,
2571
+ data: dataCredito,
2572
+ rejeitado,
2573
+ motivo: motivoRejeicao
2574
+ };
2575
+ documentos.push(documento);
2576
+ }
2577
+ }
2578
+ }
2579
+ }
2580
+ const documentoAgrupado = agruparRetorno(documentos);
2581
+ return documentoAgrupado;
2582
+ } catch (error) {
2583
+ console.log(error);
2584
+ return null;
2585
+ }
2586
+ }
2587
+ function retornaMotivoRejeicao3(codigo) {
2588
+ switch (codigo) {
2589
+ case "03":
2590
+ return "Tarifa de Desist\xEAncia";
2591
+ case "04":
2592
+ return "Tarifa de Protesto";
2593
+ case "08":
2594
+ return "Custas de Protesto";
2595
+ case "11":
2596
+ return "Forma de Cadastramento do T\xEDtulo Inv\xE1lido";
2597
+ case "21":
2598
+ return "Tarifa de Grava\xE7\xE3o Eletr\xF4nica = CRA";
2599
+ case "28":
2600
+ return "C\xF3digo do Desconto Inv\xE1lido";
2601
+ case "29":
2602
+ return "Valor do Desconto Maior ou Igual ao Valor do T\xEDtulo";
2603
+ case "30":
2604
+ return "Desconto a Conceder N\xE3o Confere";
2605
+ case "31":
2606
+ return "Concess\xE3o de Desconto - J\xE1 Existe Desconto Anterior";
2607
+ case "39":
2608
+ return "Pedido de Protesto/Negativa\xE7\xE3o N\xE3o Permitido para o T\xEDtulo";
2609
+ case "40":
2610
+ return "T\xEDtulo com Ordem de Protesto/Negativa\xE7\xE3o Emitida";
2611
+ case "41":
2612
+ return "Pedido de Cancelamento/Susta\xE7\xE3o para T\xEDtulos sem Instru\xE7\xE3o de Negativa\xE7\xE3o/Protesto";
2613
+ case "58":
2614
+ return "Data da Multa Inv\xE1lida";
2615
+ case "79":
2616
+ return "Data Juros de Mora Inv\xE1lido";
2617
+ case "80":
2618
+ return "Data do Desconto Inv\xE1lida";
2619
+ default:
2620
+ return "Motivo de rejei\xE7\xE3o n\xE3o identificado";
2621
+ }
2622
+ }
2623
+
2624
+ // src/banks/sicoob/index.ts
2625
+ var sicoob = {
2626
+ gerarDadosBoleto: gerarDadosBoleto4,
2627
+ gerarRemessa: gerarRemessa4,
2628
+ gerarPDF: gerarPDF4,
2629
+ gerarRetorno: gerarRetorno4
2630
+ };
2631
+
2632
+ // src/banks/banco-brasil/gerarDadosBoleto.ts
2633
+ function gerarDadosBoleto5({ dados }) {
2634
+ try {
2635
+ const {
2636
+ bancario,
2637
+ parcela
2638
+ } = dados;
2639
+ parcela.valor = Number(parcela.valor);
2640
+ const fatorVencimento = getFatorVencimento(parcela.vencimento);
2641
+ const valor = getValor5(parcela.valor);
2642
+ const convenio = bancario.convenio;
2643
+ let nossoNumero = "";
2644
+ let numeroDocumento = "";
2645
+ let campoLivre = "";
2646
+ if (convenio.length === 6) {
2647
+ switch (parcela.tipoDocumento) {
2648
+ case "NFE":
2649
+ numeroDocumento = padLeft(`${parcela.id_boleto}2`, 5);
2650
+ break;
2651
+ case "FAT":
2652
+ numeroDocumento = padLeft(`${parcela.id_boleto}4`, 5);
2653
+ break;
2654
+ case "FIN":
2655
+ numeroDocumento = padLeft(`${parcela.id_boleto}5`, 5);
2656
+ break;
2657
+ }
2658
+ nossoNumero = getNossoNumero3(`${convenio}${numeroDocumento}`);
2659
+ campoLivre = copy(nossoNumero, 1, 11) + padLeft(bancario.agencia, 4) + padLeft(`${bancario.numero}${bancario.numero_dv}`, 8) + padLeft(bancario.carteira, 2);
2660
+ } else if (convenio.length === 7) {
2661
+ switch (parcela.tipoDocumento) {
2662
+ case "NFE":
2663
+ numeroDocumento = padLeft(`${parcela.id_boleto}2`, 10);
2664
+ break;
2665
+ case "FAT":
2666
+ numeroDocumento = padLeft(`${parcela.id_boleto}4`, 10);
2667
+ break;
2668
+ case "FIN":
2669
+ numeroDocumento = padLeft(`${parcela.id_boleto}5`, 10);
2670
+ break;
2671
+ }
2672
+ nossoNumero = `${convenio}${numeroDocumento}`;
2673
+ campoLivre = `000000${nossoNumero}${padLeft(bancario.carteira, 2)}`;
2674
+ }
2675
+ const digitoGeral = getDigitoGeral5(`0019${fatorVencimento}${valor}${campoLivre}`);
2676
+ const codigoBarra2 = `0019${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
2677
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
2678
+ const campo2 = copy(codigoBarra2, 25, 34);
2679
+ const campo3 = copy(codigoBarra2, 35, 44);
2680
+ const campo4 = copy(codigoBarra2, 5, 5);
2681
+ const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
2682
+ const digito1 = getDigito5(campo1);
2683
+ const digito2 = getDigito5(campo2);
2684
+ const digito3 = getDigito5(campo3);
2685
+ const linhaDigitavel = campo1 + digito1 + campo2 + digito2 + campo3 + digito3 + campo4 + campo5;
2686
+ const dadosBoleto = {
2687
+ linhaDigitavel,
2688
+ fatorVencimento,
2689
+ valor,
2690
+ convenio,
2691
+ nossoNumero,
2692
+ campoLivre,
2693
+ digitoGeral,
2694
+ codigoBarra: codigoBarra2,
2695
+ numeroDocumento
2696
+ };
2697
+ return dadosBoleto;
2698
+ } catch (error) {
2699
+ console.log("Falha ao gerar dados do boleto", error);
2700
+ return null;
2701
+ }
2702
+ }
2703
+ function getValor5(valor) {
2704
+ const valorFormatado = valor.toFixed(2).replace(/\D/g, "");
2705
+ return padLeft(valorFormatado, 10);
2706
+ }
2707
+ function getNossoNumero3(auxiliar) {
2708
+ let i = 11, j = 10, soma = 0;
2709
+ while (i >= 1) {
2710
+ j--;
2711
+ if (j === 1)
2712
+ j = 9;
2713
+ const numero = Number(copy(auxiliar, i, i));
2714
+ soma += j * numero;
2715
+ i--;
2716
+ }
2717
+ const resto = soma % 11;
2718
+ const digito = resto < 10 ? String(resto) : "X";
2719
+ const nosso_numero = auxiliar + digito;
2720
+ return nosso_numero;
2721
+ }
2722
+ function getDigitoGeral5(texto) {
2723
+ let i = 43;
2724
+ let j = 1;
2725
+ let soma = 0;
2726
+ while (i >= 1) {
2727
+ j++;
2728
+ if (j === 10)
2729
+ j = 2;
2730
+ const valor = Number(copy(texto, i, i));
2731
+ soma += j * valor;
2732
+ i--;
2733
+ }
2734
+ const resto = soma % 11;
2735
+ let digito = 11 - resto;
2736
+ if (digito === 0 || digito > 9)
2737
+ digito = 1;
2738
+ return String(digito);
2739
+ }
2740
+ function getDigito5(texto) {
2741
+ let i = texto.length;
2742
+ let j = 1;
2743
+ let total = 0;
2744
+ let soma = 0;
2745
+ let digito = 0;
2746
+ while (i >= 1) {
2747
+ j = j === 1 ? 2 : 1;
2748
+ let valor = Number(copy(texto, i, i));
2749
+ total = valor * j;
2750
+ if (total >= 10) {
2751
+ valor = Number(copy(total, 1, 1)) + Number(copy(total, 2, 2));
2752
+ } else {
2753
+ valor = total;
2754
+ }
2755
+ soma += valor;
2756
+ i--;
2757
+ }
2758
+ const uni = Number(copy(soma, String(soma).length, String(soma).length));
2759
+ digito = 10 - uni;
2760
+ if (digito === 10)
2761
+ digito = 0;
2762
+ return String(digito);
2763
+ }
2764
+
2765
+ // src/banks/banco-brasil/gerarPDF.ts
2766
+ import BwipJs6 from "bwip-js";
2767
+ function gerarPDF5(_0) {
2768
+ return __async(this, arguments, function* ({ dados }) {
2769
+ try {
2770
+ const { dadosPDF } = dados;
2771
+ if (!dadosPDF.pagador.cpfcnpj) {
2772
+ throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
2773
+ }
2774
+ const codigoBarra2 = yield BwipJs6.toBuffer({
2775
+ bcid: "interleaved2of5",
2776
+ text: dadosPDF.boleto.codigoBarra,
2777
+ height: 20
2778
+ });
2779
+ dadosPDF.beneficiario.dadosBancario.agencia = dadosPDF.beneficiario.dadosBancario.agencia.padStart(4, "0");
2780
+ dadosPDF.beneficiario.dadosBancario.conta = dadosPDF.beneficiario.dadosBancario.conta.padStart(7, "0");
2781
+ dadosPDF.boleto.linhaDigitavel = maskFormat_default.codigoBarra(dadosPDF.boleto.linhaDigitavel);
2782
+ dadosPDF.boleto.codigoBarraImage = codigoBarra2.toString("base64");
2783
+ dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
2784
+ dadosPDF.beneficiario.cnpj
2785
+ );
2786
+ dadosPDF.beneficiario.endereco.cep = maskFormat_default.retornaCEPFormatado(
2787
+ dadosPDF.beneficiario.endereco.cep
2788
+ );
2789
+ dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
2790
+ dadosPDF.pagador.endereco.cep
2791
+ );
2792
+ dadosPDF.pagador.cpfcnpj = maskFormat_default.retornaCpfCnpjFormatado(dadosPDF.pagador.cpfcnpj);
2793
+ dadosPDF.boleto.valorAcrescimo = maskFormat_default.numberToReal(
2794
+ dadosPDF.boleto.valorAcrescimo
2795
+ );
2796
+ dadosPDF.boleto.valorCobrado = maskFormat_default.numberToReal(
2797
+ dadosPDF.boleto.valorCobrado
2798
+ );
2799
+ dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
2800
+ dadosPDF.boleto.valorDescontoAbatimento
2801
+ );
2802
+ const valorDocumento = Number(dadosPDF.boleto.valorDocumento);
2803
+ dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
2804
+ dadosPDF.boleto.valorDocumento
2805
+ );
2806
+ dadosPDF.boleto.valorMulta = maskFormat_default.numberToReal(dadosPDF.boleto.valorMulta);
2807
+ dadosPDF.boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
2808
+ dadosPDF.boleto.valorOutrasDeducoes
2809
+ );
2810
+ if (dadosPDF.boleto.quantidade) {
2811
+ dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
2812
+ }
2813
+ const jurosMes = dadosPDF.beneficiario.dadosBancario.juros;
2814
+ const jurosDia = jurosMes / 100 / 30 * valorDocumento;
2815
+ if (jurosDia > 0) {
2816
+ dadosPDF.boleto.instrucao1 = `COBRAR JUROS DE R$${jurosDia} AO DIA, AP\xD3S O VENCIMENTO`;
2817
+ }
2818
+ const descontoVencimento = dadosPDF.boleto.desconto > 0 ? dadosPDF.boleto.desconto : dadosPDF.beneficiario.dadosBancario.desconto > 0 ? dadosPDF.beneficiario.dadosBancario.desconto : 0;
2819
+ if (descontoVencimento > 0) {
2820
+ dadosPDF.boleto.instrucao2 = `AT\xC9 O VENCIMENTO, CONCEDER DESCONTO DE ${descontoVencimento}%`;
2821
+ }
2822
+ const multaAtraso = dadosPDF.beneficiario.dadosBancario.multa || 0;
2823
+ if (multaAtraso > 0) {
2824
+ dadosPDF.boleto.instrucao3 = `MULTA DE ${multaAtraso}%`;
2825
+ }
2826
+ const protestoDias = dadosPDF.beneficiario.dadosBancario.protesto || 0;
2827
+ if (protestoDias > 0) {
2828
+ dadosPDF.boleto.instrucao4 = `PROTESTAR AP\xD3S ${protestoDias} DIAS CORRIDOS DO VENCIMENTO`;
2829
+ }
2830
+ dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
2831
+ dadosPDF.pagador.isCnpj = dadosPDF.pagador.cpfcnpj.length > 14;
2832
+ const content = compileHbs(getPathTemplates("banco-brasil-boleto.hbs"), dadosPDF);
2833
+ const config = {
2834
+ displayHeaderFooter: false,
2835
+ path: "./boleto.pdf",
2836
+ format: "a4",
2837
+ printBackground: true
2838
+ };
2839
+ let pdfBase64 = null;
2840
+ if (!api.defaults.baseURL) {
2841
+ throw new Error("BaseURL api not found");
2842
+ }
2843
+ const response = yield api.post("/", { content, config });
2844
+ const buffer = Buffer.from(response.data.pdf);
2845
+ pdfBase64 = yield decompress(buffer);
2846
+ return {
2847
+ erro: false,
2848
+ dados: pdfBase64
2849
+ };
2850
+ } catch (error) {
2851
+ console.log(error);
2852
+ if (error instanceof Error) {
2853
+ return {
2854
+ erro: true,
2855
+ dados: error.message
2856
+ };
2857
+ }
2858
+ return {
2859
+ erro: true,
2860
+ dados: "Falha ao gerar impress\xE3o do boleto"
2861
+ };
2862
+ }
2863
+ });
2864
+ }
2865
+
2866
+ // src/banks/banco-brasil/gerarRemessa.ts
2867
+ import { format as format6 } from "date-fns";
2868
+ function gerarRemessa5({ dados }) {
2869
+ try {
2870
+ const {
2871
+ dadosBancario,
2872
+ beneficiario,
2873
+ boletos
2874
+ } = dados.remessa;
2875
+ const arquivo = new Arquivo();
2876
+ const dataAtual = /* @__PURE__ */ new Date();
2877
+ const data = format6(dataAtual, "ddMMyyyy");
2878
+ const hora = format6(dataAtual, "HHmmss");
2879
+ const remessa2 = `REM${dadosBancario.numeroRemessa.padStart(5, "0")}.CNAB`;
2880
+ arquivo.add("001");
2881
+ arquivo.add("0000");
2882
+ arquivo.add("0");
2883
+ arquivo.add(" ".padEnd(9, " "));
2884
+ arquivo.add("2");
2885
+ arquivo.add(beneficiario.cnpj.padStart(14, "0"));
2886
+ arquivo.add(dadosBancario.convenio.padStart(9, "0"));
2887
+ arquivo.add("0014");
2888
+ arquivo.add(dadosBancario.carteira.padStart(2, "0"));
2889
+ arquivo.add(dadosBancario.variacao_carteira.padStart(3, "0"));
2890
+ arquivo.add(" ");
2891
+ arquivo.add("0");
2892
+ arquivo.add(`${dadosBancario.agencia}${dadosBancario.agenciaDigito}`.padStart(5, "0"));
2893
+ arquivo.add("00000");
2894
+ arquivo.add(`${dadosBancario.conta}${dadosBancario.contaDigito}`.padStart(8, "0"));
2895
+ arquivo.add(" ");
2896
+ arquivo.add(removerCaracterEspecial(beneficiario.nome).substring(0, 30).padEnd(30, " "));
2897
+ arquivo.add("BANCO DO BRASIL S.A.".padEnd(30, " "));
2898
+ arquivo.add(" ".padEnd(10, " "));
2899
+ arquivo.add("1");
2900
+ arquivo.add(data);
2901
+ arquivo.add(hora);
2902
+ arquivo.add(dadosBancario.numeroRemessa.padStart(6, "0"));
2903
+ arquivo.add("030");
2904
+ arquivo.add("00000");
2905
+ arquivo.add(" ".padEnd(40, " "));
2906
+ arquivo.add(" ".padEnd(11, " "));
2907
+ arquivo.add("CSP");
2908
+ arquivo.add("000");
2909
+ arquivo.add(" ".padEnd(12, " "));
2910
+ arquivo.addLine();
2911
+ arquivo.add("001");
2912
+ arquivo.add("0001");
2913
+ arquivo.add("1");
2914
+ arquivo.add("R");
2915
+ arquivo.add("01");
2916
+ arquivo.add(" ");
2917
+ arquivo.add("020");
2918
+ arquivo.add(" ");
2919
+ arquivo.add("2");
2920
+ arquivo.add(beneficiario.cnpj.padStart(15, "0"));
2921
+ arquivo.add(dadosBancario.convenio.padStart(9, "0"));
2922
+ arquivo.add("0014");
2923
+ arquivo.add(dadosBancario.carteira.padStart(2, "0"));
2924
+ arquivo.add(dadosBancario.variacao_carteira.padStart(3, "0"));
2925
+ arquivo.add(" ");
2926
+ arquivo.add("0");
2927
+ arquivo.add(`${dadosBancario.agencia}${dadosBancario.agenciaDigito}`.padStart(5, "0"));
2928
+ arquivo.add("00000");
2929
+ arquivo.add(`${dadosBancario.conta}${dadosBancario.contaDigito}`.padStart(8, "0"));
2930
+ arquivo.add(" ");
2931
+ arquivo.add(removerCaracterEspecial(beneficiario.nome).substring(0, 30).padEnd(30, " "));
2932
+ arquivo.add(" ".padEnd(80, " "));
2933
+ arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
2934
+ arquivo.add(data);
2935
+ arquivo.add("00000000");
2936
+ arquivo.add(" ".padEnd(33, " "));
2937
+ arquivo.addLine();
2938
+ let sequencia = 0;
2939
+ let quantidadeRegistro = 0;
2940
+ let total = 0;
2941
+ for (const boleto of boletos) {
2942
+ const convenio = dadosBancario.convenio;
2943
+ let nosso_numero = "";
2944
+ if (convenio.length === 6) {
2945
+ switch (boleto.tipoDocumento) {
2946
+ case "NFE": {
2947
+ nosso_numero = getNossoNumero3(`${convenio}${boleto.id_boleto}2`);
2948
+ break;
2949
+ }
2950
+ case "FAT": {
2951
+ nosso_numero = getNossoNumero3(`${convenio}${boleto.id_boleto}4`);
2952
+ break;
2953
+ }
2954
+ case "FIN": {
2955
+ nosso_numero = getNossoNumero3(`${convenio}${boleto.id_boleto}5`);
2956
+ break;
2957
+ }
2958
+ }
2959
+ } else if (convenio.length === 7) {
2960
+ switch (boleto.tipoDocumento) {
2961
+ case "NFE": {
2962
+ nosso_numero = `${convenio}${(boleto.id_boleto.toString() + "2").padStart(10, "0")}`;
2963
+ break;
2964
+ }
2965
+ case "FAT": {
2966
+ nosso_numero = `${convenio}${(boleto.id_boleto.toString() + "4").padStart(10, "0")}`;
2967
+ break;
2968
+ }
2969
+ case "FIN": {
2970
+ nosso_numero = `${convenio}${(boleto.id_boleto.toString() + "5").padStart(10, "0")}`;
2971
+ break;
2972
+ }
2973
+ }
2974
+ }
2975
+ const valorJurosDia = dadosBancario.jurosMes > 0 ? Number(boleto.valor) * dadosBancario.jurosMes / 100 / 30 : 0;
2976
+ const { pagador } = boleto;
2977
+ const tipoInscricao = pagador.pessoa === "F" ? "1" : "2";
2978
+ const vencimento = format6(new Date(boleto.vencimento), "ddMMyyyy");
2979
+ total += Number(boleto.valor);
2980
+ const codigoDesconto = dadosBancario.descontoPagamento > 0 ? "2" : "0";
2981
+ const desconto = boleto.desconto > 0 ? boleto.desconto.toFixed(2) : dadosBancario.descontoPagamento > 0 ? dadosBancario.descontoPagamento.toFixed(2) : "000000000000000";
2982
+ let protesto = "3";
2983
+ let diasProtesto = "00";
2984
+ let baixarDevolver = "1";
2985
+ let diasBaixa = "000";
2986
+ switch (dadosBancario.tipo_protesto) {
2987
+ case "Nenhum":
2988
+ protesto = "3";
2989
+ diasProtesto = "00";
2990
+ baixarDevolver = "1";
2991
+ diasBaixa = "000";
2992
+ break;
2993
+ case "Protestar":
2994
+ protesto = "1";
2995
+ diasProtesto = dadosBancario.diasProtesto.toString().padStart(2, "0");
2996
+ baixarDevolver = "2";
2997
+ diasBaixa = "060";
2998
+ break;
2999
+ case "Negativar":
3000
+ protesto = "8";
3001
+ diasProtesto = dadosBancario.diasProtesto.toString().padStart(2, "0");
3002
+ baixarDevolver = "1";
3003
+ diasBaixa = "000";
3004
+ break;
3005
+ default:
3006
+ protesto = "3";
3007
+ diasProtesto = "00";
3008
+ baixarDevolver = "1";
3009
+ diasBaixa = "000";
3010
+ break;
3011
+ }
3012
+ arquivo.add("001");
3013
+ arquivo.add("0001");
3014
+ arquivo.add("3");
3015
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
3016
+ arquivo.add("P");
3017
+ arquivo.add(" ");
3018
+ arquivo.add("01");
3019
+ arquivo.add("0");
3020
+ arquivo.add(`${dadosBancario.agencia}${dadosBancario.agenciaDigito}`.padStart(5, "0"));
3021
+ arquivo.add("00000");
3022
+ arquivo.add(`${dadosBancario.conta}${dadosBancario.contaDigito}`.padStart(8, "0"));
3023
+ arquivo.add(" ");
3024
+ arquivo.add(nosso_numero.padEnd(20, " "));
3025
+ arquivo.add("7");
3026
+ arquivo.add("1122");
3027
+ arquivo.add(`${boleto.numeroDocumento.padStart(6, "0")}-${boleto.parcela.toString().padStart(2, "0")}`.padEnd(15, " "));
3028
+ arquivo.add(vencimento);
3029
+ arquivo.add(
3030
+ Number(boleto.valor).toFixed(2).replace(".", "").padStart(15, "0")
3031
+ );
3032
+ arquivo.add("00000 ");
3033
+ arquivo.add("02");
3034
+ arquivo.add(boleto.aceite);
3035
+ arquivo.add(data);
3036
+ arquivo.add("1");
3037
+ arquivo.add("00000000");
3038
+ arquivo.add(valorJurosDia.toFixed(2).replace(".", "").padStart(15, "0"));
3039
+ arquivo.add(codigoDesconto);
3040
+ arquivo.add(codigoDesconto == "2" ? vencimento : "00000000");
3041
+ arquivo.add(desconto.replace(".", "").padStart(15, "0"));
3042
+ arquivo.add("000000000000000");
3043
+ arquivo.add("000000000000000");
3044
+ arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
3045
+ arquivo.add(protesto);
3046
+ arquivo.add(diasProtesto);
3047
+ arquivo.add(baixarDevolver);
3048
+ arquivo.add(diasBaixa);
3049
+ arquivo.add("09");
3050
+ arquivo.add("0000000000");
3051
+ arquivo.add(" ");
3052
+ arquivo.addLine();
3053
+ pagador.endereco.logradouro = `${removerCaracterEspecial(pagador.endereco.logradouro).substring(0, 32).padEnd(32, " ")}${pagador.endereco.numero.padEnd(8, " ")}`;
3054
+ arquivo.add("001");
3055
+ arquivo.add("0001");
3056
+ arquivo.add("3");
3057
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
3058
+ arquivo.add("Q");
3059
+ arquivo.add(" ");
3060
+ arquivo.add("01");
3061
+ arquivo.add(tipoInscricao);
3062
+ arquivo.add(pagador.cpfCnpj.padStart(15, "0"));
3063
+ arquivo.add(removerCaracterEspecial(pagador.nome).substring(0, 40).padEnd(40, " "));
3064
+ arquivo.add(removerCaracterEspecial(pagador.endereco.logradouro).substring(0, 40).padEnd(40, " "));
3065
+ arquivo.add(removerCaracterEspecial(pagador.endereco.bairro).substring(0, 15).padEnd(15, " "));
3066
+ arquivo.add(pagador.endereco.cep);
3067
+ arquivo.add(removerCaracterEspecial(pagador.endereco.municipio).substring(0, 15).padEnd(15, " "));
3068
+ arquivo.add(removerCaracterEspecial(pagador.endereco.uf).padEnd(2, " "));
3069
+ arquivo.add("0");
3070
+ arquivo.add("000000000000000");
3071
+ arquivo.add(" ".padEnd(40, " "));
3072
+ arquivo.add("000");
3073
+ arquivo.add(" ".padEnd(28, " "));
3074
+ arquivo.addLine();
3075
+ dadosBancario.multaAtraso = Number(dadosBancario.multaAtraso || 0);
3076
+ if (dadosBancario.multaAtraso > 0) {
3077
+ const multa = dadosBancario.multaAtraso.toFixed(2);
3078
+ arquivo.add("001");
3079
+ arquivo.add("0001");
3080
+ arquivo.add("3");
3081
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
3082
+ arquivo.add("R");
3083
+ arquivo.add(" ");
3084
+ arquivo.add("01");
3085
+ arquivo.add("0");
3086
+ arquivo.add("00000000");
3087
+ arquivo.add("000000000000000");
3088
+ arquivo.add("0");
3089
+ arquivo.add("00000000");
3090
+ arquivo.add("000000000000000");
3091
+ arquivo.add("2");
3092
+ arquivo.add(vencimento);
3093
+ arquivo.add(multa.replace(".", "").padStart(15, "0"));
3094
+ arquivo.add(" ".padEnd(10, " "));
3095
+ arquivo.add(" ".padEnd(40, " "));
3096
+ arquivo.add(" ".padEnd(40, " "));
3097
+ arquivo.add(" ".padEnd(20, " "));
3098
+ arquivo.add("00000000");
3099
+ arquivo.add("000");
3100
+ arquivo.add("00000");
3101
+ arquivo.add(" ");
3102
+ arquivo.add("000000000000");
3103
+ arquivo.add(" ");
3104
+ arquivo.add("0");
3105
+ arquivo.add(" ".padEnd(9, " "));
3106
+ arquivo.addLine();
3107
+ }
3108
+ quantidadeRegistro++;
3109
+ }
3110
+ arquivo.add("001");
3111
+ arquivo.add("0001");
3112
+ arquivo.add("5");
3113
+ arquivo.add(" ".padEnd(9, " "));
3114
+ arquivo.add((sequencia + 2).toString().padStart(6, "0"));
3115
+ arquivo.add("000000");
3116
+ arquivo.add("00");
3117
+ arquivo.add("000000000000000");
3118
+ arquivo.add("000000000000000000000000000000000000000000000000000000000000000000000");
3119
+ arquivo.add(" ".padEnd(125, " "));
3120
+ arquivo.addLine();
3121
+ arquivo.add("001");
3122
+ arquivo.add("9999");
3123
+ arquivo.add("9");
3124
+ arquivo.add(" ".padEnd(9, " "));
3125
+ arquivo.add("000001");
3126
+ arquivo.add((sequencia + 4).toString().padStart(6, "0"));
3127
+ arquivo.add("000000");
3128
+ arquivo.add(" ".padEnd(205, " "));
3129
+ arquivo.addLine();
3130
+ return {
3131
+ download: remessa2,
3132
+ arquivo: arquivo.getArquivo()
3133
+ };
3134
+ } catch (error) {
3135
+ console.log(error);
3136
+ return null;
3137
+ }
3138
+ }
3139
+
3140
+ // src/banks/banco-brasil/gerarRetorno.ts
3141
+ import { parse as parse4 } from "date-fns";
3142
+ function gerarRetorno5({ dados }) {
3143
+ try {
3144
+ const { arquivo } = dados;
3145
+ const documentos = [];
3146
+ for (let i = 0; i < arquivo.length; i++) {
3147
+ let linha = arquivo[i];
3148
+ const banco = linha.substring(0, 3);
3149
+ if (banco !== "001" /* BANCO_BRASIL */) {
3150
+ continue;
3151
+ }
3152
+ const ocorrencia = linha.substring(15, 17);
3153
+ if (ocorrencia === "06" || ocorrencia === "17" || ocorrencia === "03") {
3154
+ let segmento = linha.substring(13, 14);
3155
+ if (segmento === "T") {
3156
+ const motivo = linha.substring(213, 223).trim();
3157
+ const meu_numero = linha.substring(105, 130).trimEnd();
3158
+ let tipo_documento = "INDEFINIDO";
3159
+ let id_documento = meu_numero;
3160
+ if (meu_numero.includes("-")) {
3161
+ const [tipo, id] = meu_numero.split("-");
3162
+ tipo_documento = tipo;
3163
+ id_documento = id;
3164
+ }
3165
+ const especie = tipo_documento.length ? tipo_documento : "INDEFINIDO";
3166
+ linha = arquivo[++i];
3167
+ segmento = linha.substring(13, 14);
3168
+ if (segmento === "U") {
3169
+ let dataCredito;
3170
+ const dataCreditoString = linha.substring(145, 153);
3171
+ if (dataCreditoString && dataCreditoString !== "00000000") {
3172
+ dataCredito = parse4(dataCreditoString, "ddMMyyyy", /* @__PURE__ */ new Date());
3173
+ } else {
3174
+ const dataOcorrenciaString = linha.substring(137, 145);
3175
+ dataCredito = parse4(dataOcorrenciaString, "ddMMyyyy", /* @__PURE__ */ new Date());
3176
+ }
3177
+ const valorAbatimentoString = linha.substring(47, 62);
3178
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
3179
+ const valorDescontoString = linha.substring(32, 47);
3180
+ const valorDesconto = Number(valorDescontoString) / 100;
3181
+ const valorPagoString = linha.substring(77, 92);
3182
+ const valorPago = Number(valorPagoString) / 100;
3183
+ const valorJurosString = linha.substring(17, 32);
3184
+ const valorJuros = Number(valorJurosString) / 100;
3185
+ const valorMulta = 0;
3186
+ const descontos = valorAbatimento + valorDesconto;
3187
+ const valorTotal = valorPago - valorJuros + descontos;
3188
+ let rejeitado = false;
3189
+ let motivoRejeicao = "";
3190
+ if (ocorrencia === "03") {
3191
+ rejeitado = true;
3192
+ motivoRejeicao = retornaMotivoRejeicao4(motivo);
3193
+ }
3194
+ const documento = {
3195
+ id_documento,
3196
+ especie,
3197
+ valor: valorPago,
3198
+ valor_multa: valorMulta,
3199
+ valor_juros: valorJuros,
3200
+ valor_desconto: valorDesconto,
3201
+ valor_total: valorTotal,
3202
+ data: dataCredito,
3203
+ rejeitado,
3204
+ motivo: motivoRejeicao
3205
+ };
3206
+ documentos.push(documento);
3207
+ }
3208
+ }
3209
+ }
3210
+ }
3211
+ const documentoAgrupado = agruparRetorno(documentos);
3212
+ console.log(documentoAgrupado);
3213
+ return documentoAgrupado;
3214
+ } catch (error) {
3215
+ console.log(error);
3216
+ return null;
3217
+ }
3218
+ }
3219
+ function retornaMotivoRejeicao4(codigo) {
3220
+ switch (codigo) {
3221
+ case "01":
3222
+ return "C\xF3digo do Banco Inv\xE1lido";
3223
+ case "02":
3224
+ return "C\xF3digo do Registro Detalhe Inv\xE1lido";
3225
+ case "03":
3226
+ return "C\xF3digo do Segmento Inv\xE1lido";
3227
+ case "04":
3228
+ return "C\xF3digo de Movimento N\xE3o Permitido para Carteira";
3229
+ case "05":
3230
+ return "C\xF3digo de Movimento Inv\xE1lido";
3231
+ case "06":
3232
+ return "Tipo/N\xFAmero de Inscri\xE7\xE3o do Benefici\xE1rio Inv\xE1lidos";
3233
+ case "07":
3234
+ return "Ag\xEAncia/Conta/DV Inv\xE1lido";
3235
+ case "08":
3236
+ return "Nosso N\xFAmero Inv\xE1lido";
3237
+ case "09":
3238
+ return "Nosso N\xFAmero Duplicado";
3239
+ case "10":
3240
+ return "Carteira Inv\xE1lida";
3241
+ case "11":
3242
+ return "Forma de Cadastramento do T\xEDtulo Inv\xE1lido";
3243
+ case "12":
3244
+ return "Tipo de Documento Inv\xE1lido";
3245
+ case "13":
3246
+ return "Identifica\xE7\xE3o da Emiss\xE3o do Boleto de Pagamento Inv\xE1lida";
3247
+ case "14":
3248
+ return "Identifica\xE7\xE3o da Distribui\xE7\xE3o do Boleto de Pagamento Inv\xE1lida";
3249
+ case "15":
3250
+ return "Caracter\xEDsticas da Cobran\xE7a Incompat\xEDveis";
3251
+ case "16":
3252
+ return "Data de Vencimento Inv\xE1lida";
3253
+ case "17":
3254
+ return "Data de Vencimento Anterior a Data de Emiss\xE3o";
3255
+ case "18":
3256
+ return "Vencimento Fora do Prazo de Opera\xE7\xE3o";
3257
+ case "19":
3258
+ return "T\xEDtulo a Cargo de Bancos Correspondentes com Vencimento Inferior a XX Dias";
3259
+ case "20":
3260
+ return "Valor do T\xEDtulo Inv\xE1lido";
3261
+ case "21":
3262
+ return "Esp\xE9cie do T\xEDtulo Inv\xE1lida";
3263
+ case "22":
3264
+ return "Esp\xE9cie do T\xEDtulo N\xE3o Permitida para a Carteira";
3265
+ case "23":
3266
+ return "Aceite Inv\xE1lido";
3267
+ case "24":
3268
+ return "Data da Emiss\xE3o Inv\xE1lida";
3269
+ case "25":
3270
+ return "Data da Emiss\xE3o Posterior a Data de Entrada";
3271
+ case "26":
3272
+ return "C\xF3digo de Juros de Mora Inv\xE1lido";
3273
+ case "27":
3274
+ return "Valor/Taxa de Juros de Mora Inv\xE1lido";
3275
+ case "28":
3276
+ return "C\xF3digo do Desconto Inv\xE1lido";
3277
+ case "29":
3278
+ return "Valor do Desconto Maior ou Igual ao Valor do T\xEDtulo";
3279
+ case "30":
3280
+ return "Desconto a Conceder N\xE3o Confere";
3281
+ case "31":
3282
+ return "Concess\xE3o de Desconto - J\xE1 Existe Desconto Anterior";
3283
+ case "32":
3284
+ return "Valor do IOF Inv\xE1lido";
3285
+ case "33":
3286
+ return "Valor do Abatimento Inv\xE1lido";
3287
+ case "34":
3288
+ return "Valor do Abatimento Maior ou Igual ao Valor do T\xEDtulo";
3289
+ case "35":
3290
+ return "Valor a Conceder N\xE3o Confere";
3291
+ case "36":
3292
+ return "Concess\xE3o de Abatimento - J\xE1 Existe Abatimento Anterior";
3293
+ case "37":
3294
+ return "C\xF3digo para Protesto Inv\xE1lido";
3295
+ case "38":
3296
+ return "Prazo para Protesto Inv\xE1lido";
3297
+ case "39":
3298
+ return "Pedido de Protesto N\xE3o Permitido para o T\xEDtulo";
3299
+ case "40":
3300
+ return "T\xEDtulo com Ordem de Protesto Emitida";
3301
+ case "41":
3302
+ return "Pedido de Cancelamento/Susta\xE7\xE3o para T\xEDtulos sem Instru\xE7\xE3o de Protesto";
3303
+ case "42":
3304
+ return "C\xF3digo para Baixa/Devolu\xE7\xE3o Inv\xE1lido";
3305
+ case "43":
3306
+ return "Prazo para Baixa/Devolu\xE7\xE3o Inv\xE1lido";
3307
+ case "44":
3308
+ return "C\xF3digo da Moeda Inv\xE1lido";
3309
+ case "45":
3310
+ return "Nome do Pagador N\xE3o Informado";
3311
+ case "46":
3312
+ return "Tipo/N\xFAmero de Inscri\xE7\xE3o do Pagador Inv\xE1lidos";
3313
+ case "47":
3314
+ return "Endere\xE7o do Pagador N\xE3o Informado";
3315
+ case "48":
3316
+ return "CEP Inv\xE1lido";
3317
+ case "49":
3318
+ return "CEP Sem Pra\xE7a de Cobran\xE7a (N\xE3o Localizado)";
3319
+ case "50":
3320
+ return "CEP Referente a um Banco Correspondente";
3321
+ case "51":
3322
+ return "CEP incompat\xEDvel com a Unidade da Federa\xE7\xE3o";
3323
+ case "52":
3324
+ return "Unidade da Federa\xE7\xE3o Inv\xE1lida";
3325
+ case "53":
3326
+ return "Tipo/N\xFAmero de Inscri\xE7\xE3o do Sacador/Avalista Inv\xE1lidos";
3327
+ case "54":
3328
+ return "Sacador/Avalista N\xE3o Informado";
3329
+ case "55":
3330
+ return "Nosso n\xFAmero no Banco Correspondente N\xE3o Informado";
3331
+ case "56":
3332
+ return "C\xF3digo do Banco Correspondente N\xE3o Informado";
3333
+ case "57":
3334
+ return "C\xF3digo da Multa Inv\xE1lido";
3335
+ case "58":
3336
+ return "Data da Multa Inv\xE1lida";
3337
+ case "59":
3338
+ return "Valor/Percentual da Multa Inv\xE1lido";
3339
+ case "60":
3340
+ return "Movimento para T\xEDtulo N\xE3o Cadastrado";
3341
+ case "61":
3342
+ return "Altera\xE7\xE3o da Ag\xEAncia Cobradora/DV Inv\xE1lida";
3343
+ case "62":
3344
+ return "Tipo de Impress\xE3o Inv\xE1lido";
3345
+ case "63":
3346
+ return "Entrada para T\xEDtulo j\xE1 Cadastrado";
3347
+ case "64":
3348
+ return "N\xFAmero da Linha Inv\xE1lido";
3349
+ case "65":
3350
+ return "C\xF3digo do Banco para D\xE9bito Inv\xE1lido";
3351
+ case "66":
3352
+ return "Ag\xEAncia/Conta/DV para D\xE9bito Inv\xE1lido";
3353
+ case "67":
3354
+ return "Dados para D\xE9bito incompat\xEDvel com a Identifica\xE7\xE3o da Emiss\xE3o do Boleto de Pagamento";
3355
+ case "68":
3356
+ return "D\xE9bito Autom\xE1tico Agendado";
3357
+ case "69":
3358
+ return "D\xE9bito N\xE3o Agendado - Erro nos Dados da Remessa";
3359
+ case "70":
3360
+ return "D\xE9bito N\xE3o Agendado - Pagador N\xE3o Consta do Cadastro de Autorizante";
3361
+ case "71":
3362
+ return "D\xE9bito N\xE3o Agendado - Benefici\xE1rio N\xE3o Autorizado pelo Pagador";
3363
+ case "72":
3364
+ return "D\xE9bito N\xE3o Agendado - Benefici\xE1rio N\xE3o Participa da Modalidade D\xE9bito Autom\xE1tico";
3365
+ case "73":
3366
+ return "D\xE9bito N\xE3o Agendado - C\xF3digo de Moeda Diferente de Real (R$)";
3367
+ case "74":
3368
+ return "D\xE9bito N\xE3o Agendado - Data Vencimento Inv\xE1lida";
3369
+ case "75":
3370
+ return "D\xE9bito N\xE3o Agendado, Conforme seu Pedido, T\xEDtulo N\xE3o Registrado";
3371
+ case "76":
3372
+ return "D\xE9bito N\xE3o Agendado, Tipo/Num. Inscri\xE7\xE3o do Debitado, Inv\xE1lido";
3373
+ case "77":
3374
+ return "Transfer\xEAncia para Desconto N\xE3o Permitida para a Carteira do T\xEDtulo";
3375
+ case "78":
3376
+ return "Data Inferior ou Igual ao Vencimento para D\xE9bito Autom\xE1tico";
3377
+ case "79":
3378
+ return "Data Juros de Mora Inv\xE1lido";
3379
+ case "80":
3380
+ return "Data do Desconto Inv\xE1lida";
3381
+ case "81":
3382
+ return "Tentativas de D\xE9bito Esgotadas - Baixado";
3383
+ case "82":
3384
+ return "Tentativas de D\xE9bito Esgotadas - Pendente";
3385
+ case "83":
3386
+ return "Limite Excedido";
3387
+ case "84":
3388
+ return "N\xFAmero Autoriza\xE7\xE3o Inexistente";
3389
+ case "85":
3390
+ return "T\xEDtulo com Pagamento Vinculado";
3391
+ case "86":
3392
+ return "Seu N\xFAmero Inv\xE1lido";
3393
+ case "87":
3394
+ return "e-mail/SMS enviado";
3395
+ case "88":
3396
+ return "e-mail Lido";
3397
+ case "89":
3398
+ return "e-mail/SMS devolvido - endere\xE7o de e-mail ou n\xFAmero do celular incorreto";
3399
+ case "90":
3400
+ return "e-mail devolvido - caixa postal cheia";
3401
+ case "91":
3402
+ return "e-mail/n\xFAmero do celular do Pagador n\xE3o informado";
3403
+ case "92":
3404
+ return "Pagador optante por Boleto de Pagamento Eletr\xF4nico - e-mail n\xE3o enviado";
3405
+ case "93":
3406
+ return "C\xF3digo para emiss\xE3o de Boleto de Pagamento n\xE3o permite envio de e-mail";
3407
+ case "94":
3408
+ return "C\xF3digo da Carteira inv\xE1lido para envio e-mail.";
3409
+ case "95":
3410
+ return "Contrato n\xE3o permite o envio de e-mail";
3411
+ case "96":
3412
+ return "N\xFAmero de contrato inv\xE1lido";
3413
+ case "97":
3414
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o do prazo limite de recebimento (a data deve ser informada no campo 28.3.p)";
3415
+ case "98":
3416
+ return "Rejei\xE7\xE3o de dispensa de prazo limite de recebimento";
3417
+ case "99":
3418
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o do n\xFAmero do t\xEDtulo dado pelo Benefici\xE1rio";
3419
+ case "A1":
3420
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o do n\xFAmero controle do participante";
3421
+ case "A2":
3422
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o dos dados do Pagador";
3423
+ case "A3":
3424
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o dos dados do Sacador/avalista";
3425
+ case "A4":
3426
+ return "Pagador DDA";
3427
+ case "A5":
3428
+ return "Registro Rejeitado \u2013 T\xEDtulo j\xE1 Liquidado";
3429
+ case "A6":
3430
+ return "C\xF3digo do Convenente Inv\xE1lido ou Encerrado";
3431
+ case "A7":
3432
+ return "T\xEDtulo j\xE1 se encontra na situa\xE7\xE3o Pretendida";
3433
+ case "A8":
3434
+ return "Valor do Abatimento inv\xE1lido para cancelamento";
3435
+ case "A9":
3436
+ return "N\xE3o autoriza pagamento parcial";
3437
+ case "B1":
3438
+ return "Autoriza recebimento parcial";
3439
+ case "B2":
3440
+ return "Valor Nominal do T\xEDtulo Conflitante";
3441
+ case "B3":
3442
+ return "Tipo de Pagamento Inv\xE1lido";
3443
+ case "B4":
3444
+ return "Valor M\xE1ximo/Percentual Inv\xE1lido";
3445
+ case "B5":
3446
+ return "Valor M\xEDnimo/Percentual Inv\xE1lido";
3447
+ default:
3448
+ return "C\xF3digo de rejei\xE7\xE3o desconhecido";
3449
+ }
3450
+ }
3451
+
3452
+ // src/banks/banco-brasil/index.ts
3453
+ var bancoBrasil = {
3454
+ gerarDadosBoleto: gerarDadosBoleto5,
3455
+ gerarPDF: gerarPDF5,
3456
+ gerarRemessa: gerarRemessa5,
3457
+ gerarRetorno: gerarRetorno5
3458
+ };
3459
+
3460
+ // src/gerar.ts
3461
+ function gerar({ banco, dados }) {
3462
+ if (banco === "085" /* AILOS */) {
3463
+ return ailos.gerarDadosBoleto({ banco, dados });
3464
+ }
3465
+ if (banco === "005" /* BRADESCO */) {
3466
+ return bradesco.gerarDadosBoleto({ banco, dados });
3467
+ }
3468
+ if (banco === "748" /* SICREDI */) {
3469
+ return sicredi.gerarDadosBoleto({ banco, dados });
3470
+ }
3471
+ if (banco === "756" /* SICOOB */) {
3472
+ return sicoob.gerarDadosBoleto({ banco, dados });
3473
+ }
3474
+ if (banco === "001" /* BANCO_BRASIL */) {
3475
+ return bancoBrasil.gerarDadosBoleto({ banco, dados });
3476
+ }
3477
+ }
3478
+
3479
+ // src/banks/itau/gerarPDF.ts
3480
+ import BwipJs7 from "bwip-js";
3481
+ function gerarPDF6(_0) {
3482
+ return __async(this, arguments, function* ({ dados }) {
3483
+ try {
3484
+ const { dadosPDF } = dados;
3485
+ if (!dadosPDF.pagador.cnpjCpf) {
3486
+ throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
3487
+ }
3488
+ const codigoBarra2 = yield BwipJs7.toBuffer({
3489
+ bcid: "interleaved2of5",
3490
+ text: dadosPDF.boleto.codigoBarra,
3491
+ height: 20
3492
+ });
3493
+ dadosPDF.beneficiario.dadosBancario.agencia = dadosPDF.beneficiario.dadosBancario.agencia.padStart(4, "0");
3494
+ dadosPDF.boleto.linhaDigitavel = maskFormat_default.codigoBarra(dadosPDF.boleto.linhaDigitavel);
3495
+ dadosPDF.beneficiario.cnpjCpf = maskFormat_default.retornaCpfCnpjFormatado(
3496
+ dadosPDF.beneficiario.cnpjCpf
3497
+ );
3498
+ dadosPDF.beneficiario.endereco.cep = maskFormat_default.retornaCEPFormatado(
3499
+ dadosPDF.beneficiario.endereco.cep
3500
+ );
3501
+ dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
3502
+ dadosPDF.pagador.endereco.cep
3503
+ );
3504
+ dadosPDF.pagador.cnpjCpf = maskFormat_default.retornaCpfCnpjFormatado(dadosPDF.pagador.cnpjCpf);
3505
+ const valorDocumento = Number(dadosPDF.boleto.valorDocumento);
3506
+ dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
3507
+ dadosPDF.boleto.valorDocumento
3508
+ );
3509
+ const jurosMes = dadosPDF.beneficiario.dadosBancario.juros;
3510
+ const jurosDia = jurosMes / 100 / 30 * valorDocumento;
3511
+ if (jurosDia > 0) {
3512
+ dadosPDF.boleto.instrucoes = [`AP\xD3S O VENCIMENTO, COBRAR JUROS DE R$${maskFormat_default.numberToReal(jurosDia)} AO DIA`, ...dadosPDF.boleto.instrucoes];
3513
+ }
3514
+ const descontoVencimento = dadosPDF.beneficiario.dadosBancario.desconto || 0;
3515
+ if (descontoVencimento > 0) {
3516
+ dadosPDF.boleto.instrucoes = [`AT\xC9 O VENCIMENTO, CONCEDER DESCONTO DE ${descontoVencimento}%`, ...dadosPDF.boleto.instrucoes];
3517
+ }
3518
+ const multaAtraso = dadosPDF.beneficiario.dadosBancario.multa || 0;
3519
+ if (multaAtraso > 0) {
3520
+ dadosPDF.boleto.instrucoes = [`MULTA DE ${multaAtraso}%`, ...dadosPDF.boleto.instrucoes];
3521
+ }
3522
+ const protestoDias = dadosPDF.beneficiario.dadosBancario.protesto || 0;
3523
+ if (protestoDias > 0) {
3524
+ dadosPDF.boleto.instrucoes = [`PROTESTAR AP\xD3S ${protestoDias} DIAS CORRIDOS DO VENCIMENTO`, ...dadosPDF.boleto.instrucoes];
3525
+ }
3526
+ const content = compileHbs(getPathTemplates("itau-boleto.hbs"), __spreadProps(__spreadValues({}, dadosPDF), {
3527
+ boleto: __spreadProps(__spreadValues({}, dadosPDF.boleto), {
3528
+ codigoBarraImage: codigoBarra2.toString("base64"),
3529
+ nossoNumeroDigito: getDigito6(`${dadosPDF.beneficiario.dadosBancario.agencia}${dadosPDF.beneficiario.dadosBancario.conta}${dadosPDF.beneficiario.dadosBancario.codigoCarteira}${dadosPDF.boleto.nossoNumero}`)
3530
+ })
3531
+ }));
3532
+ const config = {
3533
+ displayHeaderFooter: false,
3534
+ path: "./boleto.pdf",
3535
+ format: "a4",
3536
+ printBackground: true
3537
+ };
3538
+ const response = yield api.post("/", { content, config });
3539
+ const buffer = Buffer.from(response.data.pdf);
3540
+ const pdfBase64 = yield decompress(buffer);
3541
+ return {
3542
+ erro: false,
3543
+ dados: pdfBase64
3544
+ };
3545
+ } catch (error) {
3546
+ console.log(error);
3547
+ return {
3548
+ erro: true,
3549
+ dados: "Falha ao gerar impress\xE3o do boleto"
3550
+ };
3551
+ }
3552
+ });
3553
+ }
3554
+ function getDigito6(texto) {
3555
+ let i = texto.length;
3556
+ let j = 1;
3557
+ let total = 0;
3558
+ let soma = 0;
3559
+ let digito = 0;
3560
+ while (i >= 1) {
3561
+ j = j === 1 ? 2 : 1;
3562
+ let valor = Number(copy(texto, i, i));
3563
+ total = valor * j;
3564
+ if (total >= 10) {
3565
+ valor = Number(copy(total, 1, 1)) + Number(copy(total, 2, 2));
3566
+ } else {
3567
+ valor = total;
3568
+ }
3569
+ soma += valor;
3570
+ i--;
3571
+ }
3572
+ const uni = Number(copy(soma, String(soma).length, String(soma).length));
3573
+ digito = 10 - uni;
3574
+ if (digito === 10)
3575
+ digito = 0;
3576
+ return String(digito);
3577
+ }
3578
+
3579
+ // src/banks/itau/index.ts
3580
+ var itau = {
3581
+ gerarPDF: gerarPDF6
3582
+ };
3583
+
3584
+ // src/pdf.ts
3585
+ function pdf({ banco, dados }) {
3586
+ if (banco === "085" /* AILOS */) {
3587
+ return ailos.gerarPDF({ banco, dados });
3588
+ }
3589
+ if (banco === "005" /* BRADESCO */) {
3590
+ return bradesco.gerarPDF({ banco, dados });
3591
+ }
3592
+ if (banco === "748" /* SICREDI */) {
3593
+ return sicredi.gerarPDF({ banco, dados });
3594
+ }
3595
+ if (banco === "756" /* SICOOB */) {
3596
+ return sicoob.gerarPDF({ banco, dados });
3597
+ }
3598
+ if (banco === "001" /* BANCO_BRASIL */) {
3599
+ return bancoBrasil.gerarPDF({ banco, dados });
3600
+ }
3601
+ if (banco === "341" /* ITAU */) {
3602
+ return itau.gerarPDF({ banco, dados });
3603
+ }
3604
+ }
3605
+
3606
+ // src/remessa.ts
3607
+ function remessa({ banco, dados }) {
3608
+ if (banco === "085" /* AILOS */) {
3609
+ return ailos.gerarRemessa({ banco, dados });
3610
+ }
3611
+ if (banco === "005" /* BRADESCO */) {
3612
+ return bradesco.gerarRemessa({ banco, dados });
3613
+ }
3614
+ if (banco === "748" /* SICREDI */) {
3615
+ return sicredi.gerarRemessa({ banco, dados });
3616
+ }
3617
+ if (banco === "756" /* SICOOB */) {
3618
+ return sicoob.gerarRemessa({ banco, dados });
3619
+ }
3620
+ if (banco === "001" /* BANCO_BRASIL */) {
3621
+ return bancoBrasil.gerarRemessa({ banco, dados });
3622
+ }
3623
+ }
3624
+
3625
+ // src/retorno.ts
3626
+ function retorno({ banco, dados }) {
3627
+ if (banco === "085" /* AILOS */) {
3628
+ return ailos.gerarRetorno({ banco, dados });
3629
+ }
3630
+ if (banco === "005" /* BRADESCO */) {
3631
+ return bradesco.gerarRetorno({ banco, dados });
3632
+ }
3633
+ if (banco === "748" /* SICREDI */) {
3634
+ return sicredi.gerarRetorno({ banco, dados });
3635
+ }
3636
+ if (banco === "001" /* BANCO_BRASIL */) {
3637
+ return bancoBrasil.gerarRetorno({ banco, dados });
3638
+ }
3639
+ if (banco === "756" /* SICOOB */) {
3640
+ return sicoob.gerarRetorno({ banco, dados });
3641
+ }
3642
+ }
3643
+
3644
+ // src/config/index.ts
3645
+ function defineConfig({ apiClient }) {
3646
+ if (apiClient) {
3647
+ const { authorization, url } = apiClient;
3648
+ if (url)
3649
+ api.defaults.baseURL = url;
3650
+ if (authorization)
3651
+ api.defaults.headers.common.Authorization = authorization;
3652
+ }
3653
+ }
3654
+
3655
+ // src/index.ts
3656
+ var src_default = {
3657
+ gerar,
3658
+ pdf,
3659
+ remessa,
3660
+ retorno,
3661
+ carne
3662
+ };
3663
+ export {
3664
+ Banco,
3665
+ src_default as default,
3666
+ defineConfig
3667
+ };