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