@plasoft/boletos 1.0.66 → 1.0.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.js CHANGED
@@ -73,14 +73,199 @@ __export(src_exports, {
73
73
  });
74
74
  module.exports = __toCommonJS(src_exports);
75
75
 
76
- // src/utils/pafLeft.ts
77
- function padLeft(numero, tamanho) {
78
- numero = String(numero);
79
- if (numero.length < tamanho) {
80
- numero = `0${numero}`;
81
- return padLeft(numero, tamanho);
76
+ // src/utils/compileHbs.ts
77
+ var import_handlebars = __toESM(require("handlebars"));
78
+ var import_fs = __toESM(require("fs"));
79
+ function compileHbs(templatePath, data) {
80
+ const html = import_fs.default.readFileSync(templatePath, "utf-8");
81
+ const content = import_handlebars.default.compile(html)(data);
82
+ return content;
83
+ }
84
+
85
+ // src/utils/getPathTemplates.ts
86
+ var import_path = __toESM(require("path"));
87
+ function getPathTemplates(template) {
88
+ if (process.env.NODE_ENV === "dev") {
89
+ return import_path.default.resolve(process.cwd(), "views", template);
90
+ }
91
+ return import_path.default.resolve(__dirname, template);
92
+ }
93
+
94
+ // src/services/api.ts
95
+ var import_config = require("dotenv/config");
96
+ var import_axios = __toESM(require("axios"));
97
+ var api = import_axios.default.create({
98
+ baseURL: process.env.API_URL || "https://23136fv876.execute-api.sa-east-1.amazonaws.com/dev/create-report"
99
+ });
100
+
101
+ // src/utils/zip.ts
102
+ var zlib = __toESM(require("zlib"));
103
+ function decompress(input) {
104
+ return new Promise((resolve, reject) => {
105
+ zlib.gunzip(input, (error, result) => {
106
+ if (error) {
107
+ return reject(error);
108
+ }
109
+ resolve(result.toString());
110
+ });
111
+ });
112
+ }
113
+
114
+ // src/banks/sicredi/gerarPDFCarne.ts
115
+ var import_bwip_js = __toESM(require("bwip-js"));
116
+
117
+ // src/utils/maskFormat.ts
118
+ var import_string_mask = __toESM(require("string-mask"));
119
+ function retornaCpfCnpjFormatado(cpfCnpj) {
120
+ if ((cpfCnpj == null ? void 0 : cpfCnpj.length) <= 11) {
121
+ const formatter2 = new import_string_mask.default("000.000.000-00");
122
+ return formatter2.apply(cpfCnpj);
123
+ }
124
+ const formatter = new import_string_mask.default("00.000.000/0000-00");
125
+ return formatter.apply(cpfCnpj);
126
+ }
127
+ function retornaCEPFormatado(cep) {
128
+ const formatter = new import_string_mask.default("00000-000");
129
+ return formatter.apply(cep);
130
+ }
131
+ function numberToReal(numero) {
132
+ numero = typeof numero === "string" ? parseFloat(numero) : numero;
133
+ numero = numero.toFixed(2).split(".");
134
+ numero[0] = numero[0].split(/(?=(?:...)*$)/).join(".");
135
+ return numero.join(",");
136
+ }
137
+ function codigoBarra(codigo) {
138
+ const formatter = new import_string_mask.default("00000.00000 00000.000000 00000.000000 0 000000000000000");
139
+ return formatter.apply(codigo);
140
+ }
141
+ var maskFormat_default = {
142
+ numberToReal,
143
+ retornaCEPFormatado,
144
+ retornaCpfCnpjFormatado,
145
+ codigoBarra
146
+ };
147
+
148
+ // src/banks/sicredi/gerarPDFCarne.ts
149
+ var import_qrcode = __toESM(require("qrcode"));
150
+ function gerarPDFCarne(_0) {
151
+ return __async(this, arguments, function* ({ dados }) {
152
+ try {
153
+ const { generatePDF, dadosPDF } = dados;
154
+ const carnes = [];
155
+ if (!dadosPDF.pagador.cpfcnpj) {
156
+ throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
157
+ }
158
+ for (const boleto of dados.dadosPDF.boleto) {
159
+ const codigoBarra2 = yield import_bwip_js.default.toBuffer({
160
+ bcid: "interleaved2of5",
161
+ text: boleto.codigoBarra,
162
+ height: 20
163
+ });
164
+ const qrCode = yield import_qrcode.default.toDataURL(boleto.pixCopiaCola, {
165
+ errorCorrectionLevel: "H",
166
+ type: "image/png",
167
+ margin: 1,
168
+ scale: 6
169
+ });
170
+ boleto.qrCodeImage = qrCode;
171
+ dadosPDF.beneficiario.dadosBancario.agencia = dadosPDF.beneficiario.dadosBancario.agencia.padStart(4, "0");
172
+ dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
173
+ dadosPDF.beneficiario.cnpj
174
+ );
175
+ dadosPDF.beneficiario.endereco.cep = maskFormat_default.retornaCEPFormatado(
176
+ dadosPDF.beneficiario.endereco.cep
177
+ );
178
+ dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
179
+ dadosPDF.pagador.endereco.cep
180
+ );
181
+ dadosPDF.pagador.cpfcnpj = maskFormat_default.retornaCpfCnpjFormatado(dadosPDF.pagador.cpfcnpj);
182
+ boleto.linhaDigitavel = maskFormat_default.codigoBarra(boleto.linhaDigitavel);
183
+ boleto.codigoBarraImage = codigoBarra2.toString("base64");
184
+ boleto.valorAcrescimo = maskFormat_default.numberToReal(
185
+ boleto.valorAcrescimo
186
+ );
187
+ boleto.valorCobrado = maskFormat_default.numberToReal(
188
+ boleto.valorCobrado
189
+ );
190
+ boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
191
+ boleto.valorDescontoAbatimento
192
+ );
193
+ const valorDocumento = Number(boleto.valorDocumento);
194
+ boleto.valorDocumento = maskFormat_default.numberToReal(
195
+ boleto.valorDocumento
196
+ );
197
+ boleto.valorMulta = maskFormat_default.numberToReal(boleto.valorMulta);
198
+ boleto.valorOutrasDeducoes = maskFormat_default.numberToReal(
199
+ boleto.valorOutrasDeducoes
200
+ );
201
+ const jurosMes = dadosPDF.beneficiario.dadosBancario.juros;
202
+ const jurosDia = jurosMes / 100 / 30 * valorDocumento;
203
+ if (jurosDia > 0) {
204
+ boleto.instrucao1 = `COBRAR JUROS DE R$${maskFormat_default.numberToReal(jurosDia)} AO DIA, AP\xD3S O VENCIMENTO`;
205
+ }
206
+ const descontoVencimento = boleto.desconto > 0 ? boleto.desconto : dadosPDF.beneficiario.dadosBancario.desconto > 0 ? dadosPDF.beneficiario.dadosBancario.desconto : 0;
207
+ if (descontoVencimento > 0) {
208
+ boleto.instrucao2 = `AT\xC9 O VENCIMENTO, CONCEDER DESCONTO DE ${descontoVencimento}%`;
209
+ }
210
+ const multaAtraso = dadosPDF.beneficiario.dadosBancario.multa || 0;
211
+ if (multaAtraso > 0) {
212
+ boleto.instrucao3 = `MULTA DE ${multaAtraso}%`;
213
+ }
214
+ const protestoDias = dadosPDF.beneficiario.dadosBancario.protesto || 0;
215
+ if (protestoDias > 0) {
216
+ boleto.instrucao4 = `PROTESTAR AP\xD3S ${protestoDias} DIAS CORRIDOS DO VENCIMENTO`;
217
+ }
218
+ dadosPDF.pagador.isCnpj = dadosPDF.pagador.cpfcnpj.length > 14;
219
+ carnes.push({ boleto, pagador: dadosPDF.pagador, beneficiario: dadosPDF.beneficiario });
220
+ }
221
+ const content = compileHbs(getPathTemplates("sicredi-carne.hbs"), { boletos: carnes });
222
+ const config = {
223
+ displayHeaderFooter: false,
224
+ path: "./boleto.pdf",
225
+ format: "a4",
226
+ printBackground: true,
227
+ preferCSSPageSize: true
228
+ };
229
+ let pdfBase64 = null;
230
+ if (generatePDF) {
231
+ pdfBase64 = yield generatePDF(content, config);
232
+ } else {
233
+ if (!api.defaults.baseURL) {
234
+ throw new Error("BaseURL api not found");
235
+ }
236
+ const response = yield api.post("/", { content, config });
237
+ const buffer = Buffer.from(response.data.pdf);
238
+ pdfBase64 = yield decompress(buffer);
239
+ }
240
+ return {
241
+ erro: false,
242
+ dados: pdfBase64
243
+ };
244
+ } catch (error) {
245
+ console.log(error);
246
+ if (error instanceof Error) {
247
+ return {
248
+ erro: true,
249
+ dados: error.message
250
+ };
251
+ }
252
+ return {
253
+ erro: true,
254
+ dados: "Falha ao gerar impress\xE3o do boleto"
255
+ };
256
+ }
257
+ });
258
+ }
259
+
260
+ // src/utils/getFatorVencimento.ts
261
+ var import_date_fns = require("date-fns");
262
+ function getFatorVencimento(vencimento) {
263
+ vencimento = new Date(vencimento);
264
+ if (vencimento >= new Date(2025, 1, 22)) {
265
+ return (0, import_date_fns.differenceInDays)(new Date(vencimento), new Date(2022, 4, 29)).toString();
266
+ } else {
267
+ return (0, import_date_fns.differenceInDays)(new Date(vencimento), new Date(1997, 9, 7)).toString();
82
268
  }
83
- return numero;
84
269
  }
85
270
 
86
271
  // src/utils/copy.ts
@@ -100,30 +285,24 @@ function copy(texto, startPosition, endPosition) {
100
285
  return retorno2;
101
286
  }
102
287
 
103
- // src/utils/getFatorVencimento.ts
104
- var import_date_fns = require("date-fns");
105
- function getFatorVencimento(vencimento) {
106
- vencimento = new Date(vencimento);
107
- if (vencimento >= new Date(2025, 1, 22)) {
108
- return (0, import_date_fns.differenceInDays)(new Date(vencimento), new Date(2022, 4, 29)).toString();
109
- } else {
110
- return (0, import_date_fns.differenceInDays)(new Date(vencimento), new Date(1997, 9, 7)).toString();
111
- }
112
- }
113
-
114
- // src/banks/ailos/gerarDadosBoleto.ts
288
+ // src/banks/sicredi/gerarDadosBoleto.ts
115
289
  function gerarDadosBoleto({ dados }) {
116
290
  try {
117
291
  const { bancario, parcela } = dados;
118
292
  parcela.valor = Number(parcela.valor);
119
293
  const fatorVencimento = getFatorVencimento(parcela.vencimento);
120
294
  const valor = getValor(parcela.valor);
121
- const convenio = padLeft(bancario.convenio, 6);
122
- const numeroDocumento = padLeft(`${parcela.id_boleto}`, 9);
123
- const nossoNumero = padLeft(bancario.numero + bancario.numero_dv, 8) + numeroDocumento;
124
- const campoLivre = convenio + nossoNumero + padLeft(bancario.carteira, 2);
125
- const digitoGeral = getDigitoGeral(`0859${fatorVencimento}${valor}${campoLivre}`);
126
- const codigoBarra2 = `0859${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
295
+ const nossoNumero = getNossoNumero(
296
+ parcela.numeroUnico,
297
+ bancario.agencia,
298
+ bancario.posto,
299
+ bancario.codigoCedente
300
+ );
301
+ let campoLivre = bancario.tipoCobranca + bancario.tipoCarteira + nossoNumero + bancario.agencia.padStart(4, "0") + bancario.posto.padStart(2, "0") + bancario.codigoCedente.padStart(5, "0") + 10;
302
+ const digitoCampoLivre = getDigitoCampoLivre(campoLivre);
303
+ campoLivre = campoLivre + digitoCampoLivre;
304
+ const digitoGeral = getDigitoGeral(`7489${fatorVencimento}${valor}${campoLivre}`);
305
+ const codigoBarra2 = `7489${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
127
306
  const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
128
307
  const campo2 = copy(codigoBarra2, 25, 34);
129
308
  const campo3 = copy(codigoBarra2, 35, 44);
@@ -132,17 +311,16 @@ function gerarDadosBoleto({ dados }) {
132
311
  const digito1 = getDigito(campo1);
133
312
  const digito2 = getDigito(campo2);
134
313
  const digito3 = getDigito(campo3);
135
- const linhaDigitavel = campo1 + digito1 + campo2 + digito2 + campo3 + digito3 + campo4 + campo5;
314
+ const linhaDigitavel = campo1 + digito1 + campo2 + digito2 + campo3 + digito3 + campo4 + /*digito4*/
315
+ +campo5;
136
316
  const dadosBoleto = {
137
317
  linhaDigitavel,
138
318
  fatorVencimento,
139
319
  valor,
140
- convenio,
141
320
  nossoNumero,
142
321
  campoLivre,
143
322
  digitoGeral,
144
- codigoBarra: codigoBarra2,
145
- numeroDocumento
323
+ codigoBarra: codigoBarra2
146
324
  };
147
325
  return dadosBoleto;
148
326
  } catch (error) {
@@ -150,9 +328,47 @@ function gerarDadosBoleto({ dados }) {
150
328
  return null;
151
329
  }
152
330
  }
331
+ function getNossoNumero(id, agencia, posto, codigoCedente) {
332
+ let i = 19;
333
+ let j = 1;
334
+ let soma = 0;
335
+ let digito = 0;
336
+ const texto = agencia.padStart(4, "0") + posto.padStart(2, "0") + codigoCedente.padStart(5, "0") + id.padStart(8, "0");
337
+ while (i >= 1) {
338
+ j++;
339
+ if (j === 10)
340
+ j = 2;
341
+ const valor = Number(copy(texto, i, i));
342
+ soma += j * valor;
343
+ i--;
344
+ }
345
+ const restoDivisao = soma % 11;
346
+ digito = 11 - restoDivisao;
347
+ if (restoDivisao === 0 || restoDivisao === 1)
348
+ digito = 0;
349
+ return id.padStart(8, "0") + digito.toString();
350
+ }
153
351
  function getValor(valor) {
154
352
  const valorFormatado = valor.toFixed(2).replace(/\D/g, "");
155
- return padLeft(valorFormatado, 10);
353
+ return valorFormatado.padStart(10, "0");
354
+ }
355
+ function getDigitoCampoLivre(texto) {
356
+ let i = 24;
357
+ let j = 1;
358
+ let soma = 0;
359
+ let digito = 0;
360
+ while (i >= 1) {
361
+ j++;
362
+ if (j === 10)
363
+ j = 2;
364
+ let valor = Number(copy(texto, i, i));
365
+ soma += valor * j;
366
+ i--;
367
+ }
368
+ const restoDivisao = soma % 11;
369
+ if (restoDivisao > 1)
370
+ digito = 11 - restoDivisao;
371
+ return String(digito);
156
372
  }
157
373
  function getDigitoGeral(texto) {
158
374
  let i = 43;
@@ -169,7 +385,7 @@ function getDigitoGeral(texto) {
169
385
  }
170
386
  const restoDivisao = soma % 11;
171
387
  digito = 11 - restoDivisao;
172
- if (digito === 0 || digito === 1 || digito > 9)
388
+ if (digito <= 1 || digito >= 10)
173
389
  digito = 1;
174
390
  return String(digito);
175
391
  }
@@ -198,79 +414,8 @@ function getDigito(texto) {
198
414
  return String(digito);
199
415
  }
200
416
 
201
- // src/banks/ailos/gerarPDF.ts
202
- var import_bwip_js = __toESM(require("bwip-js"));
203
-
204
- // src/utils/maskFormat.ts
205
- var import_string_mask = __toESM(require("string-mask"));
206
- function retornaCpfCnpjFormatado(cpfCnpj) {
207
- if ((cpfCnpj == null ? void 0 : cpfCnpj.length) <= 11) {
208
- const formatter2 = new import_string_mask.default("000.000.000-00");
209
- return formatter2.apply(cpfCnpj);
210
- }
211
- const formatter = new import_string_mask.default("00.000.000/0000-00");
212
- return formatter.apply(cpfCnpj);
213
- }
214
- function retornaCEPFormatado(cep) {
215
- const formatter = new import_string_mask.default("00000-000");
216
- return formatter.apply(cep);
217
- }
218
- function numberToReal(numero) {
219
- numero = typeof numero === "string" ? parseFloat(numero) : numero;
220
- numero = numero.toFixed(2).split(".");
221
- numero[0] = numero[0].split(/(?=(?:...)*$)/).join(".");
222
- return numero.join(",");
223
- }
224
- function codigoBarra(codigo) {
225
- const formatter = new import_string_mask.default("00000.00000 00000.000000 00000.000000 0 000000000000000");
226
- return formatter.apply(codigo);
227
- }
228
- var maskFormat_default = {
229
- numberToReal,
230
- retornaCEPFormatado,
231
- retornaCpfCnpjFormatado,
232
- codigoBarra
233
- };
234
-
235
- // src/utils/compileHbs.ts
236
- var import_handlebars = __toESM(require("handlebars"));
237
- var import_fs = __toESM(require("fs"));
238
- function compileHbs(templatePath, data) {
239
- const html = import_fs.default.readFileSync(templatePath, "utf-8");
240
- const content = import_handlebars.default.compile(html)(data);
241
- return content;
242
- }
243
-
244
- // src/utils/getPathTemplates.ts
245
- var import_path = __toESM(require("path"));
246
- function getPathTemplates(template) {
247
- if (process.env.NODE_ENV === "dev") {
248
- return import_path.default.resolve(process.cwd(), "views", template);
249
- }
250
- return import_path.default.resolve(__dirname, template);
251
- }
252
-
253
- // src/services/api.ts
254
- var import_config = require("dotenv/config");
255
- var import_axios = __toESM(require("axios"));
256
- var api = import_axios.default.create({
257
- baseURL: process.env.API_URL || "https://23136fv876.execute-api.sa-east-1.amazonaws.com/dev/create-report"
258
- });
259
-
260
- // src/utils/zip.ts
261
- var zlib = __toESM(require("zlib"));
262
- function decompress(input) {
263
- return new Promise((resolve, reject) => {
264
- zlib.gunzip(input, (error, result) => {
265
- if (error) {
266
- return reject(error);
267
- }
268
- resolve(result.toString());
269
- });
270
- });
271
- }
272
-
273
- // src/banks/ailos/gerarPDF.ts
417
+ // src/banks/sicredi/gerarPDF.ts
418
+ var import_bwip_js2 = __toESM(require("bwip-js"));
274
419
  function gerarPDF(_0) {
275
420
  return __async(this, arguments, function* ({ dados }) {
276
421
  try {
@@ -278,13 +423,12 @@ function gerarPDF(_0) {
278
423
  if (!dadosPDF.pagador.cpfcnpj) {
279
424
  throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
280
425
  }
281
- const codigoBarra2 = yield import_bwip_js.default.toBuffer({
426
+ const codigoBarra2 = yield import_bwip_js2.default.toBuffer({
282
427
  bcid: "interleaved2of5",
283
428
  text: dadosPDF.boleto.codigoBarra,
284
429
  height: 20
285
430
  });
286
431
  dadosPDF.beneficiario.dadosBancario.agencia = dadosPDF.beneficiario.dadosBancario.agencia.padStart(4, "0");
287
- dadosPDF.beneficiario.dadosBancario.conta = dadosPDF.beneficiario.dadosBancario.conta.padStart(7, "0");
288
432
  dadosPDF.boleto.linhaDigitavel = maskFormat_default.codigoBarra(dadosPDF.boleto.linhaDigitavel);
289
433
  dadosPDF.boleto.codigoBarraImage = codigoBarra2.toString("base64");
290
434
  dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
@@ -336,7 +480,7 @@ function gerarPDF(_0) {
336
480
  }
337
481
  dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
338
482
  dadosPDF.pagador.isCnpj = dadosPDF.pagador.cpfcnpj.length > 14;
339
- const content = compileHbs(getPathTemplates("ailos-boleto.hbs"), dadosPDF);
483
+ const content = compileHbs(getPathTemplates("sicredi-boleto.hbs"), dadosPDF);
340
484
  const config = {
341
485
  displayHeaderFooter: false,
342
486
  path: "./boleto.pdf",
@@ -374,9 +518,6 @@ function gerarPDF(_0) {
374
518
  });
375
519
  }
376
520
 
377
- // src/banks/ailos/gerarRemessa.ts
378
- var import_date_fns2 = require("date-fns");
379
-
380
521
  // src/lib/Arquivo.ts
381
522
  var Arquivo = class {
382
523
  constructor() {
@@ -415,238 +556,119 @@ function removerCaracterEspecial(texto) {
415
556
  return textoFormatado;
416
557
  }
417
558
 
418
- // src/banks/ailos/gerarRemessa.ts
559
+ // src/banks/sicredi/gerarRemessa.ts
560
+ var import_date_fns2 = require("date-fns");
419
561
  function gerarRemessa({ dados }) {
420
562
  try {
421
563
  const { dadosBancario, beneficiario, boletos } = dados.remessa;
422
564
  const arquivo = new Arquivo();
423
- const dataAtual = /* @__PURE__ */ new Date();
424
- const data = (0, import_date_fns2.format)(dataAtual, "ddMMyyyy");
425
- const hora = (0, import_date_fns2.format)(dataAtual, "HHmmss");
426
- const convenio = dadosBancario.convenio.padStart(7, "0");
427
- const numero = dadosBancario.conta.padStart(7, "0") + dadosBancario.contaDigito;
428
- const remessa2 = `REM${convenio}-${numero}-${data}.REM`;
429
- arquivo.add("085");
430
- arquivo.add("0000");
431
- arquivo.add("0");
432
- arquivo.add(" ");
433
- arquivo.add("2");
434
- arquivo.add(beneficiario.cnpj);
435
- arquivo.add(dadosBancario.convenio.padEnd(20, " "));
436
- arquivo.add(dadosBancario.agencia.padStart(5, "0"));
437
- arquivo.add(dadosBancario.agenciaDigito);
438
- arquivo.add(dadosBancario.conta.padStart(12, "0"));
439
- arquivo.add(dadosBancario.contaDigito);
440
- arquivo.add(" ");
441
- arquivo.add(removerCaracterEspecial(beneficiario.nome).substring(0, 30).padEnd(30, " "));
442
- arquivo.add("AILOS".padEnd(30, " "));
443
- arquivo.add(" ");
444
- arquivo.add("1");
445
- arquivo.add(data);
446
- arquivo.add(hora);
447
- arquivo.add(dadosBancario.numeroRemessa.padStart(6, "0"));
448
- arquivo.add("087");
449
- arquivo.add("00000");
450
- arquivo.add(" ".padEnd(20, " "));
451
- arquivo.add(" ".padEnd(20, " "));
452
- arquivo.add(" ".padEnd(29, " "));
453
- arquivo.addLine();
454
- arquivo.add("085");
455
- arquivo.add("0001");
456
- arquivo.add("1");
457
- arquivo.add("R");
565
+ const data = /* @__PURE__ */ new Date();
566
+ let protestar = "00";
567
+ let negativar = "0000";
568
+ switch (dadosBancario.tipo_protesto) {
569
+ case "Nenhum":
570
+ protestar = "00";
571
+ negativar = "0000";
572
+ break;
573
+ case "Protestar":
574
+ protestar = "06";
575
+ negativar = "0000";
576
+ break;
577
+ case "Negativar":
578
+ protestar = "00";
579
+ negativar = "06" + String(dadosBancario.diasProtesto).padStart(2, "0");
580
+ break;
581
+ default:
582
+ protestar = "00";
583
+ negativar = "0000";
584
+ break;
585
+ }
586
+ arquivo.add("01REMESSA");
458
587
  arquivo.add("01");
459
- arquivo.add(" ");
460
- arquivo.add("045");
461
- arquivo.add(" ");
462
- arquivo.add("2");
463
- arquivo.add(beneficiario.cnpj.padStart(15, "0"));
464
- arquivo.add(dadosBancario.convenio.padEnd(20, " "));
465
- arquivo.add(dadosBancario.agencia.padStart(5, "0"));
466
- arquivo.add(dadosBancario.agenciaDigito);
467
- arquivo.add(dadosBancario.conta.padStart(12, "0"));
468
- arquivo.add(dadosBancario.contaDigito);
469
- arquivo.add(" ");
470
- arquivo.add(removerCaracterEspecial(beneficiario.nome).substring(0, 30).padEnd(30, " "));
471
- arquivo.add(" ".padEnd(40, " "));
472
- arquivo.add(" ".padEnd(40, " "));
473
- arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
474
- arquivo.add(data);
475
- arquivo.add("00000000");
476
- arquivo.add(" ".padEnd(33, " "));
588
+ arquivo.add("COBRANCA".padEnd(15, " "));
589
+ arquivo.add(dadosBancario.codigo_cedente);
590
+ arquivo.add(beneficiario.cnpj);
591
+ arquivo.add(" ".padEnd(31, " "));
592
+ arquivo.add("748");
593
+ arquivo.add("SICREDI".padEnd(15, " "));
594
+ arquivo.add((0, import_date_fns2.format)(data, "yyyyMMdd"));
595
+ arquivo.add(" ".padEnd(8, " "));
596
+ arquivo.add(dadosBancario.numeroRemessa.padStart(7, "0"));
597
+ arquivo.add(" ".padEnd(273, " "));
598
+ arquivo.add("2.00");
599
+ arquivo.add("000001");
477
600
  arquivo.addLine();
478
- let sequencia = 0;
479
- let quantidadeRegistro = 0;
601
+ let sequencia = 2;
480
602
  let total = 0;
481
603
  for (const boleto of boletos) {
482
604
  const { pagador } = boleto;
483
- const vencimento = (0, import_date_fns2.format)(new Date(boleto.vencimento), "ddMMyyyy");
484
605
  total += Number(boleto.valor);
485
- const codigoJuro = dadosBancario.jurosMes > 0 ? "2" : "3";
486
- const juros = dadosBancario.jurosMes > 0 ? dadosBancario.jurosMes.toFixed(2) : "000000000000000";
487
- const jurosVencimento = (0, import_date_fns2.format)(
488
- (0, import_date_fns2.addDays)(new Date(boleto.vencimento), 1),
489
- "ddMMyyyy"
490
- );
491
- const codigoDesconto = dadosBancario.descontoPagamento > 0 ? "2" : "0";
492
- const desconto = boleto.desconto > 0 ? boleto.desconto.toFixed(2) : dadosBancario.descontoPagamento > 0 ? dadosBancario.descontoPagamento.toFixed(2) : "000000000000000";
493
- let diasProtesto = "00";
494
- let protesto = "3";
495
- switch (dadosBancario.tipo_protesto) {
496
- case "Nenhum":
497
- protesto = "3";
498
- diasProtesto = "00";
499
- break;
500
- case "Protestar":
501
- protesto = "1";
502
- diasProtesto = dadosBancario.diasProtesto.toString().padStart(2, "0");
503
- break;
504
- case "Negativar":
505
- protesto = "2";
506
- diasProtesto = dadosBancario.diasProtesto.toString().padStart(2, "0");
507
- break;
508
- default:
509
- protesto = "3";
510
- diasProtesto = "00";
511
- break;
606
+ let tipoInscricao = pagador.pessoa === "F" ? "1" : "2";
607
+ let desconto = "0000000000000";
608
+ let dataDesconto = "000000";
609
+ if (boleto.desconto) {
610
+ desconto = boleto.desconto.toFixed(2).replace(".", "").padStart(13, "0");
611
+ dataDesconto = (0, import_date_fns2.format)(new Date(boleto.vencimento), "ddMMyy");
512
612
  }
513
- arquivo.add("085");
514
- arquivo.add("0001");
515
- arquivo.add("3");
516
- arquivo.add((++sequencia).toString().padStart(5, "0"));
517
- arquivo.add("P");
518
- arquivo.add(" ");
519
- arquivo.add("01");
520
- arquivo.add(dadosBancario.agencia.padStart(5, "0"));
521
- arquivo.add(dadosBancario.agenciaDigito);
522
- arquivo.add(dadosBancario.conta.padStart(12, "0"));
523
- arquivo.add(dadosBancario.contaDigito);
524
- arquivo.add(" ");
525
- arquivo.add(boleto.nossoNumero.padEnd(20, " "));
526
- arquivo.add("1");
527
- arquivo.add("1");
613
+ if (!boleto.desconto && dadosBancario.descontoPagamento) {
614
+ desconto = dadosBancario.descontoPagamento.toFixed(2).replace(".", "").padStart(13, "0");
615
+ dataDesconto = (0, import_date_fns2.format)(new Date(boleto.vencimento), "ddMMyy");
616
+ }
617
+ let valorJurosDias = Number(boleto.valor) * Number(dadosBancario.jurosMes) / 100 / 30;
618
+ let multaAtraso = String(dadosBancario.multaAtraso * 100);
528
619
  arquivo.add("1");
529
- arquivo.add("2");
530
- arquivo.add("2");
531
- arquivo.add(`${boleto.numeroDocumento}/${boleto.parcela}`.padEnd(15, " "));
532
- arquivo.add(vencimento);
533
- arquivo.add(
534
- Number(boleto.valor).toFixed(2).replace(".", "").padStart(15, "0")
535
- );
536
- arquivo.add(dadosBancario.agencia.padStart(5, "0"));
537
- arquivo.add(dadosBancario.agenciaDigito);
538
- arquivo.add("02");
539
- arquivo.add(boleto.aceite);
540
- arquivo.add(data);
541
- arquivo.add(codigoJuro);
542
- arquivo.add(jurosVencimento);
543
- arquivo.add(juros.replace(".", "").padStart(15, "0"));
544
- arquivo.add(codigoDesconto);
545
- arquivo.add(vencimento);
546
- arquivo.add(desconto.replace(".", "").padStart(15, "0"));
547
- arquivo.add("000000000000000");
548
- arquivo.add("000000000000000");
549
- arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
550
- arquivo.add(protesto);
551
- arquivo.add(diasProtesto);
552
- arquivo.add("2");
553
- arquivo.add(" ");
554
- arquivo.add("09");
555
- arquivo.add("0000000000");
620
+ arquivo.add("AAA");
621
+ arquivo.add(" ".padEnd(12, " "));
622
+ arquivo.add("AAA");
623
+ arquivo.add(" ".padEnd(28, " "));
624
+ arquivo.add(boleto.nossoNumero.padEnd(9, " "));
625
+ arquivo.add(" ".padEnd(6, " "));
626
+ arquivo.add((0, import_date_fns2.format)(new Date(boleto.emissao), "yyyyMMdd"));
556
627
  arquivo.add(" ");
557
- arquivo.addLine();
558
- let tipoInscricao = "1";
559
- if (pagador.pessoa === "F") {
560
- tipoInscricao = "1";
561
- } else {
562
- tipoInscricao = "2";
563
- }
564
- pagador.endereco.logradouro = `${removerCaracterEspecial(pagador.endereco.logradouro).substring(0, 32).padEnd(32, " ")}${pagador.endereco.numero.padEnd(8, " ")}`;
565
- arquivo.add("085");
566
- arquivo.add("0001");
567
- arquivo.add("3");
568
- arquivo.add((++sequencia).toString().padStart(5, "0"));
569
- arquivo.add("Q");
628
+ arquivo.add("N");
570
629
  arquivo.add(" ");
630
+ arquivo.add("B");
631
+ arquivo.add("0000");
632
+ arquivo.add(" ".padEnd(4, " "));
633
+ arquivo.add("0".padEnd(10, "0"));
634
+ arquivo.add(multaAtraso.padStart(4, "0"));
635
+ arquivo.add(" ".padEnd(12, " "));
571
636
  arquivo.add("01");
637
+ arquivo.add(boleto.identificacaoTitulo.padEnd(10, " "));
638
+ arquivo.add((0, import_date_fns2.format)(new Date(boleto.vencimento), "ddMMyy"));
639
+ arquivo.add(Number(boleto.valor).toFixed(2).replace(".", "").padStart(13, "0"));
640
+ arquivo.add(" ".padEnd(9, " "));
641
+ arquivo.add("A");
642
+ arquivo.add(boleto.aceite);
643
+ arquivo.add((0, import_date_fns2.format)(new Date(boleto.emissao), "ddMMyy"));
644
+ arquivo.add(protestar);
645
+ arquivo.add(String(dadosBancario.diasProtesto).padStart(2, "0"));
646
+ arquivo.add(Number(valorJurosDias).toFixed(2).replace(".", "").padStart(13, "0"));
647
+ arquivo.add(dataDesconto);
648
+ arquivo.add(desconto);
649
+ arquivo.add(negativar);
650
+ arquivo.add("0".padEnd(22, "0"));
572
651
  arquivo.add(tipoInscricao);
573
- arquivo.add(pagador.cpfCnpj.padStart(15, "0"));
652
+ arquivo.add("0");
653
+ arquivo.add(pagador.cpfCnpj.padStart(14, "0"));
574
654
  arquivo.add(removerCaracterEspecial(pagador.nome).substring(0, 40).padEnd(40, " "));
575
655
  arquivo.add(removerCaracterEspecial(pagador.endereco.logradouro).substring(0, 40).padEnd(40, " "));
576
- arquivo.add(removerCaracterEspecial(pagador.endereco.bairro).substring(0, 15).padEnd(15, " "));
577
- arquivo.add(pagador.endereco.cep.substring(0, 5).padStart(5, "0"));
578
- arquivo.add(pagador.endereco.cep.substring(5, 7).padStart(3, "0"));
579
- arquivo.add(removerCaracterEspecial(pagador.endereco.municipio).substring(0, 15).padEnd(15, " "));
580
- arquivo.add(removerCaracterEspecial(pagador.endereco.uf).padEnd(2, " "));
581
- arquivo.add("0");
582
- arquivo.add("000000000000000");
583
- arquivo.add(" ".padEnd(40, " "));
584
- arquivo.add("000");
585
- arquivo.add(" ".padEnd(20, " "));
586
- arquivo.add(" ".padEnd(8, " "));
656
+ arquivo.add("0".padEnd(11, "0"));
657
+ arquivo.add(" ");
658
+ arquivo.add(pagador.endereco.cep.padEnd(8, " "));
659
+ arquivo.add("00000");
660
+ arquivo.add(" ".padEnd(55, " "));
661
+ arquivo.add(String(sequencia).padStart(6, "0"));
587
662
  arquivo.addLine();
588
- dadosBancario.multaAtraso = Number(dadosBancario.multaAtraso || 0);
589
- if (dadosBancario.multaAtraso > 0) {
590
- const multa = dadosBancario.multaAtraso.toFixed(2);
591
- arquivo.add("085");
592
- arquivo.add("0001");
593
- arquivo.add("3");
594
- arquivo.add((++sequencia).toString().padStart(5, "0"));
595
- arquivo.add("R");
596
- arquivo.add(" ");
597
- arquivo.add("01");
598
- arquivo.add("0");
599
- arquivo.add("00000000");
600
- arquivo.add("000000000000000");
601
- arquivo.add("0");
602
- arquivo.add("00000000");
603
- arquivo.add("000000000000000");
604
- arquivo.add("2");
605
- arquivo.add(vencimento);
606
- arquivo.add(multa.replace(".", "").padStart(15, "0"));
607
- arquivo.add(" ".padEnd(10, " "));
608
- arquivo.add(" ".padEnd(40, " "));
609
- arquivo.add(" ".padEnd(40, " "));
610
- arquivo.add(" ".padEnd(20, " "));
611
- arquivo.add("00000000");
612
- arquivo.add("000");
613
- arquivo.add("00000");
614
- arquivo.add(" ");
615
- arquivo.add("000000000000");
616
- arquivo.add(" ");
617
- arquivo.add(" ");
618
- arquivo.add("0");
619
- arquivo.add("000000000");
620
- arquivo.addLine();
621
- }
622
- quantidadeRegistro++;
663
+ sequencia++;
623
664
  }
624
- arquivo.add("085");
625
- arquivo.add("0001");
626
- arquivo.add("5");
627
- arquivo.add(" ".padEnd(9, " "));
628
- arquivo.add((sequencia + 3).toString().padStart(6, "0"));
629
- arquivo.add(quantidadeRegistro.toString().padStart(6, "0"));
630
- arquivo.add(total.toFixed(2).replace(".", "").padStart(17, "0"));
631
- arquivo.add("0".padStart(6, "0"));
632
- arquivo.add("0".padStart(17, "0"));
633
- arquivo.add("0".padStart(6, "0"));
634
- arquivo.add("0".padStart(17, "0"));
635
- arquivo.add("0".padStart(6, "0"));
636
- arquivo.add("0".padStart(17, "0"));
637
- arquivo.add(" ".padStart(8, " "));
638
- arquivo.add(" ".padStart(117, " "));
665
+ arquivo.add("91748");
666
+ arquivo.add(dadosBancario.codigo_cedente);
667
+ arquivo.add(" ".padEnd(384, " "));
668
+ arquivo.add(String(sequencia).padStart(6, "0"));
639
669
  arquivo.addLine();
640
- arquivo.add("085");
641
- arquivo.add("9999");
642
- arquivo.add("9");
643
- arquivo.add(" ".padEnd(9, " "));
644
- arquivo.add("000001");
645
- arquivo.add((sequencia + 4).toString().padStart(6, "0"));
646
- arquivo.add("000000");
647
- arquivo.add(" ".padEnd(205, " "));
648
670
  return {
649
- download: remessa2,
671
+ download: `${dadosBancario.codigo_cedente}${retornaMes(data)}${(0, import_date_fns2.format)(data, "dd")}.crm`,
650
672
  arquivo: arquivo.getArquivo()
651
673
  };
652
674
  } catch (error) {
@@ -654,9 +676,19 @@ function gerarRemessa({ dados }) {
654
676
  return null;
655
677
  }
656
678
  }
657
-
658
- // src/banks/ailos/gerarRetorno.ts
659
- var import_date_fns4 = require("date-fns");
679
+ function retornaMes(data) {
680
+ const mes = data.getMonth() + 1;
681
+ switch (mes) {
682
+ case 10:
683
+ return "O";
684
+ case 11:
685
+ return "N";
686
+ case 12:
687
+ return "D";
688
+ default:
689
+ return mes.toString();
690
+ }
691
+ }
660
692
 
661
693
  // src/utils/agruparRetorno.ts
662
694
  var import_date_fns3 = require("date-fns");
@@ -671,132 +703,292 @@ function agruparRetorno(documentos) {
671
703
  }, {});
672
704
  }
673
705
 
674
- // src/banks/ailos/gerarRetorno.ts
706
+ // src/banks/sicredi/gerarRetorno.ts
707
+ var import_date_fns4 = require("date-fns");
675
708
  function gerarRetorno({ dados }) {
676
709
  try {
677
710
  const { arquivo } = dados;
678
711
  const documentos = [];
679
- let index = 0;
680
- for (const item of arquivo) {
681
- let linha = item;
682
- const banco = linha.substring(0, 3);
683
- const codigoRetorno = linha.substring(15, 17);
684
- if ((banco === "001" || banco === "085") && (codigoRetorno === "06" || codigoRetorno === "17")) {
685
- let segmento = linha.substring(13, 14);
686
- if (segmento === "T") {
687
- const linhaDoc = linha.substring(105, 130).trimEnd();
688
- let tipoDocumento = "INDEFINIDO";
689
- let idDocumento = linhaDoc;
690
- if (linhaDoc.includes("-")) {
691
- const [tipoDoc, idDoc] = linhaDoc.split("-");
692
- tipoDocumento = tipoDoc;
693
- idDocumento = idDoc;
694
- }
695
- const especie = tipoDocumento.length ? tipoDocumento : "INDEFINIDO";
696
- linha = arquivo[index + 1];
697
- segmento = linha.substring(13, 14);
698
- if (segmento === "U") {
699
- let dataCredito;
700
- const dataCreditoString = linha.substring(145, 153);
701
- if (dataCreditoString && dataCreditoString !== "00000000") {
702
- dataCredito = (0, import_date_fns4.parse)(dataCreditoString, "ddMMyyyy", /* @__PURE__ */ new Date());
703
- } else {
704
- const dataOcorrenciaString = linha.substring(157, 165);
705
- dataCredito = (0, import_date_fns4.parse)(dataOcorrenciaString, "ddMMyyyy", /* @__PURE__ */ new Date());
706
- }
707
- const valorAbatimentoString = linha.substring(47, 62);
708
- const valorAbatimento = Number(valorAbatimentoString) / 100;
709
- const valorDescontoString = linha.substring(32, 47);
710
- const valorDesconto = Number(valorDescontoString) / 100;
711
- const valorPagoString = linha.substring(77, 92);
712
- const valorPago = Number(valorPagoString) / 100;
713
- const valorJurosString = linha.substring(17, 32);
714
- const valorJuros = Number(valorJurosString) / 100;
715
- const valorMulta = 0;
716
- const descontos = valorAbatimento + valorDesconto;
717
- const valorTotal = valorPago - valorJuros + descontos;
718
- const documento = {
719
- id_documento: idDocumento,
720
- especie,
721
- valor: valorPago,
722
- valor_multa: valorMulta,
723
- valor_juros: valorJuros,
724
- valor_desconto: valorDesconto,
725
- valor_total: valorTotal,
726
- data: dataCredito
727
- };
728
- documentos.push(documento);
729
- }
730
- }
712
+ for (const linha of arquivo) {
713
+ const id_registro = linha.substring(0, 1);
714
+ if (id_registro !== "1" /* DETALHE */) {
715
+ continue;
731
716
  }
732
- index++;
717
+ const ocorrencia = linha.substring(108, 110);
718
+ if (ocorrencia !== "06" && ocorrencia !== "15" && ocorrencia !== "17" && ocorrencia !== "03") {
719
+ continue;
720
+ }
721
+ const motivo = linha.substring(213, 223).trim();
722
+ const meu_numero = linha.substring(116, 126).trim();
723
+ let tipo_documento = "";
724
+ let id_documento = "";
725
+ if (meu_numero.includes("-")) {
726
+ const [tipo, id] = meu_numero.split("-");
727
+ tipo_documento = tipo;
728
+ id_documento = id;
729
+ }
730
+ let especie = "INDEFINIDO";
731
+ if (tipo_documento.length) {
732
+ especie = tipo_documento === "N" ? "NFE" : tipo_documento === "F" ? "FAT" : tipo_documento === "L" ? "FIN" : "INDEFINIDO";
733
+ }
734
+ let dataCredito;
735
+ const dataCreditoString = linha.substring(328, 336);
736
+ if (dataCreditoString && dataCreditoString !== "00000000") {
737
+ dataCredito = (0, import_date_fns4.parse)(dataCreditoString, "yyyyMMdd", /* @__PURE__ */ new Date());
738
+ } else {
739
+ const dataOcorrenciaString = linha.substring(110, 116);
740
+ dataCredito = (0, import_date_fns4.parse)(dataOcorrenciaString, "ddMMyy", /* @__PURE__ */ new Date());
741
+ }
742
+ const valor_titulo = Number(linha.substring(152, 165)) / 100;
743
+ const abatimento = Number(linha.substring(227, 240)) / 100;
744
+ let valor_desconto = Number(linha.substring(240, 253)) / 100;
745
+ const valor_pago = Number(linha.substring(253, 266)) / 100;
746
+ let valor_juros = Number(linha.substring(266, 279)) / 100;
747
+ const valor_multa = Number(linha.substring(279, 292)) / 100;
748
+ if (valor_titulo > valor_pago && valor_desconto === 0) {
749
+ valor_desconto = valor_titulo - valor_pago;
750
+ }
751
+ if (valor_titulo < valor_pago && valor_juros === 0) {
752
+ valor_juros = valor_pago - valor_titulo;
753
+ }
754
+ const descontos = abatimento + valor_desconto;
755
+ const valor_total = valor_titulo + valor_multa + valor_juros - descontos;
756
+ let rejeitado = false;
757
+ let motivoRejeicao = "";
758
+ if (ocorrencia === "03") {
759
+ rejeitado = true;
760
+ motivoRejeicao = retornaMotivoRejeicao(motivo);
761
+ }
762
+ documentos.push({
763
+ id_documento,
764
+ especie,
765
+ valor: valor_pago,
766
+ valor_multa,
767
+ valor_juros,
768
+ valor_desconto,
769
+ valor_total,
770
+ data: dataCredito,
771
+ rejeitado,
772
+ motivo: motivoRejeicao
773
+ });
733
774
  }
734
- const documentoAgrupado = agruparRetorno(documentos);
735
- return documentoAgrupado;
775
+ const documentosAgrupado = agruparRetorno(documentos);
776
+ return documentosAgrupado;
736
777
  } catch (error) {
737
778
  console.log(error);
738
779
  return null;
739
780
  }
740
781
  }
741
-
742
- // src/banks/ailos/index.ts
743
- var ailos = {
744
- gerarDadosBoleto,
745
- gerarPDF,
746
- gerarRemessa,
747
- gerarRetorno
748
- };
749
-
750
- // src/types/Boletos.ts
751
- var Banco = /* @__PURE__ */ ((Banco2) => {
752
- Banco2["AILOS"] = "085";
753
- Banco2["BRADESCO"] = "005";
754
- Banco2["SICREDI"] = "748";
755
- Banco2["SICOOB"] = "756";
756
- Banco2["BANCO_BRASIL"] = "001";
757
- Banco2["ITAU"] = "341";
758
- return Banco2;
759
- })(Banco || {});
760
-
761
- // src/banks/bradesco/gerarDadosBoleto.ts
762
- function gerarDadosBoleto2({ dados }) {
763
- try {
764
- const { bancario, parcela } = dados;
765
- parcela.valor = Number(parcela.valor);
766
- const fatorVencimento = getFatorVencimento(parcela.vencimento);
767
- const valor = getValor2(parcela.valor);
768
- const convenio = padLeft(bancario.convenio, 6);
769
- const numeroDocumento = padLeft(`${parcela.id_boleto}`, 9);
770
- const nossoNumero = padLeft(bancario.numero + bancario.numero_dv, 8) + numeroDocumento;
771
- const campoLivre = convenio + nossoNumero + padLeft(bancario.carteira, 2);
772
- const digitoGeral = getDigitoGeral2(`0859${fatorVencimento}${valor}${campoLivre}`);
773
- const codigoBarra2 = `0859${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
774
- const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
775
- const campo2 = copy(codigoBarra2, 25, 34);
776
- const campo3 = copy(codigoBarra2, 35, 44);
777
- const campo4 = copy(codigoBarra2, 5, 5);
778
- const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
779
- const digito1 = getDigito2(campo1);
780
- const digito2 = getDigito2(campo2);
781
- const digito3 = getDigito2(campo3);
782
- const digito4 = getDigito2(campo4);
783
- const linhaDigitavel = campo1 + digito1 + campo2 + digito2 + campo3 + digito3 + campo4 + digito4 + campo5;
784
- const dadosBoleto = {
785
- linhaDigitavel,
786
- fatorVencimento,
787
- valor,
788
- convenio,
789
- nossoNumero,
790
- campoLivre,
791
- digitoGeral,
792
- codigoBarra: codigoBarra2,
793
- numeroDocumento
794
- };
795
- return dadosBoleto;
796
- } catch (error) {
797
- console.log("Falha ao gerar dados do boleto", error);
798
- return null;
799
- }
782
+ function retornaMotivoRejeicao(codigo) {
783
+ switch (codigo) {
784
+ case "01":
785
+ return "C\xF3digo do banco inv\xE1lido";
786
+ case "02":
787
+ return "C\xF3digo do registro detalhe inv\xE1lido";
788
+ case "03":
789
+ return "C\xF3digo do segmento inv\xE1lido";
790
+ case "04":
791
+ return "C\xF3digo de movimento n\xE3o permitido para carteira";
792
+ case "05":
793
+ return "C\xF3digo de movimento inv\xE1lido";
794
+ case "06":
795
+ return "Tipo/n\xFAmero de inscri\xE7\xE3o do benefici\xE1rio inv\xE1lidos";
796
+ case "07":
797
+ return "Cooperativa cr\xE9dito/ag\xEAncia/conta/DV inv\xE1lido";
798
+ case "08":
799
+ return "Nosso n\xFAmero inv\xE1lido";
800
+ case "09":
801
+ return "Nosso n\xFAmero duplicado";
802
+ case "10":
803
+ return "Carteira inv\xE1lida";
804
+ case "11":
805
+ return "Forma de cadastramento do t\xEDtulo inv\xE1lido";
806
+ case "12":
807
+ return "Tipo de documento inv\xE1lido";
808
+ case "13":
809
+ return "Identifica\xE7\xE3o da emiss\xE3o do boleto inv\xE1lida";
810
+ case "14":
811
+ return "Identifica\xE7\xE3o da distribui\xE7\xE3o do boleto inv\xE1lida";
812
+ case "15":
813
+ return "Caracter\xEDsticas da cobran\xE7a incompat\xEDveis";
814
+ case "16":
815
+ return "Data de vencimento inv\xE1lida";
816
+ case "17":
817
+ return "Data de vencimento anterior a data de emiss\xE3o";
818
+ case "18":
819
+ return "Vencimento fora do prazo de opera\xE7\xE3o";
820
+ case "20":
821
+ return "Valor do t\xEDtulo inv\xE1lido";
822
+ case "21":
823
+ return "Esp\xE9cie do t\xEDtulo inv\xE1lida";
824
+ case "22":
825
+ return "Esp\xE9cie do t\xEDtulo n\xE3o permitida para a carteira";
826
+ case "23":
827
+ return "Aceite inv\xE1lido";
828
+ case "24":
829
+ return "Data da emiss\xE3o inv\xE1lida";
830
+ case "25":
831
+ return "Data da emiss\xE3o posterior a data de entrada";
832
+ case "26":
833
+ return "C\xF3digo de juros de mora inv\xE1lido";
834
+ case "27":
835
+ return "Valor/taxa de juros de mora inv\xE1lido";
836
+ case "28":
837
+ return "C\xF3digo do desconto inv\xE1lido";
838
+ case "29":
839
+ return "Valor do desconto maior ou igual ao valor do t\xEDtulo";
840
+ case "30":
841
+ return "Desconto a conceder n\xE3o confere";
842
+ case "31":
843
+ return "Concess\xE3o de desconto - j\xE1 existe desconto anterior";
844
+ case "33":
845
+ return "Valor do abatimento inv\xE1lido";
846
+ case "34":
847
+ return "Valor do abatimento maior ou igual ao valor do t\xEDtulo";
848
+ case "35":
849
+ return "Valor a conceder n\xE3o confere";
850
+ case "36":
851
+ return "Concess\xE3o de abatimento - j\xE1 existe abatimento anterior";
852
+ case "37":
853
+ return "C\xF3digo para protesto inv\xE1lido";
854
+ case "38":
855
+ return "Prazo para protesto inv\xE1lido";
856
+ case "39":
857
+ return "Pedido de protesto n\xE3o permitido para o t\xEDtulo";
858
+ case "40":
859
+ return "T\xEDtulo com ordem de protesto emitida";
860
+ case "41":
861
+ return "Pedido de cancelamento/susta\xE7\xE3o para t\xEDtulos sem instru\xE7\xE3o de protesto/negativa\xE7\xE3o";
862
+ case "44":
863
+ return "C\xF3digo da moeda inv\xE1lido";
864
+ case "45":
865
+ return "Nome do pagador n\xE3o informado";
866
+ case "46":
867
+ return "Tipo/n\xFAmero de inscri\xE7\xE3o do pagador inv\xE1lidos";
868
+ case "47":
869
+ return "Endere\xE7o do pagador n\xE3o informado";
870
+ case "48":
871
+ return "CEP inv\xE1lido";
872
+ case "53":
873
+ return "Tipo/n\xFAmero de inscri\xE7\xE3o do pagador/avalista inv\xE1lido";
874
+ case "54":
875
+ return "Pagador/avalista n\xE3o informado";
876
+ case "55":
877
+ return "Nosso n\xFAmero no banco correspondente n\xE3o informado";
878
+ case "56":
879
+ return "C\xF3digo do banco correspondente n\xE3o informado";
880
+ case "57":
881
+ return "C\xF3digo da multa inv\xE1lido";
882
+ case "58":
883
+ return "Data da multa inv\xE1lida";
884
+ case "59":
885
+ return "Valor/percentual da multa inv\xE1lido";
886
+ case "60":
887
+ return "Movimento para t\xEDtulo n\xE3o cadastrado";
888
+ case "61":
889
+ return "Altera\xE7\xE3o da cooperativa cr\xE9dito/ag\xEAncia cobradora/DV inv\xE1lida";
890
+ case "62":
891
+ return "Tipo de impress\xE3o inv\xE1lido";
892
+ case "63":
893
+ return "Entrada para t\xEDtulo j\xE1 cadastrado";
894
+ case "64":
895
+ return "N\xFAmero da linha inv\xE1lido";
896
+ case "79":
897
+ return "Data juros de mora inv\xE1lida";
898
+ case "80":
899
+ return "Data do desconto inv\xE1lida";
900
+ case "84":
901
+ return "N\xFAmero autoriza\xE7\xE3o inexistente";
902
+ case "85":
903
+ return "T\xEDtulo com pagamento vinculado";
904
+ case "86":
905
+ return "Seu n\xFAmero inv\xE1lido";
906
+ case "A4":
907
+ return "Pagador DDA";
908
+ case "CZ":
909
+ return "Instru\xE7\xE3o Inv\xE1lida";
910
+ case "L6":
911
+ return "Tipo de comando de instru\xE7\xE3o inv\xE1lida para benefici\xE1rio pessoa f\xEDsica.";
912
+ default:
913
+ return "Motivo desconhecido";
914
+ }
915
+ }
916
+
917
+ // src/banks/sicredi/index.ts
918
+ var sicredi = {
919
+ gerarDadosBoleto,
920
+ gerarPDF,
921
+ gerarRemessa,
922
+ gerarRetorno,
923
+ gerarPDFCarne
924
+ };
925
+
926
+ // src/types/Boletos.ts
927
+ var Banco = /* @__PURE__ */ ((Banco2) => {
928
+ Banco2["AILOS"] = "085";
929
+ Banco2["BRADESCO"] = "005";
930
+ Banco2["SICREDI"] = "748";
931
+ Banco2["SICOOB"] = "756";
932
+ Banco2["BANCO_BRASIL"] = "001";
933
+ Banco2["ITAU"] = "341";
934
+ return Banco2;
935
+ })(Banco || {});
936
+
937
+ // src/carne.ts
938
+ function carne({ banco, dados }) {
939
+ if (banco === "748" /* SICREDI */) {
940
+ return sicredi.gerarPDFCarne({ banco, dados });
941
+ }
942
+ }
943
+
944
+ // src/utils/pafLeft.ts
945
+ function padLeft(numero, tamanho) {
946
+ numero = String(numero);
947
+ if (numero.length < tamanho) {
948
+ numero = `0${numero}`;
949
+ return padLeft(numero, tamanho);
950
+ }
951
+ return numero;
952
+ }
953
+
954
+ // src/banks/ailos/gerarDadosBoleto.ts
955
+ function gerarDadosBoleto2({ dados }) {
956
+ try {
957
+ const { bancario, parcela } = dados;
958
+ parcela.valor = Number(parcela.valor);
959
+ const fatorVencimento = getFatorVencimento(parcela.vencimento);
960
+ const valor = getValor2(parcela.valor);
961
+ const convenio = padLeft(bancario.convenio, 6);
962
+ const numeroDocumento = padLeft(`${parcela.id_boleto}`, 9);
963
+ const nossoNumero = padLeft(bancario.numero + bancario.numero_dv, 8) + numeroDocumento;
964
+ const campoLivre = convenio + nossoNumero + padLeft(bancario.carteira, 2);
965
+ const digitoGeral = getDigitoGeral2(`0859${fatorVencimento}${valor}${campoLivre}`);
966
+ const codigoBarra2 = `0859${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
967
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
968
+ const campo2 = copy(codigoBarra2, 25, 34);
969
+ const campo3 = copy(codigoBarra2, 35, 44);
970
+ const campo4 = copy(codigoBarra2, 5, 5);
971
+ const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
972
+ const digito1 = getDigito2(campo1);
973
+ const digito2 = getDigito2(campo2);
974
+ const digito3 = getDigito2(campo3);
975
+ const linhaDigitavel = campo1 + digito1 + campo2 + digito2 + campo3 + digito3 + campo4 + campo5;
976
+ const dadosBoleto = {
977
+ linhaDigitavel,
978
+ fatorVencimento,
979
+ valor,
980
+ convenio,
981
+ nossoNumero,
982
+ campoLivre,
983
+ digitoGeral,
984
+ codigoBarra: codigoBarra2,
985
+ numeroDocumento
986
+ };
987
+ return dadosBoleto;
988
+ } catch (error) {
989
+ console.log("Falha ao gerar dados do boleto", error);
990
+ return null;
991
+ }
800
992
  }
801
993
  function getValor2(valor) {
802
994
  const valorFormatado = valor.toFixed(2).replace(/\D/g, "");
@@ -846,20 +1038,23 @@ function getDigito2(texto) {
846
1038
  return String(digito);
847
1039
  }
848
1040
 
849
- // src/banks/bradesco/gerarPDF.ts
850
- var import_bwip_js2 = __toESM(require("bwip-js"));
1041
+ // src/banks/ailos/gerarPDF.ts
1042
+ var import_bwip_js3 = __toESM(require("bwip-js"));
851
1043
  function gerarPDF2(_0) {
852
1044
  return __async(this, arguments, function* ({ dados }) {
853
1045
  try {
854
- const { dadosPDF, generatePDF } = dados;
855
- const codigoBarra2 = yield import_bwip_js2.default.toBuffer({
1046
+ const { generatePDF, dadosPDF } = dados;
1047
+ if (!dadosPDF.pagador.cpfcnpj) {
1048
+ throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
1049
+ }
1050
+ const codigoBarra2 = yield import_bwip_js3.default.toBuffer({
856
1051
  bcid: "interleaved2of5",
857
1052
  text: dadosPDF.boleto.codigoBarra,
858
1053
  height: 20
859
1054
  });
860
- dadosPDF.beneficiario.dadosBancarios.agencia = dadosPDF.beneficiario.dadosBancarios.agencia.padStart(4, "0");
861
- dadosPDF.beneficiario.dadosBancarios.conta = dadosPDF.beneficiario.dadosBancarios.conta.padStart(7, "0");
862
- dadosPDF.boleto.codigoBarra = maskFormat_default.codigoBarra(dadosPDF.boleto.codigoBarra);
1055
+ dadosPDF.beneficiario.dadosBancario.agencia = dadosPDF.beneficiario.dadosBancario.agencia.padStart(4, "0");
1056
+ dadosPDF.beneficiario.dadosBancario.conta = dadosPDF.beneficiario.dadosBancario.conta.padStart(7, "0");
1057
+ dadosPDF.boleto.linhaDigitavel = maskFormat_default.codigoBarra(dadosPDF.boleto.linhaDigitavel);
863
1058
  dadosPDF.boleto.codigoBarraImage = codigoBarra2.toString("base64");
864
1059
  dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
865
1060
  dadosPDF.beneficiario.cnpj
@@ -870,6 +1065,7 @@ function gerarPDF2(_0) {
870
1065
  dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
871
1066
  dadosPDF.pagador.endereco.cep
872
1067
  );
1068
+ dadosPDF.pagador.cpfcnpj = maskFormat_default.retornaCpfCnpjFormatado(dadosPDF.pagador.cpfcnpj);
873
1069
  dadosPDF.boleto.valorAcrescimo = maskFormat_default.numberToReal(
874
1070
  dadosPDF.boleto.valorAcrescimo
875
1071
  );
@@ -879,6 +1075,7 @@ function gerarPDF2(_0) {
879
1075
  dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
880
1076
  dadosPDF.boleto.valorDescontoAbatimento
881
1077
  );
1078
+ const valorDocumento = Number(dadosPDF.boleto.valorDocumento);
882
1079
  dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
883
1080
  dadosPDF.boleto.valorDocumento
884
1081
  );
@@ -889,8 +1086,26 @@ function gerarPDF2(_0) {
889
1086
  if (dadosPDF.boleto.quantidade) {
890
1087
  dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
891
1088
  }
1089
+ const jurosMes = dadosPDF.beneficiario.dadosBancario.juros;
1090
+ const jurosDia = jurosMes / 100 / 30 * valorDocumento;
1091
+ if (jurosDia > 0) {
1092
+ dadosPDF.boleto.instrucao1 = `COBRAR JUROS DE R$${maskFormat_default.numberToReal(jurosDia)} AO DIA, AP\xD3S O VENCIMENTO`;
1093
+ }
1094
+ const descontoVencimento = dadosPDF.boleto.desconto > 0 ? dadosPDF.boleto.desconto : dadosPDF.beneficiario.dadosBancario.desconto > 0 ? dadosPDF.beneficiario.dadosBancario.desconto : 0;
1095
+ if (descontoVencimento > 0) {
1096
+ dadosPDF.boleto.instrucao2 = `AT\xC9 O VENCIMENTO, CONCEDER DESCONTO DE ${descontoVencimento}%`;
1097
+ }
1098
+ const multaAtraso = dadosPDF.beneficiario.dadosBancario.multa || 0;
1099
+ if (multaAtraso > 0) {
1100
+ dadosPDF.boleto.instrucao3 = `MULTA DE ${multaAtraso}%`;
1101
+ }
1102
+ const protestoDias = dadosPDF.beneficiario.dadosBancario.protesto || 0;
1103
+ if (protestoDias > 0) {
1104
+ dadosPDF.boleto.instrucao4 = `PROTESTAR AP\xD3S ${protestoDias} DIAS CORRIDOS DO VENCIMENTO`;
1105
+ }
892
1106
  dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
893
- const content = compileHbs(getPathTemplates("bradesco-boleto.hbs"), dadosPDF);
1107
+ dadosPDF.pagador.isCnpj = dadosPDF.pagador.cpfcnpj.length > 14;
1108
+ const content = compileHbs(getPathTemplates("ailos-boleto.hbs"), dadosPDF);
894
1109
  const config = {
895
1110
  displayHeaderFooter: false,
896
1111
  path: "./boleto.pdf",
@@ -913,242 +1128,264 @@ function gerarPDF2(_0) {
913
1128
  dados: pdfBase64
914
1129
  };
915
1130
  } catch (error) {
1131
+ console.log(error);
1132
+ if (error instanceof Error) {
1133
+ return {
1134
+ erro: true,
1135
+ dados: error.message
1136
+ };
1137
+ }
916
1138
  return {
917
1139
  erro: true,
918
- dados: null
1140
+ dados: "Falha ao gerar impress\xE3o do boleto"
919
1141
  };
920
1142
  }
921
1143
  });
922
1144
  }
923
1145
 
924
- // src/banks/bradesco/gerarRemessa.ts
1146
+ // src/banks/ailos/gerarRemessa.ts
925
1147
  var import_date_fns5 = require("date-fns");
926
- function gerarRemessa2(_0) {
927
- return __async(this, arguments, function* ({ dados }) {
928
- try {
929
- const { dadosBancario, beneficiario, boletos } = dados.remessa;
930
- const arquivo = new Arquivo();
931
- const dataAtual = /* @__PURE__ */ new Date();
932
- const data = (0, import_date_fns5.format)(dataAtual, "ddMMyyyy");
933
- const hora = (0, import_date_fns5.format)(dataAtual, "HHmmss");
934
- const convenio = dadosBancario.convenio.padStart(7, "0");
935
- const numero = dadosBancario.conta.padStart(7, "0") + dadosBancario.contaDigito;
936
- const remessa2 = `REM${convenio}-${numero}-${data}.REM`;
937
- arquivo.add("085");
938
- arquivo.add("0000");
939
- arquivo.add("0");
940
- arquivo.add(" ");
941
- arquivo.add("2");
942
- arquivo.add(beneficiario.cnpj);
943
- arquivo.add(dadosBancario.convenio.padEnd(20, " "));
944
- arquivo.add(dadosBancario.agencia.padStart(5, "0"));
945
- arquivo.add(dadosBancario.agencia);
946
- arquivo.add(dadosBancario.conta.padStart(12, "0"));
947
- arquivo.add(dadosBancario.contaDigito);
948
- arquivo.add(" ");
949
- arquivo.add(beneficiario.nome.substring(0, 30).padEnd(30, " "));
950
- arquivo.add("AILOS".padEnd(30, " "));
951
- arquivo.add(" ");
952
- arquivo.add("1");
953
- arquivo.add(data);
954
- arquivo.add(hora);
955
- arquivo.add(dadosBancario.numeroRemessa.padStart(6, "0"));
956
- arquivo.add("087");
957
- arquivo.add("00000");
958
- arquivo.add(" ".padEnd(20, " "));
959
- arquivo.add(" ".padEnd(20, " "));
960
- arquivo.add(" ".padEnd(29, " "));
961
- arquivo.addLine();
962
- arquivo.add("085");
963
- arquivo.add("0001");
964
- arquivo.add("1");
965
- arquivo.add("R");
966
- arquivo.add("01");
967
- arquivo.add(" ");
968
- arquivo.add("045");
969
- arquivo.add(" ");
970
- arquivo.add("2");
971
- arquivo.add(beneficiario.cnpj.padStart(15, "0"));
972
- arquivo.add(dadosBancario.convenio.padEnd(20, " "));
973
- arquivo.add(dadosBancario.agencia.padStart(5, "0"));
974
- arquivo.add(dadosBancario.agenciaDigito);
975
- arquivo.add(dadosBancario.conta.padStart(12, "0"));
976
- arquivo.add(dadosBancario.contaDigito);
977
- arquivo.add(" ");
978
- arquivo.add(beneficiario.nome.substring(0, 30).padEnd(30, " "));
979
- arquivo.add(" ".padEnd(40, " "));
980
- arquivo.add(" ".padEnd(40, " "));
981
- arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
982
- arquivo.add(data);
983
- arquivo.add("00000000");
984
- arquivo.add(" ".padEnd(33, " "));
985
- arquivo.addLine();
986
- let sequencia = 1;
987
- let quantidadeRegistro = 1;
988
- let total = 0;
989
- for (const boleto of boletos) {
990
- const { pagador } = boleto;
991
- const vencimento = (0, import_date_fns5.format)(new Date(boleto.vencimento), "ddMMyyyy");
992
- total += Number(boleto.valor);
993
- const codigoJuro = dadosBancario.jurosMes > 0 ? "2" : "3";
994
- const juros = dadosBancario.jurosMes > 0 ? dadosBancario.jurosMes.toFixed(2) : "000000000000000";
995
- const jurosVencimento = (0, import_date_fns5.format)(
996
- (0, import_date_fns5.addDays)(new Date(boleto.vencimento), 1),
997
- "ddMMyyyy"
998
- );
999
- const codigoDesconto = dadosBancario.descontoPagamento > 0 ? "2" : "0";
1000
- const desconto = dadosBancario.descontoPagamento > 0 ? dadosBancario.descontoPagamento.toFixed(2) : "000000000000000";
1001
- const protesto = dadosBancario.diasProtesto > 0 ? "1" : "3";
1002
- const diasProtesto = protesto === "1" ? dadosBancario.diasProtesto.toString() : "00";
1148
+ function gerarRemessa2({ dados }) {
1149
+ try {
1150
+ const { dadosBancario, beneficiario, boletos } = dados.remessa;
1151
+ const arquivo = new Arquivo();
1152
+ const dataAtual = /* @__PURE__ */ new Date();
1153
+ const data = (0, import_date_fns5.format)(dataAtual, "ddMMyyyy");
1154
+ const hora = (0, import_date_fns5.format)(dataAtual, "HHmmss");
1155
+ const convenio = dadosBancario.convenio.padStart(7, "0");
1156
+ const numero = dadosBancario.conta.padStart(7, "0") + dadosBancario.contaDigito;
1157
+ const remessa2 = `REM${convenio}-${numero}-${data}.REM`;
1158
+ arquivo.add("085");
1159
+ arquivo.add("0000");
1160
+ arquivo.add("0");
1161
+ arquivo.add(" ");
1162
+ arquivo.add("2");
1163
+ arquivo.add(beneficiario.cnpj);
1164
+ arquivo.add(dadosBancario.convenio.padEnd(20, " "));
1165
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1166
+ arquivo.add(dadosBancario.agenciaDigito);
1167
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1168
+ arquivo.add(dadosBancario.contaDigito);
1169
+ arquivo.add(" ");
1170
+ arquivo.add(removerCaracterEspecial(beneficiario.nome).substring(0, 30).padEnd(30, " "));
1171
+ arquivo.add("AILOS".padEnd(30, " "));
1172
+ arquivo.add(" ");
1173
+ arquivo.add("1");
1174
+ arquivo.add(data);
1175
+ arquivo.add(hora);
1176
+ arquivo.add(dadosBancario.numeroRemessa.padStart(6, "0"));
1177
+ arquivo.add("087");
1178
+ arquivo.add("00000");
1179
+ arquivo.add(" ".padEnd(20, " "));
1180
+ arquivo.add(" ".padEnd(20, " "));
1181
+ arquivo.add(" ".padEnd(29, " "));
1182
+ arquivo.addLine();
1183
+ arquivo.add("085");
1184
+ arquivo.add("0001");
1185
+ arquivo.add("1");
1186
+ arquivo.add("R");
1187
+ arquivo.add("01");
1188
+ arquivo.add(" ");
1189
+ arquivo.add("045");
1190
+ arquivo.add(" ");
1191
+ arquivo.add("2");
1192
+ arquivo.add(beneficiario.cnpj.padStart(15, "0"));
1193
+ arquivo.add(dadosBancario.convenio.padEnd(20, " "));
1194
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1195
+ arquivo.add(dadosBancario.agenciaDigito);
1196
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1197
+ arquivo.add(dadosBancario.contaDigito);
1198
+ arquivo.add(" ");
1199
+ arquivo.add(removerCaracterEspecial(beneficiario.nome).substring(0, 30).padEnd(30, " "));
1200
+ arquivo.add(" ".padEnd(40, " "));
1201
+ arquivo.add(" ".padEnd(40, " "));
1202
+ arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
1203
+ arquivo.add(data);
1204
+ arquivo.add("00000000");
1205
+ arquivo.add(" ".padEnd(33, " "));
1206
+ arquivo.addLine();
1207
+ let sequencia = 0;
1208
+ let quantidadeRegistro = 0;
1209
+ let total = 0;
1210
+ for (const boleto of boletos) {
1211
+ const { pagador } = boleto;
1212
+ const vencimento = (0, import_date_fns5.format)(new Date(boleto.vencimento), "ddMMyyyy");
1213
+ total += Number(boleto.valor);
1214
+ const codigoJuro = dadosBancario.jurosMes > 0 ? "2" : "3";
1215
+ const juros = dadosBancario.jurosMes > 0 ? dadosBancario.jurosMes.toFixed(2) : "000000000000000";
1216
+ const jurosVencimento = (0, import_date_fns5.format)(
1217
+ (0, import_date_fns5.addDays)(new Date(boleto.vencimento), 1),
1218
+ "ddMMyyyy"
1219
+ );
1220
+ const codigoDesconto = dadosBancario.descontoPagamento > 0 ? "2" : "0";
1221
+ const desconto = boleto.desconto > 0 ? boleto.desconto.toFixed(2) : dadosBancario.descontoPagamento > 0 ? dadosBancario.descontoPagamento.toFixed(2) : "000000000000000";
1222
+ let diasProtesto = "00";
1223
+ let protesto = "3";
1224
+ switch (dadosBancario.tipo_protesto) {
1225
+ case "Nenhum":
1226
+ protesto = "3";
1227
+ diasProtesto = "00";
1228
+ break;
1229
+ case "Protestar":
1230
+ protesto = "1";
1231
+ diasProtesto = dadosBancario.diasProtesto.toString().padStart(2, "0");
1232
+ break;
1233
+ case "Negativar":
1234
+ protesto = "2";
1235
+ diasProtesto = dadosBancario.diasProtesto.toString().padStart(2, "0");
1236
+ break;
1237
+ default:
1238
+ protesto = "3";
1239
+ diasProtesto = "00";
1240
+ break;
1241
+ }
1242
+ arquivo.add("085");
1243
+ arquivo.add("0001");
1244
+ arquivo.add("3");
1245
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
1246
+ arquivo.add("P");
1247
+ arquivo.add(" ");
1248
+ arquivo.add("01");
1249
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1250
+ arquivo.add(dadosBancario.agenciaDigito);
1251
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1252
+ arquivo.add(dadosBancario.contaDigito);
1253
+ arquivo.add(" ");
1254
+ arquivo.add(boleto.nossoNumero.padEnd(20, " "));
1255
+ arquivo.add("1");
1256
+ arquivo.add("1");
1257
+ arquivo.add("1");
1258
+ arquivo.add("2");
1259
+ arquivo.add("2");
1260
+ arquivo.add(`${boleto.numeroDocumento}/${boleto.parcela}`.padEnd(15, " "));
1261
+ arquivo.add(vencimento);
1262
+ arquivo.add(
1263
+ Number(boleto.valor).toFixed(2).replace(".", "").padStart(15, "0")
1264
+ );
1265
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1266
+ arquivo.add(dadosBancario.agenciaDigito);
1267
+ arquivo.add("02");
1268
+ arquivo.add(boleto.aceite);
1269
+ arquivo.add(data);
1270
+ arquivo.add(codigoJuro);
1271
+ arquivo.add(jurosVencimento);
1272
+ arquivo.add(juros.replace(".", "").padStart(15, "0"));
1273
+ arquivo.add(codigoDesconto);
1274
+ arquivo.add(vencimento);
1275
+ arquivo.add(desconto.replace(".", "").padStart(15, "0"));
1276
+ arquivo.add("000000000000000");
1277
+ arquivo.add("000000000000000");
1278
+ arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
1279
+ arquivo.add(protesto);
1280
+ arquivo.add(diasProtesto);
1281
+ arquivo.add("2");
1282
+ arquivo.add(" ");
1283
+ arquivo.add("09");
1284
+ arquivo.add("0000000000");
1285
+ arquivo.add(" ");
1286
+ arquivo.addLine();
1287
+ let tipoInscricao = "1";
1288
+ if (pagador.pessoa === "F") {
1289
+ tipoInscricao = "1";
1290
+ } else {
1291
+ tipoInscricao = "2";
1292
+ }
1293
+ pagador.endereco.logradouro = `${removerCaracterEspecial(pagador.endereco.logradouro).substring(0, 32).padEnd(32, " ")}${pagador.endereco.numero.padEnd(8, " ")}`;
1294
+ arquivo.add("085");
1295
+ arquivo.add("0001");
1296
+ arquivo.add("3");
1297
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
1298
+ arquivo.add("Q");
1299
+ arquivo.add(" ");
1300
+ arquivo.add("01");
1301
+ arquivo.add(tipoInscricao);
1302
+ arquivo.add(pagador.cpfCnpj.padStart(15, "0"));
1303
+ arquivo.add(removerCaracterEspecial(pagador.nome).substring(0, 40).padEnd(40, " "));
1304
+ arquivo.add(removerCaracterEspecial(pagador.endereco.logradouro).substring(0, 40).padEnd(40, " "));
1305
+ arquivo.add(removerCaracterEspecial(pagador.endereco.bairro).substring(0, 15).padEnd(15, " "));
1306
+ arquivo.add(pagador.endereco.cep.substring(0, 5).padStart(5, "0"));
1307
+ arquivo.add(pagador.endereco.cep.substring(5, 7).padStart(3, "0"));
1308
+ arquivo.add(removerCaracterEspecial(pagador.endereco.municipio).substring(0, 15).padEnd(15, " "));
1309
+ arquivo.add(removerCaracterEspecial(pagador.endereco.uf).padEnd(2, " "));
1310
+ arquivo.add("0");
1311
+ arquivo.add("000000000000000");
1312
+ arquivo.add(" ".padEnd(40, " "));
1313
+ arquivo.add("000");
1314
+ arquivo.add(" ".padEnd(20, " "));
1315
+ arquivo.add(" ".padEnd(8, " "));
1316
+ arquivo.addLine();
1317
+ dadosBancario.multaAtraso = Number(dadosBancario.multaAtraso || 0);
1318
+ if (dadosBancario.multaAtraso > 0) {
1319
+ const multa = dadosBancario.multaAtraso.toFixed(2);
1003
1320
  arquivo.add("085");
1004
1321
  arquivo.add("0001");
1005
1322
  arquivo.add("3");
1006
- arquivo.add(sequencia.toString().padStart(5, "0"));
1007
- arquivo.add("P");
1323
+ arquivo.add((++sequencia).toString().padStart(5, "0"));
1324
+ arquivo.add("R");
1008
1325
  arquivo.add(" ");
1009
1326
  arquivo.add("01");
1010
- arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1011
- arquivo.add(dadosBancario.agenciaDigito);
1012
- arquivo.add(dadosBancario.conta.padStart(12, "0"));
1013
- arquivo.add(dadosBancario.contaDigito);
1014
- arquivo.add(" ");
1015
- arquivo.add(boleto.nossoNumero.padEnd(20, " "));
1016
- arquivo.add("1");
1017
- arquivo.add("1");
1018
- arquivo.add("1");
1019
- arquivo.add("2");
1020
- arquivo.add("2");
1021
- arquivo.add(`${boleto.numeroDocumento}/${boleto.parcela}`.padEnd(15, " "));
1022
- arquivo.add(vencimento);
1023
- arquivo.add(
1024
- Number(boleto.valor).toFixed(2).replace(".", "").padStart(15, "0")
1025
- );
1026
- arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1027
- arquivo.add(dadosBancario.agenciaDigito);
1028
- arquivo.add("02");
1029
- arquivo.add("A");
1030
- arquivo.add(data);
1031
- arquivo.add(codigoJuro);
1032
- arquivo.add(jurosVencimento);
1033
- arquivo.add(juros.replace(".", "").padStart(15, "0"));
1034
- arquivo.add(codigoDesconto);
1035
- arquivo.add(vencimento);
1036
- arquivo.add(desconto.replace(".", "").padStart(15, "0"));
1327
+ arquivo.add("0");
1328
+ arquivo.add("00000000");
1037
1329
  arquivo.add("000000000000000");
1330
+ arquivo.add("0");
1331
+ arquivo.add("00000000");
1038
1332
  arquivo.add("000000000000000");
1039
- arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
1040
- arquivo.add(protesto);
1041
- arquivo.add(diasProtesto.padStart(1, "0"));
1042
1333
  arquivo.add("2");
1043
- arquivo.add(" ");
1044
- arquivo.add("09");
1045
- arquivo.add("0000000000");
1334
+ arquivo.add(vencimento);
1335
+ arquivo.add(multa.replace(".", "").padStart(15, "0"));
1336
+ arquivo.add(" ".padEnd(10, " "));
1337
+ arquivo.add(" ".padEnd(40, " "));
1338
+ arquivo.add(" ".padEnd(40, " "));
1339
+ arquivo.add(" ".padEnd(20, " "));
1340
+ arquivo.add("00000000");
1341
+ arquivo.add("000");
1342
+ arquivo.add("00000");
1343
+ arquivo.add(" ");
1344
+ arquivo.add("000000000000");
1046
1345
  arquivo.add(" ");
1047
- sequencia++;
1048
- arquivo.addLine();
1049
- let tipoInscricao = "1";
1050
- if (pagador.pessoa === "F") {
1051
- tipoInscricao = "1";
1052
- } else {
1053
- tipoInscricao = "2";
1054
- }
1055
- pagador.endereco.logradouro = `${pagador.endereco.logradouro.substring(0, 32).padEnd(32, " ")}${pagador.endereco.numero.padEnd(8, " ")}`;
1056
- arquivo.add("085");
1057
- arquivo.add("0001");
1058
- arquivo.add("3");
1059
- arquivo.add(sequencia.toString().padStart(5, "0"));
1060
- arquivo.add("Q");
1061
1346
  arquivo.add(" ");
1062
- arquivo.add("01");
1063
- arquivo.add(tipoInscricao);
1064
- arquivo.add(pagador.cpfCnpj.padStart(15, "0"));
1065
- arquivo.add(pagador.nome.substring(0, 40).padEnd(40, " "));
1066
- arquivo.add(pagador.endereco.logradouro.substring(0, 40).padEnd(40, " "));
1067
- arquivo.add(pagador.endereco.bairro.substring(0, 15).padEnd(15, " "));
1068
- arquivo.add(pagador.endereco.cep.substring(0, 5).padStart(5, "0"));
1069
- arquivo.add(pagador.endereco.cep.substring(5, 7).padStart(3, "0"));
1070
- arquivo.add(pagador.endereco.municipio.substring(0, 15).padEnd(15, " "));
1071
- arquivo.add(pagador.endereco.uf.padEnd(2, " "));
1072
1347
  arquivo.add("0");
1073
- arquivo.add("000000000000000");
1074
- arquivo.add(" ".padEnd(40, " "));
1075
- arquivo.add("000");
1076
- arquivo.add(" ".padEnd(20, " "));
1077
- arquivo.add(" ".padEnd(8, " "));
1078
- dadosBancario.multaAtraso = Number(dadosBancario.multaAtraso || 0);
1079
- if (dadosBancario.multaAtraso > 0) {
1080
- arquivo.addLine();
1081
- const multa = dadosBancario.multaAtraso.toFixed(2);
1082
- sequencia++;
1083
- arquivo.add("085");
1084
- arquivo.add("0001");
1085
- arquivo.add("3");
1086
- arquivo.add(sequencia.toString().padStart(5, "0"));
1087
- arquivo.add("R");
1088
- arquivo.add(" ");
1089
- arquivo.add("01");
1090
- arquivo.add("0");
1091
- arquivo.add("00000000");
1092
- arquivo.add("000000000000000");
1093
- arquivo.add("0");
1094
- arquivo.add("00000000");
1095
- arquivo.add("000000000000000");
1096
- arquivo.add("2");
1097
- arquivo.add(vencimento);
1098
- arquivo.add(multa.replace(".", "").padStart(15, "0"));
1099
- arquivo.add(" ".padEnd(10, " "));
1100
- arquivo.add(" ".padEnd(40, " "));
1101
- arquivo.add(" ".padEnd(40, " "));
1102
- arquivo.add(" ".padEnd(20, " "));
1103
- arquivo.add("00000000");
1104
- arquivo.add("000");
1105
- arquivo.add("00000");
1106
- arquivo.add(" ");
1107
- arquivo.add("000000000000");
1108
- arquivo.add(" ");
1109
- arquivo.add(" ");
1110
- arquivo.add("0");
1111
- arquivo.add("000000000");
1112
- }
1348
+ arquivo.add("000000000");
1113
1349
  arquivo.addLine();
1114
- quantidadeRegistro++;
1115
1350
  }
1116
- arquivo.add("085");
1117
- arquivo.add("0001");
1118
- arquivo.add("5");
1119
- arquivo.add(" ".padEnd(9, " "));
1120
- arquivo.add((sequencia + 3).toString().padStart(6, "0"));
1121
- arquivo.add(quantidadeRegistro.toString().padStart(6, "0"));
1122
- arquivo.add(total.toFixed(2).replace(".", "").padStart(17, "0"));
1123
- arquivo.add("0".padStart(6, "0"));
1124
- arquivo.add("0".padStart(17, "0"));
1125
- arquivo.add("0".padStart(6, "0"));
1126
- arquivo.add("0".padStart(17, "0"));
1127
- arquivo.add("0".padStart(6, "0"));
1128
- arquivo.add("0".padStart(17, "0"));
1129
- arquivo.add(" ".padStart(8, " "));
1130
- arquivo.add(" ".padStart(117, " "));
1131
- arquivo.addLine();
1132
- arquivo.add("085");
1133
- arquivo.add("9999");
1134
- arquivo.add("9");
1135
- arquivo.add(" ".padEnd(9, " "));
1136
- arquivo.add("000001");
1137
- arquivo.add((sequencia + 4).toString().padStart(6, "0"));
1138
- arquivo.add("000000");
1139
- arquivo.add(" ".padEnd(205, " "));
1140
- return {
1141
- download: remessa2,
1142
- arquivo: arquivo.getArquivo()
1143
- };
1144
- } catch (error) {
1145
- console.log(error);
1146
- return null;
1351
+ quantidadeRegistro++;
1147
1352
  }
1148
- });
1353
+ arquivo.add("085");
1354
+ arquivo.add("0001");
1355
+ arquivo.add("5");
1356
+ arquivo.add(" ".padEnd(9, " "));
1357
+ arquivo.add((sequencia + 3).toString().padStart(6, "0"));
1358
+ arquivo.add(quantidadeRegistro.toString().padStart(6, "0"));
1359
+ arquivo.add(total.toFixed(2).replace(".", "").padStart(17, "0"));
1360
+ arquivo.add("0".padStart(6, "0"));
1361
+ arquivo.add("0".padStart(17, "0"));
1362
+ arquivo.add("0".padStart(6, "0"));
1363
+ arquivo.add("0".padStart(17, "0"));
1364
+ arquivo.add("0".padStart(6, "0"));
1365
+ arquivo.add("0".padStart(17, "0"));
1366
+ arquivo.add(" ".padStart(8, " "));
1367
+ arquivo.add(" ".padStart(117, " "));
1368
+ arquivo.addLine();
1369
+ arquivo.add("085");
1370
+ arquivo.add("9999");
1371
+ arquivo.add("9");
1372
+ arquivo.add(" ".padEnd(9, " "));
1373
+ arquivo.add("000001");
1374
+ arquivo.add((sequencia + 4).toString().padStart(6, "0"));
1375
+ arquivo.add("000000");
1376
+ arquivo.add(" ".padEnd(205, " "));
1377
+ return {
1378
+ download: remessa2,
1379
+ arquivo: arquivo.getArquivo()
1380
+ };
1381
+ } catch (error) {
1382
+ console.log(error);
1383
+ return null;
1384
+ }
1149
1385
  }
1150
1386
 
1151
- // src/banks/bradesco/gerarRetorno.ts
1387
+ // src/banks/ailos/gerarRetorno.ts
1388
+ var import_date_fns6 = require("date-fns");
1152
1389
  function gerarRetorno2({ dados }) {
1153
1390
  try {
1154
1391
  const { arquivo } = dados;
@@ -1156,23 +1393,31 @@ function gerarRetorno2({ dados }) {
1156
1393
  let index = 0;
1157
1394
  for (const item of arquivo) {
1158
1395
  let linha = item;
1159
- const banco = linha.substring(0, 3);
1160
1396
  const codigoRetorno = linha.substring(15, 17);
1161
- if ((banco === "001" || banco === "085") && (codigoRetorno === "06" || codigoRetorno === "17")) {
1397
+ if (codigoRetorno === "06" || codigoRetorno === "17" || codigoRetorno === "03") {
1162
1398
  let segmento = linha.substring(13, 14);
1163
1399
  if (segmento === "T") {
1164
- let tipoDocumento = "";
1165
- let idDocumento = "";
1400
+ const motivo = linha.substring(213, 223).trim();
1166
1401
  const linhaDoc = linha.substring(105, 130).trimEnd();
1402
+ let tipoDocumento = "INDEFINIDO";
1403
+ let idDocumento = linhaDoc;
1167
1404
  if (linhaDoc.includes("-")) {
1168
- [tipoDocumento, idDocumento] = linha.split("-");
1169
- } else {
1170
- idDocumento = linhaDoc;
1405
+ const [tipoDoc, idDoc] = linhaDoc.split("-");
1406
+ tipoDocumento = tipoDoc;
1407
+ idDocumento = idDoc;
1171
1408
  }
1172
1409
  const especie = tipoDocumento.length ? tipoDocumento : "INDEFINIDO";
1173
1410
  linha = arquivo[index + 1];
1174
1411
  segmento = linha.substring(13, 14);
1175
1412
  if (segmento === "U") {
1413
+ let dataCredito;
1414
+ const dataCreditoString = linha.substring(145, 153);
1415
+ if (dataCreditoString && dataCreditoString !== "00000000") {
1416
+ dataCredito = (0, import_date_fns6.parse)(dataCreditoString, "ddMMyyyy", /* @__PURE__ */ new Date());
1417
+ } else {
1418
+ const dataOcorrenciaString = linha.substring(157, 165);
1419
+ dataCredito = (0, import_date_fns6.parse)(dataOcorrenciaString, "ddMMyyyy", /* @__PURE__ */ new Date());
1420
+ }
1176
1421
  const valorAbatimentoString = linha.substring(47, 62);
1177
1422
  const valorAbatimento = Number(valorAbatimentoString) / 100;
1178
1423
  const valorDescontoString = linha.substring(32, 47);
@@ -1184,15 +1429,23 @@ function gerarRetorno2({ dados }) {
1184
1429
  const valorMulta = 0;
1185
1430
  const descontos = valorAbatimento + valorDesconto;
1186
1431
  const valorTotal = valorPago - valorJuros + descontos;
1432
+ let rejeitado = false;
1433
+ let motivoRejeicao = "";
1434
+ if (codigoRetorno === "03") {
1435
+ rejeitado = true;
1436
+ motivoRejeicao = retornaMotivoRejeicao2(motivo);
1437
+ }
1187
1438
  const documento = {
1188
1439
  id_documento: idDocumento,
1189
1440
  especie,
1190
- valor: valorTotal,
1191
- valor_desconto: 0,
1192
- valor_juros: 0,
1193
- valor_multa: 0,
1194
- valor_total: 0,
1195
- data: /* @__PURE__ */ new Date()
1441
+ valor: valorPago,
1442
+ valor_multa: valorMulta,
1443
+ valor_juros: valorJuros,
1444
+ valor_desconto: valorDesconto,
1445
+ valor_total: valorTotal,
1446
+ data: dataCredito,
1447
+ rejeitado,
1448
+ motivo: motivoRejeicao
1196
1449
  };
1197
1450
  documentos.push(documento);
1198
1451
  }
@@ -1207,126 +1460,247 @@ function gerarRetorno2({ dados }) {
1207
1460
  return null;
1208
1461
  }
1209
1462
  }
1210
-
1211
- // src/banks/bradesco/index.ts
1212
- var bradesco = {
1213
- gerarDadosBoleto: gerarDadosBoleto2,
1214
- gerarPDF: gerarPDF2,
1215
- gerarRemessa: gerarRemessa2,
1216
- gerarRetorno: gerarRetorno2
1217
- };
1218
-
1219
- // src/banks/sicredi/gerarDadosBoleto.ts
1220
- function gerarDadosBoleto3({ dados }) {
1221
- try {
1222
- const { bancario, parcela } = dados;
1223
- parcela.valor = Number(parcela.valor);
1224
- const fatorVencimento = getFatorVencimento(parcela.vencimento);
1225
- const valor = getValor3(parcela.valor);
1226
- const nossoNumero = getNossoNumero(
1227
- parcela.numeroUnico,
1228
- bancario.agencia,
1229
- bancario.posto,
1230
- bancario.codigoCedente
1231
- );
1232
- let campoLivre = bancario.tipoCobranca + bancario.tipoCarteira + nossoNumero + bancario.agencia.padStart(4, "0") + bancario.posto.padStart(2, "0") + bancario.codigoCedente.padStart(5, "0") + 10;
1233
- const digitoCampoLivre = getDigitoCampoLivre(campoLivre);
1234
- campoLivre = campoLivre + digitoCampoLivre;
1235
- const digitoGeral = getDigitoGeral3(`7489${fatorVencimento}${valor}${campoLivre}`);
1236
- const codigoBarra2 = `7489${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
1237
- const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
1238
- const campo2 = copy(codigoBarra2, 25, 34);
1239
- const campo3 = copy(codigoBarra2, 35, 44);
1240
- const campo4 = copy(codigoBarra2, 5, 5);
1241
- const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
1242
- const digito1 = getDigito3(campo1);
1243
- const digito2 = getDigito3(campo2);
1244
- const digito3 = getDigito3(campo3);
1245
- const linhaDigitavel = campo1 + digito1 + campo2 + digito2 + campo3 + digito3 + campo4 + /*digito4*/
1246
- +campo5;
1247
- const dadosBoleto = {
1248
- linhaDigitavel,
1249
- fatorVencimento,
1250
- valor,
1251
- nossoNumero,
1252
- campoLivre,
1253
- digitoGeral,
1254
- codigoBarra: codigoBarra2
1255
- };
1256
- return dadosBoleto;
1257
- } catch (error) {
1258
- console.log("Falha ao gerar dados do boleto", error);
1259
- return null;
1260
- }
1261
- }
1262
- function getNossoNumero(id, agencia, posto, codigoCedente) {
1263
- let i = 19;
1264
- let j = 1;
1265
- let soma = 0;
1266
- let digito = 0;
1267
- const texto = agencia.padStart(4, "0") + posto.padStart(2, "0") + codigoCedente.padStart(5, "0") + id.padStart(8, "0");
1268
- while (i >= 1) {
1269
- j++;
1270
- if (j === 10)
1271
- j = 2;
1272
- const valor = Number(copy(texto, i, i));
1273
- soma += j * valor;
1274
- i--;
1275
- }
1276
- const restoDivisao = soma % 11;
1277
- digito = 11 - restoDivisao;
1278
- if (restoDivisao === 0 || restoDivisao === 1)
1279
- digito = 0;
1280
- return id.padStart(8, "0") + digito.toString();
1281
- }
1282
- function getValor3(valor) {
1283
- const valorFormatado = valor.toFixed(2).replace(/\D/g, "");
1284
- return valorFormatado.padStart(10, "0");
1285
- }
1286
- function getDigitoCampoLivre(texto) {
1287
- let i = 24;
1288
- let j = 1;
1289
- let soma = 0;
1290
- let digito = 0;
1291
- while (i >= 1) {
1292
- j++;
1293
- if (j === 10)
1294
- j = 2;
1295
- let valor = Number(copy(texto, i, i));
1296
- soma += valor * j;
1297
- i--;
1298
- }
1299
- const restoDivisao = soma % 11;
1300
- if (restoDivisao > 1)
1301
- digito = 11 - restoDivisao;
1302
- return String(digito);
1303
- }
1304
- function getDigitoGeral3(texto) {
1305
- let i = 43;
1306
- let j = 1;
1307
- let soma = 0;
1308
- let digito = 0;
1309
- while (i >= 1) {
1310
- j++;
1311
- if (j === 10)
1312
- j = 2;
1313
- const valor = Number(copy(texto, i, i));
1314
- soma += j * valor;
1315
- i--;
1316
- }
1317
- const restoDivisao = soma % 11;
1318
- digito = 11 - restoDivisao;
1319
- if (digito <= 1 || digito >= 10)
1320
- digito = 1;
1321
- return String(digito);
1322
- }
1323
- function getDigito3(texto) {
1324
- let i = texto.length;
1325
- let j = 1;
1326
- let total = 0;
1327
- let soma = 0;
1328
- let digito = 0;
1329
- while (i >= 1) {
1463
+ function retornaMotivoRejeicao2(codigo) {
1464
+ switch (codigo) {
1465
+ case "01":
1466
+ return "C\xF3digo do Banco Inv\xE1lido";
1467
+ case "02":
1468
+ return "C\xF3digo do Registro Detalhe Inv\xE1lido";
1469
+ case "03":
1470
+ return "C\xF3digo do Segmento Inv\xE1lido";
1471
+ case "04":
1472
+ return "C\xF3digo de Movimento N\xE3o Permitido para Carteira";
1473
+ case "05":
1474
+ return "C\xF3digo de Movimento Inv\xE1lido";
1475
+ case "06":
1476
+ return "Tipo/N\xFAmero de Inscri\xE7\xE3o do Cedente Inv\xE1lidos";
1477
+ case "07":
1478
+ return "Ag\xEAncia/Conta/DV Inv\xE1lido";
1479
+ case "08":
1480
+ return "Nosso N\xFAmero Inv\xE1lido";
1481
+ case "09":
1482
+ return "Nosso N\xFAmero Duplicado";
1483
+ case "10":
1484
+ return "Carteira Inv\xE1lida";
1485
+ case "11":
1486
+ return "Forma de Cadastramento do T\xEDtulo Inv\xE1lido";
1487
+ case "12":
1488
+ return "Tipo de Documento Inv\xE1lido";
1489
+ case "13":
1490
+ return "Identifica\xE7\xE3o da Emiss\xE3o do Boleto Inv\xE1lida";
1491
+ case "14":
1492
+ return "Identifica\xE7\xE3o da Distribui\xE7\xE3o do Boleto Inv\xE1lida";
1493
+ case "15":
1494
+ return "Caracter\xEDsticas da Cobran\xE7a Incompat\xEDveis";
1495
+ case "16":
1496
+ return "Data de Vencimento Inv\xE1lida";
1497
+ case "17":
1498
+ return "Data de Vencimento Anterior \xE0 Data de Emiss\xE3o";
1499
+ case "18":
1500
+ return "Vencimento Fora do Prazo de Opera\xE7\xE3o";
1501
+ case "19":
1502
+ return "T\xEDtulo a Cargo de Bancos Correspondentes com Vencimento Inferior a XX Dias";
1503
+ case "20":
1504
+ return "Valor do T\xEDtulo Inv\xE1lido";
1505
+ case "21":
1506
+ return "Esp\xE9cie do T\xEDtulo Inv\xE1lida";
1507
+ case "22":
1508
+ return "Esp\xE9cie do T\xEDtulo N\xE3o Permitida para a Carteira";
1509
+ case "23":
1510
+ return "Aceite Inv\xE1lido";
1511
+ case "24":
1512
+ return "Data da Emiss\xE3o Inv\xE1lida";
1513
+ case "25":
1514
+ return "Data da Emiss\xE3o Posterior a Data de Entrada";
1515
+ case "26":
1516
+ return "C\xF3digo de Juros de Mora Inv\xE1lido";
1517
+ case "27":
1518
+ return "Vlr/Taxa de Juros de Mora Inv\xE1lido";
1519
+ case "28":
1520
+ return "C\xF3digo do Desconto Inv\xE1lido";
1521
+ case "29":
1522
+ return "Valor do Desconto Maior ou Igual ao Valor do T\xEDtulo";
1523
+ case "30":
1524
+ return "Desconto a Conceder N\xE3o Confere";
1525
+ case "31":
1526
+ return "Concess\xE3o de Desconto - J\xE1 Existe Desconto Anterior";
1527
+ case "33":
1528
+ return "Valor do Abatimento Inv\xE1lido";
1529
+ case "34":
1530
+ return "Valor do Abatimento Maior ou Igual ao Valor do T\xEDtulo";
1531
+ case "35":
1532
+ return "Valor a Conceder N\xE3o Confere";
1533
+ case "36":
1534
+ return "Concess\xE3o de Abatimento - J\xE1 Existe Abatimento Anterior";
1535
+ case "37":
1536
+ return "C\xF3digo para Protesto Inv\xE1lido";
1537
+ case "38":
1538
+ return "Prazo para Protesto Inv\xE1lido";
1539
+ case "39":
1540
+ return "Pedido de Protesto N\xE3o Permitido para o T\xEDtulo";
1541
+ case "40":
1542
+ return "T\xEDtulo com Ordem de Protesto Emitida";
1543
+ case "41":
1544
+ return "Pedido de Cancelamento/Susta\xE7\xE3o para T\xEDtulos sem Instru\xE7\xE3o de Protesto";
1545
+ case "42":
1546
+ return "C\xF3digo para Baixa/Devolu\xE7\xE3o Inv\xE1lido";
1547
+ case "43":
1548
+ return "Prazo para Baixa/Devolu\xE7\xE3o Inv\xE1lido";
1549
+ case "44":
1550
+ return "C\xF3digo da Moeda Inv\xE1lido";
1551
+ case "45":
1552
+ return "Nome do Sacado N\xE3o Informado";
1553
+ case "46":
1554
+ return "Tipo/N\xFAmero de Inscri\xE7\xE3o do Sacado Inv\xE1lidos";
1555
+ case "47":
1556
+ return "Endere\xE7o do Sacado N\xE3o Informado";
1557
+ case "48":
1558
+ return "CEP Inv\xE1lido";
1559
+ case "49":
1560
+ return "CEP Sem Pra\xE7a de Cobran\xE7a (N\xE3o Localizado)";
1561
+ case "50":
1562
+ return "CEP Referente a um Banco Correspondente";
1563
+ case "51":
1564
+ return "CEP incompat\xEDvel com a Unidade da Federa\xE7\xE3o";
1565
+ case "52":
1566
+ return "Unidade da Federa\xE7\xE3o Inv\xE1lida";
1567
+ case "53":
1568
+ return "Tipo/N\xFAmero de Inscri\xE7\xE3o do Sacador/Avalista Inv\xE1lidos";
1569
+ case "54":
1570
+ return "Sacador/Avalista N\xE3o Informado";
1571
+ case "55":
1572
+ return "Nosso n\xFAmero no Banco Correspondente N\xE3o Informado";
1573
+ case "56":
1574
+ return "C\xF3digo do Banco Correspondente N\xE3o Informado";
1575
+ case "57":
1576
+ return "C\xF3digo da Multa Inv\xE1lido";
1577
+ case "58":
1578
+ return "Data da Multa Inv\xE1lida";
1579
+ case "59":
1580
+ return "Valor/Percentual da Multa Inv\xE1lido";
1581
+ case "60":
1582
+ return "Movimento para T\xEDtulo N\xE3o Cadastrado";
1583
+ case "61":
1584
+ return "Altera\xE7\xE3o da Ag\xEAncia Cobradora/DV Inv\xE1lida";
1585
+ case "62":
1586
+ return "Tipo de Impress\xE3o Inv\xE1lido";
1587
+ case "63":
1588
+ return "Entrada para T\xEDtulo j\xE1 cadastrado";
1589
+ case "64":
1590
+ return "N\xFAmero da Linha Inv\xE1lido";
1591
+ case "65":
1592
+ return "C\xF3digo do Banco para D\xE9bito Inv\xE1lido";
1593
+ case "66":
1594
+ return "Ag\xEAncia/Conta/DV para D\xE9bito Inv\xE1lido";
1595
+ case "79":
1596
+ return "Data Juros de Mora Inv\xE1lido";
1597
+ case "80":
1598
+ return "Data do Desconto Inv\xE1lida";
1599
+ case "86":
1600
+ return "Seu N\xFAmero Inv\xE1lido";
1601
+ case "89":
1602
+ return "E-mail/SMS devolvido - endere\xE7o de e-mail ou n\xFAmero do celular incorreto";
1603
+ case "91":
1604
+ return "E-mail/n\xFAmero do celular do sacado n\xE3o informado";
1605
+ case "96":
1606
+ return "N\xFAmero do Convenio invalido";
1607
+ case "97":
1608
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o do prazo limite de recebimento";
1609
+ case "98":
1610
+ return "Rejei\xE7\xE3o de dispensa de prazo limite de recebimento";
1611
+ case "99":
1612
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o do n\xFAmero do t\xEDtulo dado pelo cedente";
1613
+ case "A2":
1614
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o dos dados do sacado";
1615
+ case "A3":
1616
+ return "Rejei\xE7\xE3o da altera\xE7\xE3o dos dados do sacador/avalista";
1617
+ case "A4":
1618
+ return "Sacado DDA";
1619
+ case "A4R1":
1620
+ return "Sacado DDA / Registro online";
1621
+ default:
1622
+ return "Motivo de rejei\xE7\xE3o desconhecido";
1623
+ }
1624
+ }
1625
+
1626
+ // src/banks/ailos/index.ts
1627
+ var ailos = {
1628
+ gerarDadosBoleto: gerarDadosBoleto2,
1629
+ gerarPDF: gerarPDF2,
1630
+ gerarRemessa: gerarRemessa2,
1631
+ gerarRetorno: gerarRetorno2
1632
+ };
1633
+
1634
+ // src/banks/bradesco/gerarDadosBoleto.ts
1635
+ function gerarDadosBoleto3({ dados }) {
1636
+ try {
1637
+ const { bancario, parcela } = dados;
1638
+ parcela.valor = Number(parcela.valor);
1639
+ const fatorVencimento = getFatorVencimento(parcela.vencimento);
1640
+ const valor = getValor3(parcela.valor);
1641
+ const convenio = padLeft(bancario.convenio, 6);
1642
+ const numeroDocumento = padLeft(`${parcela.id_boleto}`, 9);
1643
+ const nossoNumero = padLeft(bancario.numero + bancario.numero_dv, 8) + numeroDocumento;
1644
+ const campoLivre = convenio + nossoNumero + padLeft(bancario.carteira, 2);
1645
+ const digitoGeral = getDigitoGeral3(`0859${fatorVencimento}${valor}${campoLivre}`);
1646
+ const codigoBarra2 = `0859${digitoGeral}${fatorVencimento}${valor}${campoLivre}`;
1647
+ const campo1 = copy(codigoBarra2, 1, 3) + copy(codigoBarra2, 4, 4) + copy(codigoBarra2, 20, 24);
1648
+ const campo2 = copy(codigoBarra2, 25, 34);
1649
+ const campo3 = copy(codigoBarra2, 35, 44);
1650
+ const campo4 = copy(codigoBarra2, 5, 5);
1651
+ const campo5 = copy(codigoBarra2, 6, 9) + copy(codigoBarra2, 10, 19);
1652
+ const digito1 = getDigito3(campo1);
1653
+ const digito2 = getDigito3(campo2);
1654
+ const digito3 = getDigito3(campo3);
1655
+ const digito4 = getDigito3(campo4);
1656
+ const linhaDigitavel = campo1 + digito1 + campo2 + digito2 + campo3 + digito3 + campo4 + digito4 + campo5;
1657
+ const dadosBoleto = {
1658
+ linhaDigitavel,
1659
+ fatorVencimento,
1660
+ valor,
1661
+ convenio,
1662
+ nossoNumero,
1663
+ campoLivre,
1664
+ digitoGeral,
1665
+ codigoBarra: codigoBarra2,
1666
+ numeroDocumento
1667
+ };
1668
+ return dadosBoleto;
1669
+ } catch (error) {
1670
+ console.log("Falha ao gerar dados do boleto", error);
1671
+ return null;
1672
+ }
1673
+ }
1674
+ function getValor3(valor) {
1675
+ const valorFormatado = valor.toFixed(2).replace(/\D/g, "");
1676
+ return padLeft(valorFormatado, 10);
1677
+ }
1678
+ function getDigitoGeral3(texto) {
1679
+ let i = 43;
1680
+ let j = 1;
1681
+ let soma = 0;
1682
+ let digito = 0;
1683
+ while (i >= 1) {
1684
+ j++;
1685
+ if (j === 10)
1686
+ j = 2;
1687
+ const valor = Number(copy(texto, i, i));
1688
+ soma += j * valor;
1689
+ i--;
1690
+ }
1691
+ const restoDivisao = soma % 11;
1692
+ digito = 11 - restoDivisao;
1693
+ if (digito === 0 || digito === 1 || digito > 9)
1694
+ digito = 1;
1695
+ return String(digito);
1696
+ }
1697
+ function getDigito3(texto) {
1698
+ let i = texto.length;
1699
+ let j = 1;
1700
+ let total = 0;
1701
+ let soma = 0;
1702
+ let digito = 0;
1703
+ while (i >= 1) {
1330
1704
  j = j === 1 ? 2 : 1;
1331
1705
  let valor = Number(copy(texto, i, i));
1332
1706
  total = valor * j;
@@ -1345,22 +1719,20 @@ function getDigito3(texto) {
1345
1719
  return String(digito);
1346
1720
  }
1347
1721
 
1348
- // src/banks/sicredi/gerarPDF.ts
1349
- var import_bwip_js3 = __toESM(require("bwip-js"));
1722
+ // src/banks/bradesco/gerarPDF.ts
1723
+ var import_bwip_js4 = __toESM(require("bwip-js"));
1350
1724
  function gerarPDF3(_0) {
1351
1725
  return __async(this, arguments, function* ({ dados }) {
1352
1726
  try {
1353
- const { generatePDF, dadosPDF } = dados;
1354
- if (!dadosPDF.pagador.cpfcnpj) {
1355
- throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
1356
- }
1357
- const codigoBarra2 = yield import_bwip_js3.default.toBuffer({
1727
+ const { dadosPDF, generatePDF } = dados;
1728
+ const codigoBarra2 = yield import_bwip_js4.default.toBuffer({
1358
1729
  bcid: "interleaved2of5",
1359
1730
  text: dadosPDF.boleto.codigoBarra,
1360
1731
  height: 20
1361
1732
  });
1362
- dadosPDF.beneficiario.dadosBancario.agencia = dadosPDF.beneficiario.dadosBancario.agencia.padStart(4, "0");
1363
- dadosPDF.boleto.linhaDigitavel = maskFormat_default.codigoBarra(dadosPDF.boleto.linhaDigitavel);
1733
+ dadosPDF.beneficiario.dadosBancarios.agencia = dadosPDF.beneficiario.dadosBancarios.agencia.padStart(4, "0");
1734
+ dadosPDF.beneficiario.dadosBancarios.conta = dadosPDF.beneficiario.dadosBancarios.conta.padStart(7, "0");
1735
+ dadosPDF.boleto.codigoBarra = maskFormat_default.codigoBarra(dadosPDF.boleto.codigoBarra);
1364
1736
  dadosPDF.boleto.codigoBarraImage = codigoBarra2.toString("base64");
1365
1737
  dadosPDF.beneficiario.cnpj = maskFormat_default.retornaCpfCnpjFormatado(
1366
1738
  dadosPDF.beneficiario.cnpj
@@ -1371,7 +1743,6 @@ function gerarPDF3(_0) {
1371
1743
  dadosPDF.pagador.endereco.cep = maskFormat_default.retornaCEPFormatado(
1372
1744
  dadosPDF.pagador.endereco.cep
1373
1745
  );
1374
- dadosPDF.pagador.cpfcnpj = maskFormat_default.retornaCpfCnpjFormatado(dadosPDF.pagador.cpfcnpj);
1375
1746
  dadosPDF.boleto.valorAcrescimo = maskFormat_default.numberToReal(
1376
1747
  dadosPDF.boleto.valorAcrescimo
1377
1748
  );
@@ -1381,7 +1752,6 @@ function gerarPDF3(_0) {
1381
1752
  dadosPDF.boleto.valorDescontoAbatimento = maskFormat_default.numberToReal(
1382
1753
  dadosPDF.boleto.valorDescontoAbatimento
1383
1754
  );
1384
- const valorDocumento = Number(dadosPDF.boleto.valorDocumento);
1385
1755
  dadosPDF.boleto.valorDocumento = maskFormat_default.numberToReal(
1386
1756
  dadosPDF.boleto.valorDocumento
1387
1757
  );
@@ -1392,26 +1762,8 @@ function gerarPDF3(_0) {
1392
1762
  if (dadosPDF.boleto.quantidade) {
1393
1763
  dadosPDF.boleto.quantidade = maskFormat_default.numberToReal(dadosPDF.boleto.quantidade);
1394
1764
  }
1395
- const jurosMes = dadosPDF.beneficiario.dadosBancario.juros;
1396
- const jurosDia = jurosMes / 100 / 30 * valorDocumento;
1397
- if (jurosDia > 0) {
1398
- dadosPDF.boleto.instrucao1 = `COBRAR JUROS DE R$${maskFormat_default.numberToReal(jurosDia)} AO DIA, AP\xD3S O VENCIMENTO`;
1399
- }
1400
- const descontoVencimento = dadosPDF.boleto.desconto > 0 ? dadosPDF.boleto.desconto : dadosPDF.beneficiario.dadosBancario.desconto > 0 ? dadosPDF.beneficiario.dadosBancario.desconto : 0;
1401
- if (descontoVencimento > 0) {
1402
- dadosPDF.boleto.instrucao2 = `AT\xC9 O VENCIMENTO, CONCEDER DESCONTO DE ${descontoVencimento}%`;
1403
- }
1404
- const multaAtraso = dadosPDF.beneficiario.dadosBancario.multa || 0;
1405
- if (multaAtraso > 0) {
1406
- dadosPDF.boleto.instrucao3 = `MULTA DE ${multaAtraso}%`;
1407
- }
1408
- const protestoDias = dadosPDF.beneficiario.dadosBancario.protesto || 0;
1409
- if (protestoDias > 0) {
1410
- dadosPDF.boleto.instrucao4 = `PROTESTAR AP\xD3S ${protestoDias} DIAS CORRIDOS DO VENCIMENTO`;
1411
- }
1412
1765
  dadosPDF.boleto.valor = maskFormat_default.numberToReal(dadosPDF.boleto.valor);
1413
- dadosPDF.pagador.isCnpj = dadosPDF.pagador.cpfcnpj.length > 14;
1414
- const content = compileHbs(getPathTemplates("sicredi-boleto.hbs"), dadosPDF);
1766
+ const content = compileHbs(getPathTemplates("bradesco-boleto.hbs"), dadosPDF);
1415
1767
  const config = {
1416
1768
  displayHeaderFooter: false,
1417
1769
  path: "./boleto.pdf",
@@ -1434,225 +1786,303 @@ function gerarPDF3(_0) {
1434
1786
  dados: pdfBase64
1435
1787
  };
1436
1788
  } catch (error) {
1437
- console.log(error);
1438
- if (error instanceof Error) {
1439
- return {
1440
- erro: true,
1441
- dados: error.message
1442
- };
1443
- }
1444
1789
  return {
1445
1790
  erro: true,
1446
- dados: "Falha ao gerar impress\xE3o do boleto"
1791
+ dados: null
1447
1792
  };
1448
1793
  }
1449
1794
  });
1450
1795
  }
1451
1796
 
1452
- // src/banks/sicredi/gerarRemessa.ts
1453
- var import_date_fns6 = require("date-fns");
1454
- function gerarRemessa3({ dados }) {
1455
- try {
1456
- const { dadosBancario, beneficiario, boletos } = dados.remessa;
1457
- const arquivo = new Arquivo();
1458
- const data = /* @__PURE__ */ new Date();
1459
- let protestar = "00";
1460
- let negativar = "0000";
1461
- switch (dadosBancario.tipo_protesto) {
1462
- case "Nenhum":
1463
- protestar = "00";
1464
- negativar = "0000";
1465
- break;
1466
- case "Protestar":
1467
- protestar = "06";
1468
- negativar = "0000";
1469
- break;
1470
- case "Negativar":
1471
- protestar = "00";
1472
- negativar = "06" + String(dadosBancario.diasProtesto).padStart(2, "0");
1473
- break;
1474
- default:
1475
- protestar = "00";
1476
- negativar = "0000";
1477
- break;
1478
- }
1479
- arquivo.add("01REMESSA");
1480
- arquivo.add("01");
1481
- arquivo.add("COBRANCA".padEnd(15, " "));
1482
- arquivo.add(dadosBancario.codigo_cedente);
1483
- arquivo.add(beneficiario.cnpj);
1484
- arquivo.add(" ".padEnd(31, " "));
1485
- arquivo.add("748");
1486
- arquivo.add("SICREDI".padEnd(15, " "));
1487
- arquivo.add((0, import_date_fns6.format)(data, "yyyyMMdd"));
1488
- arquivo.add(" ".padEnd(8, " "));
1489
- arquivo.add(dadosBancario.numeroRemessa.padStart(7, "0"));
1490
- arquivo.add(" ".padEnd(273, " "));
1491
- arquivo.add("2.00");
1492
- arquivo.add("000001");
1493
- arquivo.addLine();
1494
- let sequencia = 2;
1495
- let total = 0;
1496
- for (const boleto of boletos) {
1497
- const { pagador } = boleto;
1498
- total += Number(boleto.valor);
1499
- let tipoInscricao = pagador.pessoa === "F" ? "1" : "2";
1500
- let desconto = "0000000000000";
1501
- let dataDesconto = "000000";
1502
- if (boleto.desconto) {
1503
- desconto = boleto.desconto.toFixed(2).replace(".", "").padStart(13, "0");
1504
- dataDesconto = (0, import_date_fns6.format)(new Date(boleto.vencimento), "ddMMyy");
1505
- }
1506
- if (!boleto.desconto && dadosBancario.descontoPagamento) {
1507
- desconto = dadosBancario.descontoPagamento.toFixed(2).replace(".", "").padStart(13, "0");
1508
- dataDesconto = (0, import_date_fns6.format)(new Date(boleto.vencimento), "ddMMyy");
1509
- }
1510
- let valorJurosDias = Number(boleto.valor) * Number(dadosBancario.jurosMes) / 100 / 30;
1511
- let multaAtraso = String(dadosBancario.multaAtraso * 100);
1512
- arquivo.add("1");
1513
- arquivo.add("AAA");
1514
- arquivo.add(" ".padEnd(12, " "));
1515
- arquivo.add("AAA");
1516
- arquivo.add(" ".padEnd(28, " "));
1517
- arquivo.add(boleto.nossoNumero.padEnd(9, " "));
1518
- arquivo.add(" ".padEnd(6, " "));
1519
- arquivo.add((0, import_date_fns6.format)(new Date(boleto.emissao), "yyyyMMdd"));
1520
- arquivo.add(" ");
1521
- arquivo.add("N");
1522
- arquivo.add(" ");
1523
- arquivo.add("B");
1797
+ // src/banks/bradesco/gerarRemessa.ts
1798
+ var import_date_fns7 = require("date-fns");
1799
+ function gerarRemessa3(_0) {
1800
+ return __async(this, arguments, function* ({ dados }) {
1801
+ try {
1802
+ const { dadosBancario, beneficiario, boletos } = dados.remessa;
1803
+ const arquivo = new Arquivo();
1804
+ const dataAtual = /* @__PURE__ */ new Date();
1805
+ const data = (0, import_date_fns7.format)(dataAtual, "ddMMyyyy");
1806
+ const hora = (0, import_date_fns7.format)(dataAtual, "HHmmss");
1807
+ const convenio = dadosBancario.convenio.padStart(7, "0");
1808
+ const numero = dadosBancario.conta.padStart(7, "0") + dadosBancario.contaDigito;
1809
+ const remessa2 = `REM${convenio}-${numero}-${data}.REM`;
1810
+ arquivo.add("085");
1524
1811
  arquivo.add("0000");
1525
- arquivo.add(" ".padEnd(4, " "));
1526
- arquivo.add("0".padEnd(10, "0"));
1527
- arquivo.add(multaAtraso.padStart(4, "0"));
1528
- arquivo.add(" ".padEnd(12, " "));
1529
- arquivo.add("01");
1530
- arquivo.add(boleto.identificacaoTitulo.padEnd(10, " "));
1531
- arquivo.add((0, import_date_fns6.format)(new Date(boleto.vencimento), "ddMMyy"));
1532
- arquivo.add(Number(boleto.valor).toFixed(2).replace(".", "").padStart(13, "0"));
1533
- arquivo.add(" ".padEnd(9, " "));
1534
- arquivo.add("A");
1535
- arquivo.add(boleto.aceite);
1536
- arquivo.add((0, import_date_fns6.format)(new Date(boleto.emissao), "ddMMyy"));
1537
- arquivo.add(protestar);
1538
- arquivo.add(String(dadosBancario.diasProtesto).padStart(2, "0"));
1539
- arquivo.add(Number(valorJurosDias).toFixed(2).replace(".", "").padStart(13, "0"));
1540
- arquivo.add(dataDesconto);
1541
- arquivo.add(desconto);
1542
- arquivo.add(negativar);
1543
- arquivo.add("0".padEnd(22, "0"));
1544
- arquivo.add(tipoInscricao);
1545
1812
  arquivo.add("0");
1546
- arquivo.add(pagador.cpfCnpj.padStart(14, "0"));
1547
- arquivo.add(removerCaracterEspecial(pagador.nome).substring(0, 40).padEnd(40, " "));
1548
- arquivo.add(removerCaracterEspecial(pagador.endereco.logradouro).substring(0, 40).padEnd(40, " "));
1549
- arquivo.add("0".padEnd(11, "0"));
1813
+ arquivo.add(" ");
1814
+ arquivo.add("2");
1815
+ arquivo.add(beneficiario.cnpj);
1816
+ arquivo.add(dadosBancario.convenio.padEnd(20, " "));
1817
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1818
+ arquivo.add(dadosBancario.agencia);
1819
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1820
+ arquivo.add(dadosBancario.contaDigito);
1550
1821
  arquivo.add(" ");
1551
- arquivo.add(pagador.endereco.cep.padEnd(8, " "));
1822
+ arquivo.add(beneficiario.nome.substring(0, 30).padEnd(30, " "));
1823
+ arquivo.add("AILOS".padEnd(30, " "));
1824
+ arquivo.add(" ");
1825
+ arquivo.add("1");
1826
+ arquivo.add(data);
1827
+ arquivo.add(hora);
1828
+ arquivo.add(dadosBancario.numeroRemessa.padStart(6, "0"));
1829
+ arquivo.add("087");
1552
1830
  arquivo.add("00000");
1553
- arquivo.add(" ".padEnd(55, " "));
1554
- arquivo.add(String(sequencia).padStart(6, "0"));
1831
+ arquivo.add(" ".padEnd(20, " "));
1832
+ arquivo.add(" ".padEnd(20, " "));
1833
+ arquivo.add(" ".padEnd(29, " "));
1834
+ arquivo.addLine();
1835
+ arquivo.add("085");
1836
+ arquivo.add("0001");
1837
+ arquivo.add("1");
1838
+ arquivo.add("R");
1839
+ arquivo.add("01");
1840
+ arquivo.add(" ");
1841
+ arquivo.add("045");
1842
+ arquivo.add(" ");
1843
+ arquivo.add("2");
1844
+ arquivo.add(beneficiario.cnpj.padStart(15, "0"));
1845
+ arquivo.add(dadosBancario.convenio.padEnd(20, " "));
1846
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1847
+ arquivo.add(dadosBancario.agenciaDigito);
1848
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1849
+ arquivo.add(dadosBancario.contaDigito);
1850
+ arquivo.add(" ");
1851
+ arquivo.add(beneficiario.nome.substring(0, 30).padEnd(30, " "));
1852
+ arquivo.add(" ".padEnd(40, " "));
1853
+ arquivo.add(" ".padEnd(40, " "));
1854
+ arquivo.add(dadosBancario.numeroRemessa.padStart(8, "0"));
1855
+ arquivo.add(data);
1856
+ arquivo.add("00000000");
1857
+ arquivo.add(" ".padEnd(33, " "));
1858
+ arquivo.addLine();
1859
+ let sequencia = 1;
1860
+ let quantidadeRegistro = 1;
1861
+ let total = 0;
1862
+ for (const boleto of boletos) {
1863
+ const { pagador } = boleto;
1864
+ const vencimento = (0, import_date_fns7.format)(new Date(boleto.vencimento), "ddMMyyyy");
1865
+ total += Number(boleto.valor);
1866
+ const codigoJuro = dadosBancario.jurosMes > 0 ? "2" : "3";
1867
+ const juros = dadosBancario.jurosMes > 0 ? dadosBancario.jurosMes.toFixed(2) : "000000000000000";
1868
+ const jurosVencimento = (0, import_date_fns7.format)(
1869
+ (0, import_date_fns7.addDays)(new Date(boleto.vencimento), 1),
1870
+ "ddMMyyyy"
1871
+ );
1872
+ const codigoDesconto = dadosBancario.descontoPagamento > 0 ? "2" : "0";
1873
+ const desconto = dadosBancario.descontoPagamento > 0 ? dadosBancario.descontoPagamento.toFixed(2) : "000000000000000";
1874
+ const protesto = dadosBancario.diasProtesto > 0 ? "1" : "3";
1875
+ const diasProtesto = protesto === "1" ? dadosBancario.diasProtesto.toString() : "00";
1876
+ arquivo.add("085");
1877
+ arquivo.add("0001");
1878
+ arquivo.add("3");
1879
+ arquivo.add(sequencia.toString().padStart(5, "0"));
1880
+ arquivo.add("P");
1881
+ arquivo.add(" ");
1882
+ arquivo.add("01");
1883
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1884
+ arquivo.add(dadosBancario.agenciaDigito);
1885
+ arquivo.add(dadosBancario.conta.padStart(12, "0"));
1886
+ arquivo.add(dadosBancario.contaDigito);
1887
+ arquivo.add(" ");
1888
+ arquivo.add(boleto.nossoNumero.padEnd(20, " "));
1889
+ arquivo.add("1");
1890
+ arquivo.add("1");
1891
+ arquivo.add("1");
1892
+ arquivo.add("2");
1893
+ arquivo.add("2");
1894
+ arquivo.add(`${boleto.numeroDocumento}/${boleto.parcela}`.padEnd(15, " "));
1895
+ arquivo.add(vencimento);
1896
+ arquivo.add(
1897
+ Number(boleto.valor).toFixed(2).replace(".", "").padStart(15, "0")
1898
+ );
1899
+ arquivo.add(dadosBancario.agencia.padStart(5, "0"));
1900
+ arquivo.add(dadosBancario.agenciaDigito);
1901
+ arquivo.add("02");
1902
+ arquivo.add("A");
1903
+ arquivo.add(data);
1904
+ arquivo.add(codigoJuro);
1905
+ arquivo.add(jurosVencimento);
1906
+ arquivo.add(juros.replace(".", "").padStart(15, "0"));
1907
+ arquivo.add(codigoDesconto);
1908
+ arquivo.add(vencimento);
1909
+ arquivo.add(desconto.replace(".", "").padStart(15, "0"));
1910
+ arquivo.add("000000000000000");
1911
+ arquivo.add("000000000000000");
1912
+ arquivo.add(boleto.identificacaoTitulo.padEnd(25, " "));
1913
+ arquivo.add(protesto);
1914
+ arquivo.add(diasProtesto.padStart(1, "0"));
1915
+ arquivo.add("2");
1916
+ arquivo.add(" ");
1917
+ arquivo.add("09");
1918
+ arquivo.add("0000000000");
1919
+ arquivo.add(" ");
1920
+ sequencia++;
1921
+ arquivo.addLine();
1922
+ let tipoInscricao = "1";
1923
+ if (pagador.pessoa === "F") {
1924
+ tipoInscricao = "1";
1925
+ } else {
1926
+ tipoInscricao = "2";
1927
+ }
1928
+ pagador.endereco.logradouro = `${pagador.endereco.logradouro.substring(0, 32).padEnd(32, " ")}${pagador.endereco.numero.padEnd(8, " ")}`;
1929
+ arquivo.add("085");
1930
+ arquivo.add("0001");
1931
+ arquivo.add("3");
1932
+ arquivo.add(sequencia.toString().padStart(5, "0"));
1933
+ arquivo.add("Q");
1934
+ arquivo.add(" ");
1935
+ arquivo.add("01");
1936
+ arquivo.add(tipoInscricao);
1937
+ arquivo.add(pagador.cpfCnpj.padStart(15, "0"));
1938
+ arquivo.add(pagador.nome.substring(0, 40).padEnd(40, " "));
1939
+ arquivo.add(pagador.endereco.logradouro.substring(0, 40).padEnd(40, " "));
1940
+ arquivo.add(pagador.endereco.bairro.substring(0, 15).padEnd(15, " "));
1941
+ arquivo.add(pagador.endereco.cep.substring(0, 5).padStart(5, "0"));
1942
+ arquivo.add(pagador.endereco.cep.substring(5, 7).padStart(3, "0"));
1943
+ arquivo.add(pagador.endereco.municipio.substring(0, 15).padEnd(15, " "));
1944
+ arquivo.add(pagador.endereco.uf.padEnd(2, " "));
1945
+ arquivo.add("0");
1946
+ arquivo.add("000000000000000");
1947
+ arquivo.add(" ".padEnd(40, " "));
1948
+ arquivo.add("000");
1949
+ arquivo.add(" ".padEnd(20, " "));
1950
+ arquivo.add(" ".padEnd(8, " "));
1951
+ dadosBancario.multaAtraso = Number(dadosBancario.multaAtraso || 0);
1952
+ if (dadosBancario.multaAtraso > 0) {
1953
+ arquivo.addLine();
1954
+ const multa = dadosBancario.multaAtraso.toFixed(2);
1955
+ sequencia++;
1956
+ arquivo.add("085");
1957
+ arquivo.add("0001");
1958
+ arquivo.add("3");
1959
+ arquivo.add(sequencia.toString().padStart(5, "0"));
1960
+ arquivo.add("R");
1961
+ arquivo.add(" ");
1962
+ arquivo.add("01");
1963
+ arquivo.add("0");
1964
+ arquivo.add("00000000");
1965
+ arquivo.add("000000000000000");
1966
+ arquivo.add("0");
1967
+ arquivo.add("00000000");
1968
+ arquivo.add("000000000000000");
1969
+ arquivo.add("2");
1970
+ arquivo.add(vencimento);
1971
+ arquivo.add(multa.replace(".", "").padStart(15, "0"));
1972
+ arquivo.add(" ".padEnd(10, " "));
1973
+ arquivo.add(" ".padEnd(40, " "));
1974
+ arquivo.add(" ".padEnd(40, " "));
1975
+ arquivo.add(" ".padEnd(20, " "));
1976
+ arquivo.add("00000000");
1977
+ arquivo.add("000");
1978
+ arquivo.add("00000");
1979
+ arquivo.add(" ");
1980
+ arquivo.add("000000000000");
1981
+ arquivo.add(" ");
1982
+ arquivo.add(" ");
1983
+ arquivo.add("0");
1984
+ arquivo.add("000000000");
1985
+ }
1986
+ arquivo.addLine();
1987
+ quantidadeRegistro++;
1988
+ }
1989
+ arquivo.add("085");
1990
+ arquivo.add("0001");
1991
+ arquivo.add("5");
1992
+ arquivo.add(" ".padEnd(9, " "));
1993
+ arquivo.add((sequencia + 3).toString().padStart(6, "0"));
1994
+ arquivo.add(quantidadeRegistro.toString().padStart(6, "0"));
1995
+ arquivo.add(total.toFixed(2).replace(".", "").padStart(17, "0"));
1996
+ arquivo.add("0".padStart(6, "0"));
1997
+ arquivo.add("0".padStart(17, "0"));
1998
+ arquivo.add("0".padStart(6, "0"));
1999
+ arquivo.add("0".padStart(17, "0"));
2000
+ arquivo.add("0".padStart(6, "0"));
2001
+ arquivo.add("0".padStart(17, "0"));
2002
+ arquivo.add(" ".padStart(8, " "));
2003
+ arquivo.add(" ".padStart(117, " "));
1555
2004
  arquivo.addLine();
1556
- sequencia++;
2005
+ arquivo.add("085");
2006
+ arquivo.add("9999");
2007
+ arquivo.add("9");
2008
+ arquivo.add(" ".padEnd(9, " "));
2009
+ arquivo.add("000001");
2010
+ arquivo.add((sequencia + 4).toString().padStart(6, "0"));
2011
+ arquivo.add("000000");
2012
+ arquivo.add(" ".padEnd(205, " "));
2013
+ return {
2014
+ download: remessa2,
2015
+ arquivo: arquivo.getArquivo()
2016
+ };
2017
+ } catch (error) {
2018
+ console.log(error);
2019
+ return null;
1557
2020
  }
1558
- arquivo.add("91748");
1559
- arquivo.add(dadosBancario.codigo_cedente);
1560
- arquivo.add(" ".padEnd(384, " "));
1561
- arquivo.add(String(sequencia).padStart(6, "0"));
1562
- arquivo.addLine();
1563
- return {
1564
- download: `${dadosBancario.codigo_cedente}${retornaMes(data)}${(0, import_date_fns6.format)(data, "dd")}.crm`,
1565
- arquivo: arquivo.getArquivo()
1566
- };
1567
- } catch (error) {
1568
- console.log(error);
1569
- return null;
1570
- }
1571
- }
1572
- function retornaMes(data) {
1573
- const mes = data.getMonth() + 1;
1574
- switch (mes) {
1575
- case 10:
1576
- return "O";
1577
- case 11:
1578
- return "N";
1579
- case 12:
1580
- return "D";
1581
- default:
1582
- return mes.toString();
1583
- }
2021
+ });
1584
2022
  }
1585
2023
 
1586
- // src/banks/sicredi/gerarRetorno.ts
1587
- var import_date_fns7 = require("date-fns");
2024
+ // src/banks/bradesco/gerarRetorno.ts
1588
2025
  function gerarRetorno3({ dados }) {
1589
2026
  try {
1590
2027
  const { arquivo } = dados;
1591
2028
  const documentos = [];
1592
- for (const linha of arquivo) {
1593
- const id_registro = linha.substring(0, 1);
1594
- if (id_registro !== "1" /* DETALHE */) {
1595
- continue;
1596
- }
1597
- const ocorrencia = linha.substring(108, 110);
1598
- if (ocorrencia !== "06" && ocorrencia !== "15" && ocorrencia !== "17") {
1599
- continue;
1600
- }
1601
- const meu_numero = linha.substring(116, 126).trim();
1602
- let tipo_documento = "";
1603
- let id_documento = "";
1604
- if (meu_numero.includes("-")) {
1605
- const [tipo, id] = meu_numero.split("-");
1606
- tipo_documento = tipo;
1607
- id_documento = id;
1608
- }
1609
- let especie = "INDEFINIDO";
1610
- if (tipo_documento.length) {
1611
- especie = tipo_documento === "N" ? "NFE" : tipo_documento === "F" ? "FAT" : tipo_documento === "L" ? "FIN" : "INDEFINIDO";
1612
- }
1613
- let dataCredito;
1614
- const dataCreditoString = linha.substring(328, 336);
1615
- if (dataCreditoString && dataCreditoString !== "00000000") {
1616
- dataCredito = (0, import_date_fns7.parse)(dataCreditoString, "yyyyMMdd", /* @__PURE__ */ new Date());
1617
- } else {
1618
- const dataOcorrenciaString = linha.substring(110, 116);
1619
- dataCredito = (0, import_date_fns7.parse)(dataOcorrenciaString, "ddMMyy", /* @__PURE__ */ new Date());
1620
- }
1621
- const valor_titulo = Number(linha.substring(152, 165)) / 100;
1622
- const abatimento = Number(linha.substring(227, 240)) / 100;
1623
- let valor_desconto = Number(linha.substring(240, 253)) / 100;
1624
- const valor_pago = Number(linha.substring(253, 266)) / 100;
1625
- let valor_juros = Number(linha.substring(266, 279)) / 100;
1626
- const valor_multa = Number(linha.substring(279, 292)) / 100;
1627
- if (valor_titulo > valor_pago && valor_desconto === 0) {
1628
- valor_desconto = valor_titulo - valor_pago;
1629
- }
1630
- if (valor_titulo < valor_pago && valor_juros === 0) {
1631
- valor_juros = valor_pago - valor_titulo;
2029
+ let index = 0;
2030
+ for (const item of arquivo) {
2031
+ let linha = item;
2032
+ const banco = linha.substring(0, 3);
2033
+ const codigoRetorno = linha.substring(15, 17);
2034
+ if ((banco === "001" || banco === "085") && (codigoRetorno === "06" || codigoRetorno === "17")) {
2035
+ let segmento = linha.substring(13, 14);
2036
+ if (segmento === "T") {
2037
+ let tipoDocumento = "";
2038
+ let idDocumento = "";
2039
+ const linhaDoc = linha.substring(105, 130).trimEnd();
2040
+ if (linhaDoc.includes("-")) {
2041
+ [tipoDocumento, idDocumento] = linha.split("-");
2042
+ } else {
2043
+ idDocumento = linhaDoc;
2044
+ }
2045
+ const especie = tipoDocumento.length ? tipoDocumento : "INDEFINIDO";
2046
+ linha = arquivo[index + 1];
2047
+ segmento = linha.substring(13, 14);
2048
+ if (segmento === "U") {
2049
+ const valorAbatimentoString = linha.substring(47, 62);
2050
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
2051
+ const valorDescontoString = linha.substring(32, 47);
2052
+ const valorDesconto = Number(valorDescontoString) / 100;
2053
+ const valorPagoString = linha.substring(77, 92);
2054
+ const valorPago = Number(valorPagoString) / 100;
2055
+ const valorJurosString = linha.substring(17, 32);
2056
+ const valorJuros = Number(valorJurosString) / 100;
2057
+ const valorMulta = 0;
2058
+ const descontos = valorAbatimento + valorDesconto;
2059
+ const valorTotal = valorPago - valorJuros + descontos;
2060
+ const documento = {
2061
+ id_documento: idDocumento,
2062
+ especie,
2063
+ valor: valorTotal,
2064
+ valor_desconto: 0,
2065
+ valor_juros: 0,
2066
+ valor_multa: 0,
2067
+ valor_total: 0,
2068
+ data: /* @__PURE__ */ new Date()
2069
+ };
2070
+ documentos.push(documento);
2071
+ }
2072
+ }
1632
2073
  }
1633
- const descontos = abatimento + valor_desconto;
1634
- const valor_total = valor_titulo + valor_multa + valor_juros - descontos;
1635
- documentos.push({
1636
- id_documento,
1637
- especie,
1638
- valor: valor_pago,
1639
- valor_multa,
1640
- valor_juros,
1641
- valor_desconto,
1642
- valor_total,
1643
- data: dataCredito
1644
- });
2074
+ index++;
1645
2075
  }
1646
- const documentosAgrupado = agruparRetorno(documentos);
1647
- return documentosAgrupado;
2076
+ const documentoAgrupado = agruparRetorno(documentos);
2077
+ return documentoAgrupado;
1648
2078
  } catch (error) {
1649
2079
  console.log(error);
1650
2080
  return null;
1651
2081
  }
1652
2082
  }
1653
2083
 
1654
- // src/banks/sicredi/index.ts
1655
- var sicredi = {
2084
+ // src/banks/bradesco/index.ts
2085
+ var bradesco = {
1656
2086
  gerarDadosBoleto: gerarDadosBoleto3,
1657
2087
  gerarPDF: gerarPDF3,
1658
2088
  gerarRemessa: gerarRemessa3,
@@ -1988,7 +2418,7 @@ function gerarRemessa4({ dados }) {
1988
2418
  }
1989
2419
 
1990
2420
  // src/banks/sicoob/gerarPDF.ts
1991
- var import_bwip_js4 = __toESM(require("bwip-js"));
2421
+ var import_bwip_js5 = __toESM(require("bwip-js"));
1992
2422
  var import_string_mask2 = __toESM(require("string-mask"));
1993
2423
  function gerarPDF4(_0) {
1994
2424
  return __async(this, arguments, function* ({ dados }) {
@@ -1997,7 +2427,7 @@ function gerarPDF4(_0) {
1997
2427
  if (!dadosPDF.pagador.cpfcnpj) {
1998
2428
  throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
1999
2429
  }
2000
- const codigoBarra2 = yield import_bwip_js4.default.toBuffer({
2430
+ const codigoBarra2 = yield import_bwip_js5.default.toBuffer({
2001
2431
  bcid: "interleaved2of5",
2002
2432
  text: dadosPDF.boleto.codigoBarra,
2003
2433
  height: 20
@@ -2119,53 +2549,61 @@ function gerarRetorno4({ dados }) {
2119
2549
  continue;
2120
2550
  }
2121
2551
  const ocorrencia = linha.substring(15, 17);
2122
- if (ocorrencia !== "06" && ocorrencia !== "17") {
2123
- continue;
2124
- }
2125
- let segmento = linha.substring(13, 14);
2126
- if (segmento === "T") {
2127
- const meu_numero = linha.substring(105, 130).trimEnd();
2128
- let tipo_documento = "INDEFINIDO";
2129
- let id_documento = meu_numero;
2130
- if (meu_numero.includes("-")) {
2131
- const [tipo, id] = meu_numero.split("-");
2132
- tipo_documento = tipo;
2133
- id_documento = id;
2134
- }
2135
- const especie = tipo_documento.length ? tipo_documento : "INDEFINIDO";
2136
- linha = arquivo[++i];
2137
- segmento = linha.substring(13, 14);
2138
- if (segmento === "U") {
2139
- let dataCredito;
2140
- const dataCreditoString = linha.substring(145, 153);
2141
- if (dataCreditoString && dataCreditoString !== "00000000") {
2142
- dataCredito = (0, import_date_fns9.parse)(dataCreditoString, "ddMMyyyy", /* @__PURE__ */ new Date());
2143
- } else {
2144
- const dataOcorrenciaString = linha.substring(137, 145);
2145
- dataCredito = (0, import_date_fns9.parse)(dataOcorrenciaString, "ddMMyyyy", /* @__PURE__ */ new Date());
2552
+ if (ocorrencia === "06" || ocorrencia === "17" || ocorrencia === "03") {
2553
+ let segmento = linha.substring(13, 14);
2554
+ if (segmento === "T") {
2555
+ const motivo = linha.substring(213, 223).trim();
2556
+ const meu_numero = linha.substring(105, 130).trimEnd();
2557
+ let tipo_documento = "INDEFINIDO";
2558
+ let id_documento = meu_numero;
2559
+ if (meu_numero.includes("-")) {
2560
+ const [tipo, id] = meu_numero.split("-");
2561
+ tipo_documento = tipo;
2562
+ id_documento = id;
2563
+ }
2564
+ const especie = tipo_documento.length ? tipo_documento : "INDEFINIDO";
2565
+ linha = arquivo[++i];
2566
+ segmento = linha.substring(13, 14);
2567
+ if (segmento === "U") {
2568
+ let dataCredito;
2569
+ const dataCreditoString = linha.substring(145, 153);
2570
+ if (dataCreditoString && dataCreditoString !== "00000000") {
2571
+ dataCredito = (0, import_date_fns9.parse)(dataCreditoString, "ddMMyyyy", /* @__PURE__ */ new Date());
2572
+ } else {
2573
+ const dataOcorrenciaString = linha.substring(137, 145);
2574
+ dataCredito = (0, import_date_fns9.parse)(dataOcorrenciaString, "ddMMyyyy", /* @__PURE__ */ new Date());
2575
+ }
2576
+ const valorAbatimentoString = linha.substring(47, 62);
2577
+ const valorAbatimento = Number(valorAbatimentoString) / 100;
2578
+ const valorDescontoString = linha.substring(32, 47);
2579
+ const valorDesconto = Number(valorDescontoString) / 100;
2580
+ const valorPagoString = linha.substring(77, 92);
2581
+ const valorPago = Number(valorPagoString) / 100;
2582
+ const valorJurosString = linha.substring(17, 32);
2583
+ const valorJuros = Number(valorJurosString) / 100;
2584
+ const valorMulta = 0;
2585
+ const descontos = valorAbatimento + valorDesconto;
2586
+ const valorTotal = valorPago - valorJuros + descontos;
2587
+ let rejeitado = false;
2588
+ let motivoRejeicao = "";
2589
+ if (ocorrencia === "03") {
2590
+ rejeitado = true;
2591
+ motivoRejeicao = retornaMotivoRejeicao3(motivo);
2592
+ }
2593
+ const documento = {
2594
+ id_documento,
2595
+ especie,
2596
+ valor: valorPago,
2597
+ valor_multa: valorMulta,
2598
+ valor_juros: valorJuros,
2599
+ valor_desconto: valorDesconto,
2600
+ valor_total: valorTotal,
2601
+ data: dataCredito,
2602
+ rejeitado,
2603
+ motivo: motivoRejeicao
2604
+ };
2605
+ documentos.push(documento);
2146
2606
  }
2147
- const valorAbatimentoString = linha.substring(47, 62);
2148
- const valorAbatimento = Number(valorAbatimentoString) / 100;
2149
- const valorDescontoString = linha.substring(32, 47);
2150
- const valorDesconto = Number(valorDescontoString) / 100;
2151
- const valorPagoString = linha.substring(77, 92);
2152
- const valorPago = Number(valorPagoString) / 100;
2153
- const valorJurosString = linha.substring(17, 32);
2154
- const valorJuros = Number(valorJurosString) / 100;
2155
- const valorMulta = 0;
2156
- const descontos = valorAbatimento + valorDesconto;
2157
- const valorTotal = valorPago - valorJuros + descontos;
2158
- const documento = {
2159
- id_documento,
2160
- especie,
2161
- valor: valorPago,
2162
- valor_multa: valorMulta,
2163
- valor_juros: valorJuros,
2164
- valor_desconto: valorDesconto,
2165
- valor_total: valorTotal,
2166
- data: dataCredito
2167
- };
2168
- documentos.push(documento);
2169
2607
  }
2170
2608
  }
2171
2609
  }
@@ -2176,6 +2614,42 @@ function gerarRetorno4({ dados }) {
2176
2614
  return null;
2177
2615
  }
2178
2616
  }
2617
+ function retornaMotivoRejeicao3(codigo) {
2618
+ switch (codigo) {
2619
+ case "03":
2620
+ return "Tarifa de Desist\xEAncia";
2621
+ case "04":
2622
+ return "Tarifa de Protesto";
2623
+ case "08":
2624
+ return "Custas de Protesto";
2625
+ case "11":
2626
+ return "Forma de Cadastramento do T\xEDtulo Inv\xE1lido";
2627
+ case "21":
2628
+ return "Tarifa de Grava\xE7\xE3o Eletr\xF4nica = CRA";
2629
+ case "28":
2630
+ return "C\xF3digo do Desconto Inv\xE1lido";
2631
+ case "29":
2632
+ return "Valor do Desconto Maior ou Igual ao Valor do T\xEDtulo";
2633
+ case "30":
2634
+ return "Desconto a Conceder N\xE3o Confere";
2635
+ case "31":
2636
+ return "Concess\xE3o de Desconto - J\xE1 Existe Desconto Anterior";
2637
+ case "39":
2638
+ return "Pedido de Protesto/Negativa\xE7\xE3o N\xE3o Permitido para o T\xEDtulo";
2639
+ case "40":
2640
+ return "T\xEDtulo com Ordem de Protesto/Negativa\xE7\xE3o Emitida";
2641
+ case "41":
2642
+ return "Pedido de Cancelamento/Susta\xE7\xE3o para T\xEDtulos sem Instru\xE7\xE3o de Negativa\xE7\xE3o/Protesto";
2643
+ case "58":
2644
+ return "Data da Multa Inv\xE1lida";
2645
+ case "79":
2646
+ return "Data Juros de Mora Inv\xE1lido";
2647
+ case "80":
2648
+ return "Data do Desconto Inv\xE1lida";
2649
+ default:
2650
+ return "Motivo de rejei\xE7\xE3o n\xE3o identificado";
2651
+ }
2652
+ }
2179
2653
 
2180
2654
  // src/banks/sicoob/index.ts
2181
2655
  var sicoob = {
@@ -2319,7 +2793,7 @@ function getDigito5(texto) {
2319
2793
  }
2320
2794
 
2321
2795
  // src/banks/banco-brasil/gerarPDF.ts
2322
- var import_bwip_js5 = __toESM(require("bwip-js"));
2796
+ var import_bwip_js6 = __toESM(require("bwip-js"));
2323
2797
  function gerarPDF5(_0) {
2324
2798
  return __async(this, arguments, function* ({ dados }) {
2325
2799
  try {
@@ -2327,7 +2801,7 @@ function gerarPDF5(_0) {
2327
2801
  if (!dadosPDF.pagador.cpfcnpj) {
2328
2802
  throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
2329
2803
  }
2330
- const codigoBarra2 = yield import_bwip_js5.default.toBuffer({
2804
+ const codigoBarra2 = yield import_bwip_js6.default.toBuffer({
2331
2805
  bcid: "interleaved2of5",
2332
2806
  text: dadosPDF.boleto.codigoBarra,
2333
2807
  height: 20
@@ -2745,7 +3219,7 @@ function gerarRetorno5({ dados }) {
2745
3219
  let motivoRejeicao = "";
2746
3220
  if (ocorrencia === "03") {
2747
3221
  rejeitado = true;
2748
- motivoRejeicao = retornaMotivoRejeicao(motivo);
3222
+ motivoRejeicao = retornaMotivoRejeicao4(motivo);
2749
3223
  }
2750
3224
  const documento = {
2751
3225
  id_documento,
@@ -2772,7 +3246,7 @@ function gerarRetorno5({ dados }) {
2772
3246
  return null;
2773
3247
  }
2774
3248
  }
2775
- function retornaMotivoRejeicao(codigo) {
3249
+ function retornaMotivoRejeicao4(codigo) {
2776
3250
  switch (codigo) {
2777
3251
  case "01":
2778
3252
  return "C\xF3digo do Banco Inv\xE1lido";
@@ -3033,7 +3507,7 @@ function gerar({ banco, dados }) {
3033
3507
  }
3034
3508
 
3035
3509
  // src/banks/itau/gerarPDF.ts
3036
- var import_bwip_js6 = __toESM(require("bwip-js"));
3510
+ var import_bwip_js7 = __toESM(require("bwip-js"));
3037
3511
  function gerarPDF6(_0) {
3038
3512
  return __async(this, arguments, function* ({ dados }) {
3039
3513
  try {
@@ -3041,7 +3515,7 @@ function gerarPDF6(_0) {
3041
3515
  if (!dadosPDF.pagador.cnpjCpf) {
3042
3516
  throw new Error("CPF/CNPJ do pagador na\u0303o informado!");
3043
3517
  }
3044
- const codigoBarra2 = yield import_bwip_js6.default.toBuffer({
3518
+ const codigoBarra2 = yield import_bwip_js7.default.toBuffer({
3045
3519
  bcid: "interleaved2of5",
3046
3520
  text: dadosPDF.boleto.codigoBarra,
3047
3521
  height: 20
@@ -3213,7 +3687,8 @@ var src_default = {
3213
3687
  gerar,
3214
3688
  pdf,
3215
3689
  remessa,
3216
- retorno
3690
+ retorno,
3691
+ carne
3217
3692
  };
3218
3693
  // Annotate the CommonJS export names for ESM import in node:
3219
3694
  0 && (module.exports = {